पृष्ठभूमि: मैं अजगर और paramiko उपयोग कर रहा हूँ प्रक्रिया मैं हर मैं एक वर्ग के लिए एक कार्यक्रम में सौंपने के लिए है के माध्यम से जाना स्वचालित करने के लिए। हम स्रोत कोड सबमिट करने के लिए "हैंडिन" नामक एक कमांड का उपयोग करते हैं, लेकिन यह एक स्कूल कंप्यूटर से किया जाना चाहिए। तो जब मैं घर से कोड जमा करता हूं, तो मुझे स्कूल सर्वरों में एसएफटीपी करना होगा, फाइलों को डीआईआर, एसएसएच स्कूल कंप्यूटर में डालें, 'हैंडिन' कमांडअजगर paramiko स्क्रिप्ट, exec_command दौरान उत्पादन पढ़ने समस्याओं()
मैं सफलतापूर्वक स्कूल मशीनों पर फाइलों को डाल सकता हूं। समस्या तब होती है जब मैं exec_command ('मेरी फ़ाइलें हैंडिन') का उपयोग करने का प्रयास करता हूं और फिर अगली कार्रवाई निर्धारित करने के लिए आउटपुट पढ़ता है।
तो मैं
try:
(stdin, stdout, stderr) = client.exec_command(s)
except:
print 'whoops'
sys.exit()
print stdout.readlines()
है लेकिन यह किसी कारण के लिए एक गतिरोध का कारण बनता है, स्क्रिप्ट कुछ नहीं कर प्रतीत होता है और मैं अंत में पूरी प्रक्रिया (Ctrl + C does not काम) को मारने के लिए की है। मुझे यकीन नहीं है कि exec_command सही तरीके से पूरा नहीं कर रहा है (भले ही यह कोशिश/पकड़ ब्लॉक से बाहर हो रहा हो) या यदि मुझे नेटवर्क समस्याएं हैं या क्या।
कोई विचार?
अद्यतन:
समस्या निष्पादन के दौरान handin आदेश के साथ बातचीत के साथ है। आदेश को निष्पादित करने के बाद, हैंडिन अभी भी चल रहा है या नहीं भी हो सकता है। अगर इसे पहली बार सबमिट करना सफलतापूर्वक कहता है, ब्ला ब्लाह, और निष्पादन खत्म हो जाता है। सब ठीक हैं। लेकिन अगर मैं पुनः सबमिट कर रहा हूं तो मुझे प्रत्येक फ़ाइल के लिए ओवरराइट (stdin.write ('y')) को अधिकृत करना होगा।
टीएल/डॉ:
मैं कैसे अगर एक exec_command() अभी भी चल रहा है, निवेश के लिए इंतजार कर रहे हैं, और ReadLine() तदनुसार stdout से जांच कैसे करूं?
क्या आपके पास टीएल/डीआर का समाधान है? इनपुट के लिए प्रतीक्षा करने से पहले मैं पाठ को कैसे जान सकता हूं उदा। @ पासवर्ड ... –