मैं उबंटू का उपयोग कर रहा हूं और मैं यह जांचने की कोशिश कर रहा हूं कि पासवर्ड फ़ील्ड खाली है या नहीं।
import subprocess
pass_max = subprocess.check_output({'"sudo'", "cat", "/etc/shadow", "|", "awk", "{print}"])
इस कोड को निष्पादित करने के बाद, मुझे गैर-शून्य निकास स्थिति लौटाई गई त्रुटि प्राप्त होती है। मैं इस समस्या को कैसे हल करूं? क्या sudo कमांड के कारण त्रुटि हुई है?
2 जवाब
क्या आपने श्लेक्स की कोशिश की है?
import subprocess
import shlex
pass_max = subprocess.check_output(shlex.split("sudo cat /etc/shadow | awk '{print}'"))
मुझे लगता है कि चेक_आउटपुट के तर्क में समस्या 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 के रूप में सहेजा है)
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।