2010-09-11 14 views
7

क्या कोई भी उन सभी साइगविन हैक्स और सभी के बिना विंडोज़ में नेट :: एसएसएच :: पर्ल का उपयोग करने का एक बहुत ही आसान तरीका सुझा सकता है।हम विंडोज़ में पर्ल का उपयोग करके एसएसएच को कैसे कॉन्फ़िगर कर सकते हैं?

जब भी मैं मॉड्यूल यह मेरे कुछ अन्य निर्भर मॉड्यूल के लिए ले रहा है स्थापित करने के लिए कोशिश कर रहा हूँ और इस प्रक्रिया कभी नहीं खत्म होने वाली लग रहा था ..

धन्यवाद पहले से

+0

स्ट्रॉबेरी पर्ल या एक्टिवस्टेट? (या * अन्य *?) – mob

+0

... या शायद सिग्विन पर्ल? – bart

+0

मैंने चारों ओर पूछा है और कहा गया है कि आप [नेट :: एसएसएच 2] (http://cpan.uwinnipeg.ca/dist/Net-SSH2) में देखना चाहते हैं। उस साइट से उपलब्ध पीपीएम पैकेज। – bart

उत्तर

7

यहाँ मैंने पाया इसे कैसे करना पर एक पोस्ट है।

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

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

दूसरी बात जो मुझे जिक्र करने की आवश्यकता है वह यह है कि मैं आमतौर पर Win32 प्लेटफ़ॉर्म (यानी विंडोज 200, 2003, XP) का उपयोग करने के लिए बाध्य हूं क्योंकि इस तथ्य के कारण कि अधिकांश क्लाइंट साइट्स जो मैं इन दिनों काम करता हूं, यूनिक्स (या लिनक्स) .. जो मेरी राय में एक वास्तविक दयालु है, लेकिन मैं अपने ग्राहकों की कॉर्पोरेट नीतियों को निर्धारित नहीं करता हूं।

उपलब्ध पर्ल मॉड्यूल की एक प्रारंभिक नज़र जो मैं बस जो चाहते हैं उसे लग रहा था मॉड्यूल के एक नंबर का पता चला:

Net :: उपकरण :: सत्र Net :: SSH :: W32Perl Net :: SSH

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

विभिन्न मॉड्यूल की कोशिश करने के एक दिन या बाद में, मैंने सोचा: 'हम्म, शायद यह उतना आसान नहीं होगा जितना मैंने सोचा था!'

प्रत्येक मॉड्यूल में मैंने देखा था जब यह विंडोज वातावरण में इसका उपयोग करने के लिए आया था। संक्षेप में, यहाँ मुद्दों मैं प्रत्येक मॉड्यूल के साथ पाए जाते हैं:

* Net::Appliance::Session : has a dependency on IO::Pty, which won't ever run on Windows 
* Net::SSH::W32Perl : ``getpwuid function is unimplemented'' message`` when building from scratch. Older ppd's found at http://www.soulcage.net/ppds.58 just don't seem to work....even when installed in to the Activestate perl distribution 
* Net::SSH : Unix only 

तो, इस बिंदु पर, मुझे लगता है कि करने के लिए है कि शायद यह सिर्फ विंडोज पर सब पर काम करने के लिए नहीं जा रहा था शुरू किया गया ....

फिर, मुझे पर्ल मोंगर्स पर एक पोस्टिंग देखने को याद आया जहां किसी ने उल्लेख किया है कि उन्होंने नेट :: * मॉड्यूल में से किसी एक को चलाने के लिए सिग्विन में पर्ल का उपयोग किया था।

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

Cygwin

Cygwin है ... ठीक है, मुझे cygwin वेब साइट से सीधे बोली जाने:

`` Cygwin विंडोज के लिए लिनक्स-जैसा माहौल है। इसमें दो भाग होते हैं:

एक डीएलएल (cygwin1.dll) जो लिनक्स एपीआई इम्यूलेशन परत के रूप में कार्य करता है जो पर्याप्त लिनक्स एपीआई कार्यक्षमता प्रदान करता है। लिनक्स को देखने और महसूस करने वाले टूल का संग्रह।

Cygwin DLL वर्तमान में Windows CE.`` के अपवाद के

तो साथ, सभी हाल ही, व्यावसायिक रूप से जारी किया गया 86 32 बिट और Windows के 64 बिट संस्करणों के साथ काम करता है, तो यह आपको एक लिनक्स प्रकार में चलाने के लिए अनुमति देता है पर्यावरण ... विभिन्न नेट :: * मॉड्यूल के लिए कहीं अधिक आशाजनक लगता है जो मैं देख रहा था।

इसके अलावा, मूल साइगविन कोर स्थापित होने के बाद, यह आपको पर्ल सहित अन्य उपहारों की एक पूरी मेजबानी डाउनलोड और स्थापित करने की अनुमति देता है!

तो, मैंने साइगविन होम पेज से 'setup.exe' फ़ाइल डाउनलोड करके और अपने पीसी पर इसे चलाकर साइगविन स्थापित करने के बारे में सेट किया।

सिग्विन एक असफल अंतर्ज्ञानी जीयूआई प्रदान करता है ताकि आप फ़ाइलों को डाउनलोड करने के लिए दर्पण का चयन कर सकें, और आप कौन से पैकेज डाउनलोड करना चाहते हैं।

जीसीसी कोर GnuPG बनाने ncftpget OpenSSH पर्ल पर्ल ExtUtils wget ज़िप

:

यहाँ संकुल है कि मैं सिर्फ बुनियादी कोर cygwin संकुल है कि आप के लिए स्थापित कर रहे हैं परे स्थापित कर रहे हैं

यदि आप चाहें तो आप दूसरों को भी जोड़ सकते हैं, लेकिन इनके लिए यह काम किया।

पर्ल

एक बार मैं cygwin स्थापित किया था (पर्ल वितरण है कि मैं शामिल सहित), मैं मॉड्यूल में जोड़ने के लिए पूरी तरह से तैयार है कि मैं इस्तेमाल करने की कोशिश करना चाहता था (जैसे Net :: SSH :: उपकरण) ।

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

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

जब आप cygwin स्थापित, यह एक आइकन कहीं डाल दिया है जाएगा (या तो अपने डेस्कटॉप, quicklauch बार या प्रारंभ मेनू पर) ताकि आप cygwin खोल शुरू कर सकते हैं (यह कुछ इस तरह दिखता है:

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

पर्ल मॉड्यूल में लोड करने के लिए आपको आवश्यकता होगी , आपको कमांड प्रॉम्प्ट पर 'cpan' दर्ज करना होगा। इससे आपको अपने पर्ल वितरण में नए मॉड्यूल लोड करने की अनुमति मिल जाएगी।

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

एकमात्र सेटिंग जो मैं आपको डिफ़ॉल्ट से बदलने की सलाह दूंगा, यह सवाल है कि आपको पूर्व-आवश्यक मॉड्यूल के लिए 'पूछा या फ़ॉलो किया जाना चाहिए' - मैं बहुत परेशानी बचाने के लिए 'अनुवर्ती' के लिए जाऊंगा।

बार जब आप अपने cpan खोल खुला है (यदि आप बता सकते हैं क्योंकि अब आप एक है 'cpan>' शीघ्र), तो आपको कुछ पर्ल मॉड्यूल में लोड करने के लिए निम्न कमांड दर्ज करने की आवश्यकता है कि आप की आवश्यकता होगी:

एलडब्लूपी स्थापित करें (पूछे गए किसी भी प्रश्न के लिए सभी डिफ़ॉल्ट स्वीकार करें) नेट :: उपकरण :: सत्र

जब आप इन आदेशों को दर्ज करते हैं, तो आप स्क्रीन पर उड़ने वाली कई चीजें देखेंगे क्योंकि मॉड्यूल आपके लिए स्थापित हैं।

चल रहा स्क्रिप्ट

खैर, इस बिंदु पर, हम एक नहीं बल्कि तेज़ भ्रमण रही cygwin के माध्यम से ले लिया है और अपने मंच पर instaled पर्ल, लेकिन अब आप एक स्थिति कुछ पर्ल स्क्रिप्ट को चलाने के लिए किया जाना चाहिए।

हमने नेट :: उपकरण :: सत्र मॉड्यूल को आपके पर्ल वितरण में स्थापित किया है, ताकि हम पर्ल स्क्रिप्ट चला सकें जो इसे या तो लक्ष्य डिवाइस पर टेलनेट या एसएसएच सत्र देने के लिए उपयोग करेंगे।

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

आप सोच रहे होंगे: 'क्या इसका मतलब यह है कि मुझे हर बार जब मुझे चलाने की ज़रूरत होती है तो मुझे सिग्विन शैल से अपनी पर्ल स्क्रिप्ट चलाने की ज़रूरत है?' '। खैर, अच्छी खबर यह है कि नहीं, आप नहीं .. .. जब तक आप अपनी स्क्रिप्ट चलाने के लिए cygwin perl निष्पादन योग्य कहते हैं, तो यह एक डॉस प्रॉम्प्ट (या सिस्टम शेड्यूलर!) से ठीक चलाएगा। तो, यह ठीक काम करेगा:

c: \ c: \ cygwin \ बिन \ perl.exe myscript.pl

किसी भी तरह, मुझे लगता है कि यह है कि आप जानते हैं कि कैसे मैं अपने विशेष मुद्दे फटा जाने के लिए काफी है। मैं भविष्य में aritcles में थोड़ा और विस्तार से यह सब कुछ कवर करने की उम्मीद करता हूं, साथ ही अपने नेटवर्क उपकरणों को नियंत्रित और कॉन्फ़िगर करने के लिए कुछ उपयोगी स्क्रिप्ट बनाने के लिए अविश्वसनीय रूप से उपयोगी नेट :: उपकरण :: सत्र मॉड्यूल का उपयोग करने के तरीके के बारे में अधिक जानकारी प्रदान करता हूं।

http://perlwin32ssh.blogspot.com/2007/07/test_4418.html

+0

+2 लेकिन ऐसा नहीं कर सकता क्योंकि मैं केवल एक बार मतदान कर सकता हूं। –

2

ActiveState पर्ल के लिए, शायद आप नेट :: SSH2 मॉड्यूल के लिए कोशिश कर सकते हैं। मैंने कुछ ऑनलाइन उदाहरणों के साथ प्रयास किया और यह मेरे लिए काम किया।

नेट :: एसएसएच 2 का उपयोग करके नमूना उदाहरण स्थापित करने और चलाने के लिए आप निम्न संसाधनों के माध्यम से जा सकते हैं।

इस भंडार का उपयोग करें नेट स्थापित करने के लिए :: SSH2 उदाहरण के http://theoryx5.uwinnipeg.ca/ppms/

जोड़ी: http://www.perlmonks.org/?node_id=569657

आशा यह आपके लिए काम करेंगे। मैंने कोशिश की और यह मेरे लिए काम किया।

2

सिगविन के भीतर से पर्ल का उपयोग करने के बारे में उत्तर देने के बाद इसे विंडोज कमांड लाइन से कॉल करना सही जवाब है। आपके प्रयास के लिए बहुत बहुत धन्यवाद!

हालांकि, इस विधि एक PERL उदाहरण विंडोज कमांड लाइन से Cygwin में चल रहे कॉल करने के लिए है नहीं हमेशा इष्टतम:

c: \ cygwin \ बिन \ perl.exe myscript.pl

वह तकनीक कुछ पर्ल स्क्रिप्ट के साथ काम करेगी लेकिन सभी नहीं। यह मुझे नेट का उपयोग करने की कोशिश कर रहा था: एसएसएच: EXPECT और लॉगिन() विधि। यह अजीब त्रुटियों से निरस्त होगा।

ग:

एक बेहतर तरीका अपने पर्ल उदाहरण विंडोज कमांड प्रॉम्प्ट से Cygwin में चल रहे कॉल करने के लिए यह है \ cygwin \ बिन \ बैश --login -c 'पर्ल myscript.pl'

ऐसा लगता है कि सिग्विन पर्यावरण के भीतर पूरी तरह से पर्ल स्क्रिप्ट निष्पादित करता है और यहां तक ​​कि जटिल पर्ल स्क्रिप्ट या कई निर्भरताओं वाले लोग या एमएसडीओएस शैली पथ नामों से निपटने में सक्षम नहीं हैं, फिर भी चलेंगे। आप अभी भी पर्ल स्क्रिप्ट के आउटपुट को विंडोज कमांड विंडो पर वापस कर सकते हैं, उदाहरण के लिए प्रिंट() का उपयोग अपनी पर्ल स्क्रिप्ट के भीतर से कर सकते हैं।

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

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