2015-11-02 137 views
0

我有这样的:JSch多个命令问题?

ChannelExec channel1 = (ChannelExec) session.openChannel("exec"); 
String command1 = "/opt/deluge/latest/bin/deluge-console -c ./.config/deluge"; 
String commandCon = "connect 127.0.0.1:2035"; 
String location = channelSftp.getHome(); 
String command2 = "add " + location + "/torrent1.torrent"; 
channel1.setCommand(command1 + "\n" + commandCon + "\n" + command2); 
channel1.connect(); 

但不加入我试图添加的文件。

完整的命令我需要的是

/opt/deluge/latest/bin/deluge-console -c ./.config/deluge 

然后,一旦我们开始deluge-console,它

connect 127.0.0.1:2035 

连接到后台程序,然后

add /home/hd1/testuser/torrent1.torrent 

我知道我的命令是正确的,因为我可以测试它们没有使用Java,但由于某种原因,我没有得到我在上面的代码中所期望的结果。

回答

0

指定使用.setCommand的命令是由shell执行的命令。

这些都是不等同于“行”,你SSH终端上输入。

因此connect命令将在deluge-console退出后执行,但从未发生过,因为deluge-console等待其标准输入上的命令。


解是:

  • 管命令到deluge-console等:

    (echo connect ... ; echo add ...) | deluge-console ... 
    
  • 使用标准输入订阅命令到开始deluge-consolechannel1.getOutputStream

    Sudo.java JSc h例子。