2009-09-24 10 views
7

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

इनमें से सबसे परेशानी कुछ अलग-अलग पैरामीटर (जैसे विभिन्न पहचानकर्ता, अलग-अलग नाम) के साथ हजारों नए रिकॉर्ड बना रही है। रिकॉर्ड्स को अनुक्रम में बनाया जाना चाहिए, एक समय में, जिसमें मैन्युअल रूप से करने के लिए कई महीने (और इसलिए डॉलर) लगेंगे। ज्यादातर मामलों में, रिकॉर्ड बनाने में कमांड में कुंजीिंग, प्रतिक्रियाओं को पढ़ने, आगे के आदेशों में कुंजी आदि का एक बहुत ही अनुमानित पैटर्न होता है। हालांकि, कुछ रिकॉर्ड निर्माण संचालन के परिणामस्वरूप त्रुटि की स्थिति ('इस पहचानकर्ता के साथ रिकॉर्ड पहले से मौजूद है') जिसके लिए आवश्यकता होती है आदेशों का एक अलग सेट शानदार ढंग से बाहर निकलने के लिए।

  • नाम पाइप:

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

  • आवेदन। एक और यूनिक्स उपकरण खोजें जिसका उपयोग इंटरैक्टिव प्रोग्राम स्क्रिप्ट करने के लिए किया जा सकता है। केवल एक ही जिन्हें मैं खोजने में सक्षम हूं, expect है, लेकिन यह शीर्ष पर बनाए रखा प्रतीत नहीं होता है; और चैट, जो मुझे पहले की उम्र से याद है, और जो मुझे लगता है कि कम या ज्यादा कम करना प्रतीत होता है, लेकिन यह केवल मॉडेम को नियंत्रित करने के लिए प्रतीत होता है।

एक और संभावित जटिलता: मुझे लगता है लक्ष्य आवेदन एक VT100 टर्मिनल के लिए लिखा गया था और यह बच दृश्यों के कुछ प्रकार का उपयोग करता है चीजों पर प्रकाश डाला प्रदान की तरह करते हैं।

मेरा प्रश्न है कि मुझे क्या दृष्टिकोण लेना चाहिए? इनमें से एक, या कुछ पूरी तरह से अलग? मुझे नामित पाइप का उपयोग करने का विचार पसंद है और उसके बाद एक पर्ल स्क्रिप्ट है जो फीफो खोलती है और आवश्यकतानुसार पढ़ती है और लिखती है, क्योंकि यह बहुत लचीलापन प्रदान करती है, लेकिन जो मैंने पढ़ा है, उससे ऐसा लगता है कि बहुत सारी संभावित समस्याएं हैं मैं इस रास्ते से नीचे चला गया।

अग्रिम धन्यवाद।

+1

उम्मीद अब स्रोतforge पर है http://sourceforge.net/projects/expect/ – Mark

+0

अद्यतन: मेरे पास Expect.pm का उपयोग कर समाधान का निर्माण है। उत्तर देने वाले सभी व्यक्तियों को धन्यवाद। मैं परीक्षण सर्वर पर एसएसएच कर सकता हूं, ऐप शुरू कर सकता हूं, और इसके साथ बातचीत करना शुरू कर सकता हूं। ऐसा लगता है कि वीटी 100 नियंत्रण कोड काफी सरल हैं। वर्तमान में मेरे पास खाता नहीं है, लेकिन मैंने कुछ उपयोगकर्ता नाम सीखे हैं, इसलिए मुझे लगता है कि मेरा पहला वास्तविक स्वचालन परीक्षण प्रदर्शनकर्ता खाते पर एक शब्दकोश हमला होगा ... –

उत्तर

12

अराजकता के सुझाव के अनुसार, मैं निश्चित रूप से अतिरिक्त लचीलापन के लिए पर्ल से चिपके रहूंगा। क्या आप Expect perl module से अवगत हैं? यह नामित पाइप दृष्टिकोण से बहुत अच्छा है।

नामित पाइप के साथ भी नोट करें, आप आउटपुट को अपने विरासत आवेदन से वापस आने के लिए मजबूर नहीं कर सकते हैं, जो परेशान हो सकता है। I सोचें Expect.pm इस समस्या को हल करने के लिए छद्म-ttys का उपयोग करता है, लेकिन मुझे यकीन नहीं है। अधिक जानकारी के लिए "Bidirectional Communication with Another Process" अनुभाग में perlipc पर चर्चा देखें।

+0

मुझे उम्मीद पर्ल मॉड्यूल से अवगत नहीं था, तो मैं इसे एक भंवर दे रहा हूँ। अब तक आशाजनक लग रहा है, दस्तावेज थोड़ा हल्का है - मुझे शायद मूल उम्मीद पर पढ़ने की जरूरत है। –

4

expect शायद आप इसे क्रेडिट देने के मुकाबले बहुत अधिक ठोस हैं, लेकिन यदि मैं आप थे तो मैं अभी भी पर्ल विकल्प के साथ जाऊंगा, प्रक्रिया के प्रबंधन के लिए एक पूर्ण और परिचित प्रोग्रामिंग भाषा रखना चाहता हूं विश्वास है कि जो भी अजीब मुद्दे उठते हैं, उन्हें संबोधित करने के तरीके होंगे।

4

अपेक्षा करें, या तो टीसीएल या Perl implementation एस के साथ, मेरा पहला प्रयास होगा। यदि आप आउटपुट में अजीब अनुक्रम देख रहे हैं क्योंकि यह अजीब टर्मिनल चीजें कर रहा है, तो बस अपने मिलान करने से पहले आउटपुट से उन्हें फ़िल्टर करें।

नामित पाइप के साथ, आप वैसे भी उम्मीद को फिर से शुरू करने जा रहे हैं।

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

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