2008-10-30 9 views
5

मैं एक पायथन स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो हमारे सॉफ़्टवेयर को संकुल करता है। इस स्क्रिप्ट को हमारे उत्पाद को बनाने और इसे पैकेज करने की आवश्यकता है। वर्तमान में हमारे पास अन्य स्क्रिप्ट हैं जो प्रत्येक टुकड़े को अलग-अलग करते हैं जिसमें सीएसएच, और पर्ल स्क्रिप्ट शामिल हैं। ऐसी एक स्क्रिप्ट इस प्रकार है:क्या सबप्रोसेस के साथ उप उपप्रोसेस के साथ संवाद करना संभव है। पोपेन?

sudo mod args 

जहां मॉड एक पर्ल स्क्रिप्ट है; तो पाइथन में मैं

proc = Popen(['sudo', 'mod', '-p', '-c', 'noresource', '-u', 'dtt', '-Q'], stderr=PIPE, stdout=PIPE, stdin=PIPE) 

समस्या यह है कि इस मॉड स्क्रिप्ट के कुछ प्रश्नों के उत्तर की आवश्यकता है। इसके लिए मैंने सोचा कि पारंपरिक

(stdout, stderr) = proc.communicate(input='y') 

काम करेगा। मुझे नहीं लगता कि यह काम कर रहा है क्योंकि पॉपन जिस प्रक्रिया को नियंत्रित कर रहा है वह सूडो है, न कि मॉड स्क्रिप्ट जो सवाल पूछ रहा है। क्या मॉड स्क्रिप्ट के साथ संवाद करने का कोई तरीका है और अभी भी इसे सूडो के माध्यम से चलाएं?

उत्तर

4

मैं Pexpect के साथ जाना चुनूंगा।

import pexpect 
child = pexpect.spawn ('sudo mod -p -c noresource -u dtt -Q') 
child.expect ('First question:') 
child.sendline ('Y') 
child.expect ('Second question:') 
child.sendline ('Yup') 
+0

मैंने pexpect की कोशिश की और यह "अपेक्षित" के रूप में काम किया। धन्यवाद! – darrickc

1

करने के लिए सबसे आसान काम sudo के माध्यम से नियंत्रित स्क्रिप्ट (पायथन स्क्रिप्ट) चलाएगा। क्या आप ऐसा करने में सक्षम हैं, या यह एक विकल्प नहीं है?

3

मुझे लगता है कि आप अपने Popen कॉल में sudo को निकालना होगा और टाइप करने के लिए sudoअपने स्क्रिप्ट की जरूरत पड़ती है।

यह अतिरिक्त रूप से Popen के अंदर छिपाने की बजाय, आपकी स्क्रिप्ट में उन्नत विशेषाधिकारों की आवश्यकता को और स्पष्ट करता है।

0

हमें और जानकारी चाहिए।

  1. क्या सूडो आपको पासवर्ड के लिए पूछ रहा है?
  2. प्रश्न पूछने के लिए मॉड स्क्रिप्ट के किस प्रकार का इंटरफ़ेस है?

क्योंकि इस तरह की चीजें पाइप पर सामान्य के रूप में संभाली नहीं जाती हैं।

इनमें से दोनों के लिए एक समाधान Pexpect हो सकता है, जो पासवर्ड के लिए पूछे जाने वाले मज़ेदार स्क्रिप्ट को संभालने में विशेषज्ञ है, और कई अन्य इनपुट मुद्दों।

संबंधित मुद्दे