簡體   English   中英

用python執行linux命令

[英]execute linux commands with python

我想用python啟動一個linux命令但不打印輸出,我想保存輸出。 我試過這個:

user = os.system('whoami')
if user == 'root':
    print('')
elif:
    print('please run as root')
    exit()

但是即使我以root身份運行它,它的打印'請以root身份運行'。 我也試過這個(只是為了檢查用戶是什么):

user = os.system('whoami')
print(str(user))

但它的打印'0'

我的目標是檢查什么用戶正在運行程序,但不打印用戶。 (我用拱門)

也許你應該看看subprocess.run ,函數中有一個參數叫做capture output ,在文檔中描述如下:

如果 capture_output 為真,stdout 和 stderr 將被捕獲。 使用時,內部 Popen 對象會自動創建為 stdout=PIPE 和 stderr=PIPE。 stdout 和 stderr 參數可能不會與 capture_output 同時提供。 如果您希望捕獲兩個流並將其合並為一個,請使用 stdout=PIPE 和 stderr=STDOUT 而不是 capture_output。

在文檔中有一個示例顯示了如何從命令中獲取輸出:

>>> subprocess.run(["ls", "-l", "/dev/null"], capture_output=True)
CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0,
stdout=b'crw-rw-rw- 1 root root 1, 3 Jan 23 16:23 /dev/null\n',stderr=b'')

如果您只想獲取當前用戶,我建議os.getlogin

>>> import os
>>> if os.getlogin() != 'root':
...     print("please run as root!")
please run as root!

注意:我還建議不要在參數中使用shell=True ,這會帶來很多安全問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM