JSch多个命令问题?

时间:2015-11-02 01:48:38

标签: java 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的情况下测试它们,但由于某种原因,我没有得到我在上面的代码中所期望的结果。

1 个答案:

答案 0 :(得分:0)

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

这些不等同于" line",您在SSH终端上输入。

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

解决方案是:

  • 将命令传递给deluge-console,如:

    (echo connect ... ; echo add ...) | deluge-console ...
    
  • 使用标准输入(deluge-console

    将命令提供给已启动的channel1.getOutputStream

    参见Sudo.java JSch示例。

相关问题