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

标签 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

但是当bat文件从部署在weblogic服务器上的war中的类文件被调用时。它失败并出现以下错误:
无法创建目录“%systemroot%\system32\config\systemprofile/.ssh”。 percent_expand:未知 key %s 连接关闭

将 .ssh 文件夹从 windows>User>Administrator 复制到 D:\path,也为 User:everyone 提供了完全控制权,但没有成功。

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 session
文件已成功传输,但日志中记录了以下错误消息:

曼卡夫 | 217589 KB | 2618.9 KB/秒 |二进制 | 100% 转账成功, 但临时传输文件“OUT4567,0,500,500,800.filepart”无法重命名为目标文件名“OUT4567,0,500,500,800”。

最佳答案

那些额外的参数实际上应该 come as a part of the destination file name (致谢@dave_thompson_085)

所以无论您最终使用什么 SFTP 客户端(JSch、psftp、WinSCP),都使用如下目标文件名:

MANCAF OUT4567,0,500,500,800

使用 WinSCP,您将需要使用 -resumesupport=off switch 来避免 transfer via a temporary file name 。否则 WinSCP 会因为它认为是实际文件名的不存在而感到困惑,而事实并非如此。

put -resumesupport=off MANCAF OUT4567,0,500,500,800

关于java - 将 Guardian 文件上传到 Tandem/Compaq/HPE NonStop 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55871055/

相关文章:

java - 使用jsch进行远程端口转发?

apache-camel - Camel SFTP连接jcraft jsch异常

java - 如何使用 netbeans 插件/api 修复导入

java - 如何从动态创建的 editText 框中获取值并将输入的值保存到二维数组中

java - 生产者-消费者场景。我有一个生产者和多个消费者

java - JTabbedPane 内的 JPanel 内的 JScrollPane 不滚动

python - 如何使用Python将特定格式的文件从sftp复制到本地

python - paramiko sftp 无法删除远程文件夹,ioerror

php - SCP 与 PHP - 不起作用

java - 无法使用 JSch 和 JDK 8 打开 ssh session