我有这个:
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 :(得分: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示例。