【问题标题】:Python subprocess execute on remote machines?Python子进程在远程机器上执行?
【发布时间】:2017-04-17 05:37:49
【问题描述】:

我必须编写一个脚本来从远程主机获取信息,例如内核版本、df -h、正常运行时间等。那么如何使用函数在远程端执行,或者有没有其他方法可以做到这一点。示例代码如下,感谢有人可以帮助我。

def GetKernel():
        krnl=platform.release()
        print(krnl)


def SSHserver(server):
        sshProcess = subprocess.Popen(["ssh", server, GetKernel()],
                       shell=False,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
        sshProcess.stdin.write(MountPointChecker())
        print(sshProcess)

SSHserver('192.168.10.123')

【问题讨论】:

    标签: linux python-2.7 subprocess


    【解决方案1】:

    您可以使用面料

    首先在 Debian 8 中安装 fabric 包:

    apt install fabric
    

    创建一个名为fabfile.py的文件,内容在这里:

    #!/usb/bin/env python2
    # File fabfile.py
    from fabric.api import run
    
    def host_type():
      run('uname -s')
    
    def host_kernel():
      run('uname -r')
    
    def host_kernel_release_name_df():
      run('uname -r')
      run('lsb_release -ds')
      run('hostname')
      run('df -TPh')
    

    现在在远程服务器上执行:

    fab -H user@server1,user@server2 host_kernel_release_name_df
    

    你可以运行多个 def :

    fab -H user@server1,user@server2 host_type host_kernel
    

    面料网站:http://www.fabfile.org/

    Python 中的其他 SSH 命令: https://wiki.python.org/moin/SecureShell

    【讨论】:

    • 感谢您的回答,我无法在 linux 服务器中安装任何软件或工具。所以我必须使用默认模块和 python 2.6 版本。
    • 你真的需要在 python 中编写脚本吗?因为没有插件很难。否则你可以尝试纯 bash。
    • 谢谢朋友,是的,我明白这有点困难
    猜你喜欢
    • 1970-01-01
    • 2016-02-24
    • 2015-05-03
    • 2017-03-27
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2019-03-06
    • 2014-11-05
    相关资源
    最近更新 更多