有沒有一種方法可以在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