将Guardian文件上传到Tandem / Compaq / HPE NonStop服务器

时间:2019-04-26 15:49:53

标签: java sftp jsch openssh hp-nonstop

我正在使用OpenSSH。从独立Java程序调用时,bat文件下面的代码可以正确传输文件。

@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

但是当从部署在weblogic服务器上的war内部的类文件中调用bat文件时。失败并显示以下错误:
无法创建目录'%systemroot%\ system32 \ config \ systemprofile / .ssh'。 percent_expand:未知密钥%s 连接已关闭

从Windows复制的.ssh文件夹>用户>管理员到D:\ path,还向用户:所有人提供了完全控制权,但是没有运气。

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>

最后,我移到了bat文件中以下命令所使用的WinSCP:

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 KB | 2618.9 KB /秒|二进制| 100% 转移成功完成, 但是临时传输文件'OUT4567,0,500,500,800.filepart'无法重命名为目标文件名'OUT4567,0,500,500,800'。

2 个答案:

答案 0 :(得分:0)

这些其他参数实际上应该是come as a part of the destination file name (贷记到@ dave_thompson_085)

因此,无论您最终使用什么SFTP客户端(JSch,psftp,WinSCP),都使用目标文件名,例如:

protected $dispatchesEvents = [
    'created' => event(new EvaluationRequestForZ0UQ0(User $param1, Job $param2))
];

对于WinSCP,您将需要使用-resumesupport=off switch来避免使用transfer via a temporary file name。否则,WinSCP会因为不认为它是实际文件名而感到困惑,而实际上却不是。

MANCAF OUT4567,0,500,500,800

答案 1 :(得分:-1)

我的猜测是,它试图在HOME/.ssh/known_hosts中创建一个新条目,而您的bat文件继承了weblogic服务器的凭据,这就是为什么它试图在{下创建一个.ssh目录{1}}。

通过在sftp命令行中添加%systemroot%\system32\config\systemprofile来抑制这种情况。