Runtime.getRuntime().exec执行scp失败

来源:互联网 发布:淘宝网充值 编辑:程序博客网 时间:2024/05/21 02:22

1.本地scp命令正常

[root@hadron ~]# scp  /root/scripts/* 192.168.1.157:/optStep1.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) {        // TODO Auto-generated method stub        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# lsStep1.sh  Step2.sh  Step3.sh
0 0
原创粉丝点击