【问题标题】:java jsch -executing multiple unix commandsjava jsch - 执行多个unix命令
【发布时间】:2014-02-11 12:41:04
【问题描述】:

Channel channel=session.openChannel("exec"); ((ChannelExec)channel).setCommand("cd ../ && pwd && ls"); channel.connect(); channel.run();

如果我的命令来自命令行参数或者它们存储在 cmd1 、cmd2 等变量中,我该如何使用上面的代码 我试过了

((ChannelExec)channel).setCommand("cmd1 && cmd2 && cmd3");

变量替换没有发生。请帮我解决这个问题

谢谢, 普拉桑特

【问题讨论】:

    标签: jsch


    【解决方案1】:

    需要在String 本身之外指定变量,而不是作为String 的一部分

    ((ChannelExec)channel).setCommand(cmd1 + " && " + cmd2 " + " && " + cmd3);
    

    【讨论】:

    • 好的,上面的语法工作正常。但是,如果我在 sudo 模式下执行一些命令,我​​会遇到问题:我使用的语法是 ((ChannelExec) channel).setCommand(sudoformat+Cmd); 其中 sudoformat 是 sudo -S -u 'ims' -H -i
    • 什么问题?看来您需要在这两个命令之间留一个空格sudoformat + " " + Cmd
    • 我正在尝试这个((ChannelExec) channel).setCommand(sudoformat+Cmd2+"&&"+Cmd2+"&&"+Cmd3); where sudoformat="sudo -S -u' '" and Cmd2="cd /home/xxx/xxx/" and Cmd="pwd" 。错误是 sudo : "cd: command not found".cd 对 sudo 不起作用。除了 cd 之外,其他命令都在工作,但 Cmd2 和 Cmd3 没有在 sudo 模式下执行。
    • 请任何人帮助我的上述查询
    猜你喜欢
    • 2017-03-02
    • 2011-08-15
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多