2013-04-18 136 views
1

我需要從Windows機器連接到遠程Linux服務器並執行Perl腳本。 我使用在windows中使用python在Linux上運行遠程perl腳本

command = "perl /usr/local/xfer/file.pl -ssh [email protected]"+hostname+" -pw password -batch" 
pid = subprocess.Popen(command, shell=True) 

嘗試,但它告訴我Can't open perl script "usr/local/xfer/file.pl'": No such file or directory.

我在做什麼錯在這裏,我怎麼能得到它的工作?

回答

2

上面的命令使用Windows上的Perl安裝,但是您說腳本位於Linux服務器上。

所以你需要用調用中調用SSH:

child = subprocess.Popen(['plink', '-ssh', '[email protected]', 'perl', '/usr/local/xfer/file.pl', 
      '-ssh', '[email protected]'+hostname, '-pw', 'password', '-batch'], shell=True) 

注:決不用不完的subprocess.Popen()的「字符串命令」的版本,總是傳遞命令和參數作爲列表

回到您的問題:這將開始plink(命令行版本的膩子,因爲Windows沒有ssh(1))與所有其他列表元素作爲參數。

請注意,膩子代理必須運行此工作,否則plink將要求輸入密碼。詳情請參閱手冊。

+1

這幫了很大忙。在將plink.exe放入我的python路徑之後,我真正需要的是'subprocess.call'(['plink','-ssh','%s @%s'%(USER,HOST),' -pw',PASSWORD,'perl','//usr/local/xfer/file.pl'],shell = True)'' – CCKx

相關問題