jsch 执行linux ping 命令,java - 使用JSch setCommand执行时带源选项的Shell ping命令失败 - 堆栈内存溢出...

作者在使用JSch执行ping命令时遇到问题,尝试设置源IP但'pingsource'选项导致'未知主机'错误。尽管直接ping命令有效。文章探讨了如何解决从特定源IP执行ping的问题,并对比了不同ping命令的执行差异。
摘要由CSDN通过智能技术生成

我正在测试短ping测试程序。 如果我将简单的ping命令"ping yyyy -c 5 -s 500 "到setCommand()函数中,它将按设计工作。 但是,如果我添加其他ping选项, "ping source xxxx host yyyy -c 5 -s 500" ,我得到了

ping:未知主机源

回信。 如果我从x终端手动执行两个命令,则两个命令都能正常工作。

我需要使程序从不同的源接口IP执行ping操作。 使用JSch setCommand两个命令之间有什么区别?

ping yyyy -c 5 -s 500 (工作)

ping source xxxx host yyyy -c 5 -s 500 (不起作用)

码:

public static void main(String[] arg){

try{

JSch jsch=new JSch();

String host=null;

if(arg.length>0){

host=arg[0];

}

else{

host=JOptionPane.showInputDialog("Enter username@hostname",

System.getProperty("user.name")+

"@localhost");

}

String user=host.substring(0, host.indexOf('@'));

host=host.substring(host.indexOf('@')+1);

Session session=jsch.getSession(user, host, 22);

UserInfo ui=new MyUserInfo();

session.setUserInfo(ui);

session.connect();

// this command works

// String command = "ping 20.5.1.15 -c " + count + " -s " + size;

// this command not working

String command = "ping source 20.5.1.10 host 20.5.1.15 -c " + count + " -s

" + size;

Channel channel=session.openChannel("exec");

((ChannelExec)channel).setCommand(command);

channel.setInputStream(null);

((ChannelExec)channel).setErrStream(System.err);

InputStream in=channel.getInputStream();

channel.connect();

byte[] tmp=new byte[1024];

while(true){

while(in.available()>0){

int i=in.read(tmp, 0, 1024);

if(i<0)break;

System.out.print(new String(tmp, 0, i));

}

if(channel.isClosed()){

if(in.available()>0) continue;

System.out.println("exit-status: "+channel.getExitStatus());

break;

}

try{Thread.sleep(1000);}catch(Exception ee){}

}

channel.disconnect();

session.disconnect();

}

catch(Exception e){

System.out.println(e);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值