使用JSch执行命令

2024-06-16 11:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

修改外壳.java示例包括在JSch包中,我成功地安装了JSch,连接到了我的Pi,甚至注释掉了user/domain/password/host key检查提示框,以便直接将这些值存储在Java代码中。在

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

sudo nohup python2 myFoo.py & disown

到终点站。在

在外壳.java我正在修改的示例,我看到一行行代码将channel对象的输入和输出流重定向到System.in和{},但我只想简单地将上面的代码行注入远程终端并断开连接。在

为什么/我的目标:
我有一个小小的网络,里面有很多圆周率在运行一个脚本。 我想消除停机时间,但代码有时在连续循环3-4天后停止工作(有时长达一周,代码就会出现错误并停止运行)。
在每个节点上运行的脚本将使用“last check in”字段更新mySQL数据库。
我希望用Java编写一个小的后台程序,它将在我的服务器上无限期运行,时不时地检查每个站点的“最后一次签入”,如果它发现一个节点宕机,远程ssh到它,sudo reboot now,等待大约60-100秒,然后sudo nohup python2 myFoo.py & disown


Tags: 代码py脚本示例远程pisudojava
1条回答
网友
1楼 · 发布于 2024-06-16 11:13:53

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

使用“exec”通道,请参见^{} example。在

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

相关问题 更多 >