自动退出SSH会话而不退出python中的脚本

时间:2017-11-02 12:49:16

标签: python unix ssh redhat

我有一个任务,我必须通过SSH连接到不同的unix服务器来运行一些命令,并在一个文件中获取每个服务器的输出。该脚本在python 2中如下 -

1900-01-01

问题是,当我从服务器 myserver 上的命令行运行脚本时,它会ssh到 server1 并保持不变,直到我在命令行上手动运行exit。然后它转到 server2 ,它仍然在那里,我必须运行退出。这个过程一直持续到我回到 myserver 。 除非我运行最终退出,否则文件未完成。因此,我尝试使用子进程模块将“exit”作为命令(以使整个过程自动化),如下所示

import subprocess
server_list = ['server1', 'server2', 'server3']
for srv in server_list:
    subprocess.call(['ssh', srv])
    # DO PROCESS

当我运行它时,它会ssh到'server1',再次它不会返回 myserver 。当我运行退出时,我收到错误 -

import subprocess
server_list = ['server1', 'server2', 'server3']
for srv in server_list:
    subprocess.call(['ssh', srv])
    # DO PROCESS
    subprocess.call(['exit'])

执行停止。

如何使此脚本生效?我希望自动完成整个过程 - ssh到服务器,运行命令然后在执行整个脚本后退出并返回 myserver

我也搜索了这个,但似乎没有链接提供答案。

0 个答案:

没有答案