shell脚本使用python远程执行

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

PS:抱歉关于编辑后期。 我知道Paramiko,但我想知道如果没有它的方法。 对于初学者来说,是否可以用subprocess()完成?

python中没有任何“包含电池模块”的远程shell执行模块。 我建议寻找Fabric ,它提供了一个非常好的界面,可以在远程机器上通过SSH进行工作,可能比paramiko好一些。 你甚至可以在Windows上安装Fabric …

您将需要ssh进入远程机器,如果您有适当的凭据,您可以调用shell脚本。

对于使用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”命令。

我有一个多处理和子进程,我还没有测试,但应该基于文档工作…

服务器:

 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']) 

当然,通常通过Python支持的ssh协议(“安全shell”),例如paramiko第三方扩展。

我会用Pexpect和Plink来做这个。

你可能需要在远程机器上运行某种服务器,或者ssh并自己动手。 使用许多预先编写的Python服务器之一来侦听客户端并启动shell脚本并不困难。

身份验证对您来说可能是也可能不是问题; 请注意,其他人可以按照相同的步骤进行操作,并获得相同的结果。 你不想让intarwub上的任何人开始你的脚本!

如果你不想使用paramiko,那么尝试telnetlib。 您可以使用它来执行远程命令。