首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSch执行命令

使用JSch执行命令
EN

Stack Overflow用户
提问于 2017-02-13 01:54:43
回答 1查看 3.4K关注 0票数 2

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

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

在我的java代码登录到远程Pi之后,我希望它发送以下内容

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 07:20:17

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

使用"exec“通道,请参阅 example

代码语言:javascript
复制
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
channel.connect();
...

有关完整的代码,请参见How to read JSch command output? --它展示了如何同时正确读取标准输出和错误输出,以允许命令完成和收集所有输出,包括错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42195535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档