Загрузка файла Guardian на сервер Tandem / Compaq / HPE NonStop - PullRequest
2 голосов
/ 26 апреля 2019

Я использую OpenSSH.Ниже код файла bat при вызове из автономной программы Java передает файлы должным образом.

@echo off
del "D:\path\inctf2.txt" /s /f /q
set par1=%1
set par2=%2
set par3=%3
set par4=%4

>>D:\path\inctf2.txt echo lcd %par2%
>>D:\path\inctf2.txt echo cd %par1%
>>D:\path\inctf2.txt echo put %par3% %par4%
>>D:\path\inctf2.txt echo quit 

C:
cd C:\Program Files\OpenSSH-Win64

sftp.exe -b D:\path\inctf2.txt userName@IP >> D:\path\%par3%%para4%.log 2>&1

goto END
:END

Но когда файл bat вызывается из файла класса в war, развернутого на сервере weblogic.Сбой с ошибкой ниже:
Не удалось создать каталог "% systemroot% \ system32 \ config \ systemprofile / .ssh".процент_экспанд: неизвестный ключ% s Соединение закрыто

Скопирована папка .ssh из windows> Пользователь> Администратор в D: \ путь, предоставил полный контроль также Пользователю: всем, но не повезло.

Java-код:

processBuilder.command("cmd", "/c", "transfer.bat",cdRemoteDir, localDir_For_fileName, 
fileName, remoteFileName );

Process process = processBuilder.start();

int exitVal = process.waitFor();

Опробован ниже код также с тем же результатом:

Runtime.getRuntime().exec(

При выполнении из командной строки:

C:\Program Files\OpenSSH-Win64>user_name@ip_address
Connected to ip_address.
sftp> cd $DVL2.CAFINP
sftp> lcd F:\local_file_path
sftp> put OC130319.001 OC130301 0,500,500,800
Uploading OC130319.001 to /G/DVL2/CAFINP/OC130301
OC130319.001
sftp> ls -lrt OC130301
-*********    0 4294952959 199         16718 Apr 30 10:45 OC130301
sftp>

Наконец, я перешел на WinSCP, используя приведенные ниже команды в файле bat:

C:
cd C:\WinSCP5.13.7
winscp.com /script=script.txt >>D:\path\logs\alpha.txt

open sftp_ppk_auth
cd $DVL2.CAFINP
lcd F:\local_path\
put MANCAF OUT4567,0,500,500,800
exit

sftp_ppk_auth сохранен в сеансе WinSCP
Файл был успешно передан, но в журнал было записано следующее сообщение об ошибке:

MANCAF |217589 КБ |2618,9 КБ / с |двоичный |100% перенос успешно завершен, , но временный файл передачи 'OUT4567,0,500,500,800.filepart' не может быть переименован в целевое имя файла 'OUT4567,0,500,500,800'.

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Эти дополнительные параметры на самом деле должны быть частью имени файла назначения (кредит переходит на @ dave_thompson_085) .

Так что неважно, какой клиент SFTPв конечном итоге вы используете (JSch, psftp, WinSCP), используете имя целевого файла, например:

MANCAF OUT4567,0,500,500,800

С WinSCP вам нужно будет использовать -resumesupport=off switch дляизбегать передачи через временное имя файла .В противном случае WinSCP будет сбит с толку отсутствием того, что он считает действительным именем файла, в то время как это не так.

put -resumesupport=off MANCAF OUT4567,0,500,500,800
0 голосов
/ 26 апреля 2019

Я предполагаю, что он пытается создать новую запись в HOME/.ssh/known_hosts, и ваш bat-файл наследует учетные данные сервера weblogic, поэтому он пытается создать каталог .ssh в %systemroot%\system32\config\systemprofile.

Попробуйте подавить это, добавив -o CheckHostIP=no в командную строку sftp.

...