有没有一种方法可以在Windows上使用Python来执行位于远程Unix机器上的shell脚本?使用python远程执行shell脚本
上午:对晚编辑抱歉。我知道帕拉米科,但我想知道如果没有它,是否有办法做到这一点。对于初学者来说,是否可以用subprocess()完成?
有没有一种方法可以在Windows上使用Python来执行位于远程Unix机器上的shell脚本?使用python远程执行shell脚本
上午:对晚编辑抱歉。我知道帕拉米科,但我想知道如果没有它,是否有办法做到这一点。对于初学者来说,是否可以用subprocess()完成?
python中没有任何'包含电池'模块用于远程shell执行。我建议看看Fabric,它提供了一个非常好的界面,可以在远程机器上通过SSH进行工作,可能比paramiko好一点。你甚至可以在Windows上安装布...
您需要ssh进入远程机器,并且如果您有适当的凭据,则可以调用shell脚本。
使用SSH,可以方便地使用的paramiko模块,它提供的ssh自动化
一个典型的例子:
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()
替换 “DF -h” 命令与你的shell脚本。
这工作太棒了!只是为了我想要的。 – Nish 2013-03-20 17:40:00
您需要在远程机器上运行某种服务器,或者ssh并自己动手。使用许多预先编写的Python服务器之一来侦听客户端并启动shell脚本并不困难。
身份验证对您而言可能是也可能不是问题;请注意,其他人可以按照相同的步骤进行操作,并可能获得相同的结果。你不想让intarwub上的任何人开始你的脚本!
当然,通常通过Python支持的ssh协议(用于“安全shell”),例如,由paramiko第三方扩展。
如果你不想使用paramiko,那么尝试telnetlib。您可以使用它来执行远程命令。
我有一个用多和我没有测试过,但基于文档应该工作...子
服务器:
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'])
的可能重复的[远程服务器命令执行(http://stackoverflow.com/questions/3173977/remote-server-command-execute) – 2010-09-23 17:46:26
在标准PYT没什么hon库将允许您在Unix机器上执行远程执行。要么你必须使用SSH或写你自己的服务器(不)。如果你宁愿避免使用Paramiko,Twisted提供了另一种SSH实现。无论哪种方式,您都需要使用第三方软件包。 – Rakis 2010-09-23 18:38:19
你可以避免帕拉米科。正如Rakis所建议的那样,您可以在Twisted中探索ssh支持。您可以添加证书以避免密码挑战,并且在子流程中,您可以运行常规命令ssh user @ servername,然后在服务器上执行后续命令。 – pyfunc 2010-09-23 21:56:19