代码之家  ›  专栏  ›  技术社区  ›  fixxxer

使用python远程执行shell脚本

  •  6
  • fixxxer  · 技术社区  · 15 年前

    有没有一种方法可以在Windows上使用Python来执行远程Unix机器上的shell脚本?

    附言:很抱歉编辑太晚了。我知道帕拉米科,但我想知道,如果没有它,是否有办法做到这一点。对于初学者,可以用subprocess()完成吗?

    7 回复  |  直到 15 年前
        1
  •  3
  •   ratmatz    15 年前

    Fabric ,它为在远程机器上通过SSH工作提供了一个非常好的接口,可能比paramiko好一点。你甚至可以在windows上安装Fabric。。。

        2
  •  15
  •   pyfunc    15 年前

    对于使用ssh,您可以轻松地使用提供ssh自动化的paramiko模块

    一个典型的例子:

    import paramiko
    import sys
    import os
    import os.path
    passwd = ""
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('servername', username, password=passwd)
    stdin, stdout, stderr = ssh.exec_command('df -h')
    x = stdout.readlines()
    print x
    for line in x:
        print line
    ssh.close()
    

    用shell脚本替换“df-h”命令。

        3
  •  2
  •   Derek Wilson    14 年前

    我有一个多进程和子进程,我还没有测试,但应该基于文件工作。。。

    import subprocess
    from multiprocessing.managers import BaseManager
    def get_subprocess_module():
        return subprocess
    class MyManager(BaseManager):
        pass
    MyManager.register( 'subprocess', get_subprocess_module )
    MyManager(address=('', 50000), authkey='makecrazy').get_server().serve_forever()
    

    远程客户端:

    from multiprocessing.managers import BaseManager
    class MyManager(BaseManager):
        pass
    MyManager.register('subprocess')
    manager = MyManager(address=('dns.of.remote.server',50000),authkey='makecrazy')
    manager.connect()
    remoteSubprocess = manager.subprocess()
    rc = remoteSubprocess.call(['ls', '-aplh'])
    
        4
  •  1
  •   Alex Martelli    15 年前

    当然,通常是通过ssh协议(对于“secure shell”),例如 paramiko

        5
  •  1
  •   Gaius    15 年前

    我会和你一起做的 Pexpect Plink .

        6
  •  0
  •   Katriel    15 年前

    您要么需要在远程机器上运行某种服务器,要么需要在ssh中自己运行。使用许多预先编写的Python服务器中的一个来侦听客户机并启动shell脚本并不困难。

    身份验证对您来说可能是一个问题,也可能不是一个问题;请注意,其他任何人都可以遵循与您相同的步骤,并可能得到相同的结果。你不想让intarwubs上的任何人启动你的脚本!

        7
  •  0
  •   ghostdog74    15 年前