2014-02-18 106 views
1

我想在python中使用結構,在遠程服務器上執行命令。在遠程服務器上執行命令的結構不起作用

我寫這些:

from fabric.api import * 
from fabric.tasks import execute 
def do_some_thing(): 
    run("ls -lh") 
if __name__ == '__main__': 
    execute(do_some_thing,hosts=['[email protected]']) 

但是,它不工作,讓我登錄..

它的輸出:

➜ ~ python test.py 
[[email protected]] Executing task 'do_some_thing' 
[[email protected]] run: ls -lh 
[[email protected]] out: [email protected]:~# 
[[email protected]] out: [email protected]:~# 

回答

1

利用env變量 -

from fabric.api import * 
from fabric.contrib.files import * 

def myserver(): 
    env.hosts = ['10.18.103.102'] 
    env.user = 'root' 
    # if you have key based authentication, uncomment and point to private key 
    # env.key_filename = '~/.ssh/id_rsa' 
    # if you have password based authentication 
    env.password = 'ThEpAsAwOrd' 

def ls(): 
    run('ls -al') 

現在在一個文件調用fabfile.py保存這些並執行(在同一目錄下) -

$ fab myserver ls 

面料將執行兩種功能此起彼伏。因此,當它執行ls()時,它將在env中提供服務器詳細信息。

+0

謝謝。我想在沒有'fab'命令的情況下在python中使用結構作爲lib,我應該怎麼做? – user3323381

+0

執行時調用這兩個函數。這應該做到這一點。 –

相關問題