मैं उबंटू का उपयोग कर रहा हूं और मैं यह जांचने की कोशिश कर रहा हूं कि पासवर्ड फ़ील्ड खाली है या नहीं।

import subprocess

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

इस कोड को निष्पादित करने के बाद, मुझे गैर-शून्य निकास स्थिति लौटाई गई त्रुटि प्राप्त होती है। मैं इस समस्या को कैसे हल करूं? क्या sudo कमांड के कारण त्रुटि हुई है?

0
John 9 मई 2020, 10:57

2 जवाब

क्या आपने श्लेक्स की कोशिश की है?

import subprocess
import shlex

pass_max = subprocess.check_output(shlex.split("sudo cat /etc/shadow | awk '{print}'"))
0
ErdoganOnal 9 मई 2020, 11:17

मुझे लगता है कि चेक_आउटपुट के तर्क में समस्या sudo नहीं बल्कि पाइप ऑपरेटर | है।

कम से कम मेरे वातावरण में, निम्नलिखित कार्य करता है।

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)

आउटपुट था

$ 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 के रूप में सहेजा है)

0
hotoku 9 मई 2020, 11:50