[英]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.