我正在编写一个python脚本,以便在远程计算机上进行操作。实际上,python脚本运行在我的计算机上,而远程计算机是一个运行ubuntu的机器人。
我发出的命令启动机器人软件,不退出(除非您用^c杀死它)。我希望发出命令,能够显示下20秒的输出(或直到它变得“安静”),然后让我的脚本真正完成。
我尝试了subprocess.run (和变体)和ssh选项的组合,并以一个符号结束命令。都不管用。
下面是我到目前为止所得到的信息(您可以看到一些实验性的备选方案被注释掉并加入)。我在ssh尝试过的所有东西(等待子进程完成(它不会完成),或者只是运行,我甚至没有看到ssh密码的提示。
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")发布于 2022-01-02 19:38:41
我可以协助Linux/Unix的建议,在python方面比较弱。
假设您有一个没完没了的长时间运行命令:
让我们说ping $HOSTNAME
在远程计算机上运行ping $HOSTNAME
ssh user@remoteMachine 'ping $HOSTNAME'ping $HOSTNAME: timeout 15 ssh user@remoteMachine 'ping $HOSTNAME'在测试您的脚本是否正常运行并尊重timeout命令之后,情况会发生变化。
python脚本了。
使用参数和参数创建python脚本,以发送上述命令。
注意下面的引语:'与"有不同的行为(尝试一下)。
https://unix.stackexchange.com/questions/684627
复制相似问题