Python 執行 Linux 作業系統命令
在開發運維指令碼過程中,經常需要執行一些作業系統命令,常用方法如下:
1、使用 os.system
>>> import os
>>> cmd = 'ls /'
>>> res = os.system(cmd)
bin boot data dev etc home lib lib64 media mnt opt oracle proc root run sbin srv sys tmp usr var
>>> print(res)
0
特點:
(1)Python 內建方法,執行成功返回 0,並在標準輸出列印命令執行結果
(2)不能返回命令的執行結果
2、使用 commands.getstatusoutput
>>> import os commands
>>> cmd = 'ls /'
>>> status,output = commands.getstatusoutput(cmd)
status 為命令執行的狀態,成功返回 0 ,出錯返回非 0 值;
output 是命令的執行結果
特點:
(1)commands 只能在 Python2.x 版本使用,而且並不是每一個 Python2.x 版本 都自帶了該模組;
(2)commands 包在 Python3 中已經廢棄
3、使用 subprocess.Popen
>>> from subprocess import Popen, PIPE
>>> process = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
>>> stdout, stderr = process.communicate()
stdout 為命令執行結果,stderr 為命令錯誤資訊。注意,某些命令即便執行成功,也會有錯誤提示資訊,但不影響結果。
特點:
(1)Python2.x 和 Python3.x 內建模組
(2)可以同時返回命令執行結果和錯誤資訊
(3)可以獲取到命令的退出碼
綜上,推薦使用第三種方法。
一個執行作業系統命令的函式可以封裝如下,支援基於互信的遠端節點命令執行,返回標註輸出、標註錯誤和退出碼
from subprocess import Popen, PIPE
def exec_command(shell_cmd, hostname=None):
if hostname:
p = Popen('/usr/bin/ssh -Tq '+hostname, shell=True, stdout=PIPE, stdin=PIPE)
p.stdin.write(str.encode(shell_cmd))
p.stdin.flush()
else:
p = Popen(shell_cmd, shell=True, stdout=PIPE, stdin=PIPE)
stdout, stderr = p.communicate()
if stdout:
stdout = stdout.decode()
if stderr:
stderr = stderr.decode()
return stdout, stderr, p.poll()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31560527/viewspace-2658443/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java 執行作業系統命令Java作業系統
- 在PL/SQL中執行作業系統命令SQL作業系統
- 在sqlplus執行作業系統命令SQL作業系統
- 在PL/SQL中執行作業系統的命令SQL作業系統
- 作業系統-執行緒作業系統執行緒
- Linux作業系統 paste命令Linux作業系統AST
- 利用oracle儲存過程執行作業系統命令Oracle儲存過程作業系統
- paramiko執行多個作業系統命令並返回作業系統
- Linux作業系統執行級別介紹Linux作業系統
- Linux系統執行命令方法Linux
- 作業系統:多執行緒作業系統執行緒
- 作業系統何時執行?作業系統
- sqlplus小竅門:執行作業系統命令(zt)SQL作業系統
- 無需作業系統直接執行 Python 程式碼作業系統Python
- Python-呼叫執行系統命令Python
- 【作業系統】程式與執行緒作業系統執行緒
- 作業系統的執行環境作業系統
- Python執行作業系統命令並取得返回值和退出碼,支援有互信的遠端執行Python作業系統
- LINUX作業系統知識:程式與執行緒詳解Linux作業系統執行緒
- 從U盤執行Linux作業系統的三種方法Linux作業系統
- 在Linux作業系統上執行Windows應用程式(轉)Linux作業系統Windows
- 在linux系統中在後臺以作業形式執行命令Linux
- Linux作業系統上必需要學的系統管理命令Linux作業系統
- 【Python】執行系統命令的常見用法Python
- 作業系統中的執行緒種類作業系統執行緒
- 作業系統(4)執行緒及其實現作業系統執行緒
- 作業系統中的程式與執行緒作業系統執行緒
- 【作業系統】1.程序和執行緒作業系統執行緒
- Linux 作業系統Linux作業系統
- Linux作業系統Linux作業系統
- Linux作業系統有哪些發行版本?Linux作業系統
- 【linux】Linux作業系統Linux作業系統
- 如何使用Python執行系統命令?Python學習教程!Python
- service命令用於管理Linux作業系統中服務Linux作業系統
- 使用Linux作業系統命令來傳送資訊(轉)Linux作業系統
- python執行系統命令四種方法比較Python
- 作業系統-執行緒和程式的區別作業系統執行緒
- 作業系統_程式和執行緒的區別作業系統執行緒