1.本地scp命令正常
[root@hadron ~]
# scp /root/scripts/* 192.168.1.157:/opt
Step1
.sh 100%
340 0.3KB/s
00:
00
Step2
.sh 100%
12 0.0KB/s
00:
00
Step3
.sh
2 Java源码
package util;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class LocalCommand {
public static final String
getIP(){
try {
InetAddress ia = InetAddress.getLocalHost();
return ia.getHostAddress();
}
catch (UnknownHostException e1) {
e1.printStackTrace();
return null;
}
}
public static final String
exe(String cmd){
StringBuffer sb=
null;
Process process=
null;
LineNumberReader reader=
null;
try {
sb =
new StringBuffer();
process=Runtime.getRuntime().exec(cmd);
reader =
new LineNumberReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) !=
null){
sb.append(line+
"\n");
}
return sb.toString();
}
catch (IOException e) {
e.printStackTrace();
return null;
}
finally {
try {
reader.close();
}
catch (IOException e) {
e.printStackTrace();
}
process.destroy();
}
}
}
测试类
package test;
import util.LocalCommand;
public class TestLocal {
public void test(){
String rs;
rs=LocalCommand.exe(
"scp /root/* 192.168.1.157:/opt/");
System.
out.println(rs);
}
public static void main(String[] args) {
new TestLocal().test();
}
}
执行之后,远程节点没有找到复制scripts内容。
3.解决办法
把scp命令中的*号去掉。
public void test(){
String rs;
rs=LocalCommand.exe(
"scp -r /root/scripts/ 192.168.1.157:/opt/");
System.
out.println(rs);
}
到远程节点可以找到复制的文件
[root
@node]
:/opt/scripts
Step1.sh
Step2.sh
Step3.sh
转载请注明原文地址: https://ju.6miu.com/read-665859.html