歡迎,來自IP位址為:180.122.153.228 的朋友
Python是一款非常出色的腳本語言,越來越多的系統管理者開始使用Python将日常工作自動化。
由于系統管理工作多為執行Linux指令,通過Python腳本來執行系統指令對于管理者來說幫助巨大。
本教程将示範使用Python腳本來執行Shell指令的并獲得指令執行結果的兩種方法。
使用Python的os子產品來執行Shesll指令
我們首先建立一個Python腳本”prog.py”,然後在腳本中添加如下内容:
import os
myCmd = 'ls -la'
os.system(myCmd)
腳本首先引入os子產品,然後定義一下Shell指令字元串,最後使用os子產品的system方法執行該指令。系統輸出内容會同樣通過該方法回顯給使用者。執行示意圖如下:
執”prog.py”的輸出結果同執行”ls -la”指令的結果是一緻的,表示該指令已經成功執行。
當然,如果想将輸出内容重定向到檔案中,對于腳本内容修改如下:
import os
myCmd = 'ls -la > out.txt'
os.system(myCmd)
當然,這并不是通過Python腳本進行的輸出重定向,而是利用了Shell本身的功能。
對于指令字元串的定義,也可以采用如下方式:
import os
myCmd = os.popen('ls -la').read()
print(myCmd)
以上腳本的輸出結果同之前腳本的輸出結果是一緻的。
使用Python的subprocess子產品來執行Shesll指令
一個相對比較輕量級的執行Shell指令的方法是使用subprocess子產品。
如果僅僅執行Shell指令而不使用任何選項和參數,則可以采用如下方式執行指令:
import subprocess
subprocess.call("ls")
如果執行的指令含有參數或選項,那麼需要将指令和選項以如下方式置于連結清單中供”subprocess.call”方法調用:
import subprocess
subprocess.call(["ls", "-l", "."])
最後,如果想将輸入内容重定向,可以使用不同于Shell重定向的方法,由”subprocess”子產品自行完成。首先使用子產品的Popen函數,産生一個輸出對象,然後使用該對象的”communicate()”擷取對應輸出内容,最後将結果列印出來。示例代碼如下:
import subprocess
MyOut = subprocess.Popen(['ls', '-l', '.'],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
stdout,stderr = MyOut.communicate()
print(stdout)
print(stderr)
可以看到,程式輸出了标準輸出和标準錯誤的内容(None),并且全部輸出重定向是由腳本自行完成。
以上就是Python腳本執行Shell指令的兩種方法。