首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于长期运行程序的ssh

问用于长期运行程序的ssh
EN

Unix & Linux用户
提问于 2022-01-01 13:57:50
回答 1查看 284关注 0票数 0

我正在编写一个python脚本,以便在远程计算机上进行操作。实际上,python脚本运行在我的计算机上,而远程计算机是一个运行ubuntu的机器人。

我发出的命令启动机器人软件,不退出(除非您用^c杀死它)。我希望发出命令,能够显示下20秒的输出(或直到它变得“安静”),然后让我的脚本真正完成。

我尝试了subprocess.run (和变体)和ssh选项的组合,并以一个符号结束命令。都不管用。

下面是我到目前为止所得到的信息(您可以看到一些实验性的备选方案被注释掉并加入)。我在ssh尝试过的所有东西(等待子进程完成(它不会完成),或者只是运行,我甚至没有看到ssh密码的提示。

代码语言:javascript
复制
def ssh(self, command_line):
        ssh_cmd = ["ssh", "pi@" + self.cfg["BRU_MASTER_IP"], command_line]
        print(ssh_cmd)
        print("1")
        #cmd1 = subprocess.Popen(" ".join(ssh_cmd), shell=True, stdout=subprocess.PIPE)
        completed_process = subprocess.run(" ".join(ssh_cmd), shell=True, capture_output=True, text=True)
        #completed_process = subprocess.Popen(" ".join(ssh_cmd), shell=True, stdout=subprocess.PIPE)
        print("2")
        #completed_process.communicate()
        print("2a")
        #cmd1_out = completed_process.stdout.read()
        print(completed_process.stdout.read())
        print("3")
EN

回答 1

Unix & Linux用户

发布于 2022-01-02 19:38:41

我可以协助Linux/Unix的建议,在python方面比较弱。

假设您有一个没完没了的长时间运行命令:

让我们说ping $HOSTNAME

和您希望使用ssh:

在远程计算机上运行ping $HOSTNAME

代码语言:javascript
复制
 ssh user@remoteMachine 'ping $HOSTNAME'

,但您希望在15秒之后在远程计算机上超时ping $HOSTNAME:

代码语言:javascript
复制
 timeout 15 ssh user@remoteMachine 'ping $HOSTNAME'

在测试您的脚本是否正常运行并尊重timeout命令之后,情况会发生变化。

终于准备好了您的Linux命令,并且您已经准备好使用python脚本

了。

使用参数和参数创建python脚本,以发送上述命令。

注意下面的引语:'与"有不同的行为(尝试一下)。

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

https://unix.stackexchange.com/questions/684627

复制
相关文章

相似问题

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