这是我的代码从本地文件复制到远程机器使用scp命令Java运行EXEC
try {
Process cpyFileLocal = Runtime.getRuntime().exec("scp " + rFile+"*.csv" + " [email protected]" + host + ":" + lFile);
InputStream stderr = cpyFileLocal.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println("</ERROR>");
int exitVal = cpyFileLocal.waitFor();
System.out.println("Process exitValue: " + exitVal);
System.out.println("...." + cpyFileLocal.exitValue());
System.out.println("SCP COMMAND "+"scp "+rFile+"*.csv" +" [email protected]"+host+":"+lFile);
System.out.println("Sending complete...");
} catch (Exception ex) {
ex.printStackTrace();
}
输出的一部分...
<ERROR>
/opt/jrms/rmsweb/transfer/cn00/outgoing/*.csv: No such file or directory
</ERROR>
Process exitValue: 1
....1
SCP COMMAND scp /opt/jrms/rmsweb/transfer/cn00/outgoing/*.csv [email protected]:/opt/jrms/transfer/incoming/
但是当我运行在本地机器上的终端命令,它工作正常 当我运行LL的文件是有
-rwxr-XR-X 1房地美房地美140四月22 09:13 gc00cn00150420092629.csv *
-rwxr-XR-X 1房地美房地美105 04月22日09:13 gc00cn00150420122656.csv *
任何帮助,请
奇怪的是使用相同的命令,将文件从远程复制到本地计算机* .csv可以正常工作,但是,使用* .csv从本地到远程,即发生问题时。蚂蚁想法?谢谢 –
这是因为scp会在远程服务器(可能是bash)解释该命令,并且文件列表将在该主机上展开,而不是在本地展开。但是当你尝试本地到远程文件交换时,没有bash来扩展它。 – Mehraban
感谢您的及时回复,请试一试。 –