使用JSch

时间:2017-02-13 01:54:44

标签: java python ssh raspbian jsch

我使用JSch自动从后台Java进程远程启动python脚本。

修改JSch包中包含的Shell.java示例,我已经成功安装了JSch,连接到我的Pi,甚至注释掉了用户/域/密码/主机密钥检查提示框,有利于存储这些值直接在我的Java代码中。

我的java代码登录到远程Pi后,我希望发送类似

的内容
sudo nohup python2 myFoo.py & disown

到终端。

在我正在修改的Shell.java示例中,我看到代码行将通道对象的输入和输出流重定向到System.inSystem.out但是我喜欢只需手动将上面的线路注入远程终端并断开连接。

为什么/我的目标:
我有一个Pi的小型网状网络,在一天中的大部分时间都运行脚本。 我希望消除停机时间,但代码有时会在循环播放3-4天后停止工作(有时只要在代码错误和停止之前一周就会停止)。
在每个节点上运行的脚本使用"最后一次检入"更新mySQL数据库。场。
我希望用Java写一个小的后台程序,它将在我的服务器上无限期运行,检查"最后一次检查"每隔一段时间对于每个站点,如果它注意到一个节点发生故障,远程ssh进入它并sudo reboot now,等待大约60-100秒,然后sudo nohup python2 myFoo.py & disown

1 个答案:

答案 0 :(得分:2)

你选错了一个例子。 " shell" channel用于实现交互式shell会话,而不是用于自动执行命令。

使用" exec"频道,请参阅Exec.java example

Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
channel.connect();
...