簡體   English   中英

如何使用 sudo 命令在 python 中工作

[英]How do I use a sudo command to work in python

我正在使用 ubuntu 並嘗試檢查密碼字段是否為空。

import subprocess

pass_max = subprocess.check_output({'"sudo'", "cat",  "/etc/shadow", "|", "awk", "{print}"])

執行此代碼后,我收到錯誤返回非零退出狀態 1。如何解決此問題? 錯誤是因為 sudo 命令嗎?

你試過shlex嗎?

import subprocess
import shlex

pass_max = subprocess.check_output(shlex.split("sudo cat /etc/shadow | awk '{print}'"))

我認為問題不是sudo而是 pipe 運算符| 在 check_output 的參數中。

至少在我的環境中,以下工作。

import subprocess as sp


with sp.Popen(["sudo", "cat", "6.py"], stdout=sp.PIPE) as p1:
    with sp.Popen(["grep", "with"], stdin=p1.stdout, stdout=sp.PIPE) as p2:
        print(p2.stdout.read().decode("utf-8"))
print(p1.returncode)
print(p2.returncode)

output 是

$ python 6.py
Password:
with sp.Popen([sudo, cat, 6.py], stdout=sp.PIPE) as p1:
    with sp.Popen([grep, with], stdin=p1.stdout, stdout=sp.PIPE) as p2:

0
0

(我將代碼保存為 6.py)

暫無
暫無

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

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