स्क्रिप्ट का उपयोग करके SecureCRT के लिए स्वचालित इनपुट

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

यह लेख किस लिए है? यह आलेख फास्ट स्टार्ट चक्र से है और इसका उद्देश्य कई उपकरणों पर उपकरण (एक कार्य) स्थापित करते समय नेटवर्क इंजीनियरों के लिए समय की बचत करना है। यह SecureCRT सॉफ्टवेयर और अंतर्निहित स्क्रिप्ट निष्पादन कार्यक्षमता का उपयोग करता है।



परिचय


एक स्क्रिप्ट निष्पादन इंजन बॉक्स से बाहर SecureCRT कार्यक्रम में बनाया गया है। हमें टर्मिनल में स्क्रिप्ट की आवश्यकता क्यों है:

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

यह दस्तावेज़ कार्यों का वर्णन करता है:

  • सरल स्क्रिप्ट बनाना।
  • SecureCRT पर स्क्रिप्ट चलाना।
  • सरल और उन्नत स्क्रिप्ट का उपयोग करने के उदाहरण। (वास्तविक जीवन से अभ्यास करें।)


सरल स्क्रिप्ट बनाना।


सरलतम स्क्रिप्ट केवल दो Send और WaitForString कमांड का उपयोग करती हैं। यह कार्यक्षमता प्रदर्शन किए गए कार्यों के 90% (या अधिक) के लिए पर्याप्त है।

स्क्रिप्ट पायथन, जेएस, वीबीएस (विज़ुअल बेसिक), पर्ल, आदि में काम कर सकती हैं।

अजगर


# $language = "Python"
# $interface = "1.0"
def main():
  crt.Screen.Synchronous = True
  crt.Screen.Send("\r")
  crt.Screen.WaitForString("name")
  crt.Screen.Send("admin\r")
  crt.Screen.WaitForString("Password:")
  crt.Screen.Send("Password")
  crt.Screen.Synchronous = False
main()

आमतौर पर "* .py" एक्सटेंशन वाली फ़ाइल

VBS


# $language = "VBScript"
# $interface = "1.0"
Sub Main
  crt.Screen.Synchronous = True
  crt.Screen.Send vbcr
  crt.Screen.WaitForString "name"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.WaitForString "assword"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.Synchronous = False
End Sub

आमतौर पर "* .vbs" एक्सटेंशन वाली फाइल

एक स्क्रिप्ट लिखकर एक स्क्रिप्ट बनाना।


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

तथा। स्क्रिप्ट रिकॉर्डिंग चलाएँ:
मेनू SecureCRT => स्क्रिप्ट => रिकॉर्डिंग स्क्रिप्ट शुरू करें
b। कंसोल के साथ कार्य करें (CLI में कॉन्फ़िगरेशन चरण निष्पादित करें)।
पर। स्क्रिप्ट की रिकॉर्डिंग समाप्त करने के लिए:
मेनू SecureCRT => स्क्रिप्ट => रिकॉर्डिंग स्क्रिप्ट बंद
करें ... स्क्रिप्ट के साथ फ़ाइल सहेजें।

निष्पादित कमांड और सहेजे गए स्क्रिप्ट का उदाहरण:



SecureCRT पर स्क्रिप्ट चलाना।


स्क्रिप्ट बनाने / संपादित करने के बाद, एक तार्किक प्रश्न उठता है: स्क्रिप्ट कैसे लागू करें?
कई तरीके हैं:

  • स्क्रिप्ट मेनू से मैन्युअल शुरुआत
  • कनेक्शन के बाद स्वचालित शुरुआत (लॉगऑन स्क्रिप्ट)
  • स्क्रिप्ट का उपयोग किए बिना स्वचालित लॉगऑन
  • SecureCRT में एक बटन का उपयोग कर मैनुअल शुरुआत (एक बटन अभी तक बनाया जा रहा है और SecureCRT में जोड़ा गया है)


स्क्रिप्ट मेनू से मैन्युअल शुरुआत


SecureCRT मेनू => स्क्रिप्ट => रन ...
- अंतिम 10 स्क्रिप्ट्स को याद किया जाता है और त्वरित लॉन्च के लिए उपलब्ध हैं:
SecureCRT मेनू => स्क्रिप्ट => 1 "स्क्रिप्ट फ़ाइल का नाम"
SecureCRT मेनू => स्क्रिप्ट => 2 "स्क्रिप्ट फ़ाइल का नाम:
SecureCRT मेनू => स्क्रिप्ट => 3 "स्क्रिप्ट के साथ फ़ाइल का नाम"
मेनू SecureCRT => स्क्रिप्ट => 4 "स्क्रिप्ट के साथ फ़ाइल का नाम"
मेनू SecureCRT => स्क्रिप्ट => 5 "स्क्रिप्ट के साथ फ़ाइल नाम"

कनेक्शन के बाद स्वचालित शुरुआत (लॉगऑन स्क्रिप्ट)


सहेजे गए सत्र के लिए स्वचालित लॉगिंग स्क्रिप्ट की सेटिंग्स कॉन्फ़िगर की गई हैं: कनेक्शन => लॉगऑन क्रियाएँ => लॉगऑन स्क्रिप्ट



स्क्रिप्ट का उपयोग किए बिना स्वचालित लॉगऑन


केवल अंतर्निहित SecureCRT कार्यक्षमता का उपयोग करके स्क्रिप्ट लिखने के बिना पासवर्ड उपयोगकर्ता नाम दर्ज करना संभव है। कनेक्शन सेटिंग्स में "कनेक्शन" => लॉगऑन क्रियाएँ => लॉगऑन को स्वचालित करें - आपको कई बंडलों को भरने की आवश्यकता है - जिसमें जोड़े शामिल हैं: "अपेक्षित पाठ" + "इस पाठ को भेजे गए वर्ण" ऐसी कई जोड़ी हो सकती हैं। (उदाहरण: उपयोगकर्ता नाम की प्रतीक्षा करने वाली पहली जोड़ी, पासवर्ड के लिए दूसरी प्रतीक्षा, विशेषाधिकार प्राप्त मोड के लिए तीसरी प्रतीक्षा, विशेषाधिकार प्राप्त मोड में चौथा पासवर्ड।)

सिस्को एएसए पर स्वचालित लॉगऑन का उदाहरण:



SecureCRT में एक बटन का उपयोग कर मैनुअल शुरुआत (एक बटन अभी तक बनाया जा रहा है और SecureCRT में जोड़ा गया है)


SecureCRT में, आप एक स्क्रिप्ट बटन निर्दिष्ट कर सकते हैं। बटन को इस उद्देश्य के लिए विशेष रूप से बनाए गए पैनल में जोड़ा जाता है।

तथा। इंटरफ़ेस में एक पैनल जोड़ें: SecureCRT मेनू => देखें => बटन बार
बी। पैनल में एक बटन जोड़ें और एक स्क्रिप्ट जोड़ें। - बटन बार पर राइट-क्लिक करें और संदर्भ मेनू में "नया बटन ..." चुनें।
पर। फ़ील्ड में "मैप बटन" संवाद बॉक्स में "एक्शन" एक्शन (फ़ंक्शन) "रन स्क्रिप्ट" चुनें।
बटन के लिए हस्ताक्षर निर्दिष्ट करें। बटन आइकन के लिए रंग। Ok पर क्लिक करके सेटिंग्स को पूरा करें।



नोट:

बटन पट्टी एक बहुत ही उपयोगी विशेषता है।

1. लॉगऑन के लिए एक विशिष्ट सत्र को इंगित करना संभव है जो इस टैब पर डिफ़ॉल्ट रूप से खोलना है।

2. पूर्वनिर्धारित कार्यों को सेट करने के लिए उपकरणों के साथ मानक क्रियाओं के लिए एक संभावना है: शो संस्करण, शो रनिंग-कॉन्फ़िगरेशन, कॉन्फ़िगरेशन को सहेजें।


कोई भी स्क्रिप्ट इन बटनों से जुड़ी नहीं है। केवल कार्यों के साथ लाइन:


सेटिंग्स - ताकि सत्र पर स्विच करते समय बटन के साथ आवश्यक पैनल सत्र सेटिंग्स में खुल जाए:


यह ग्राहक के लिए लॉगिन के लिए अलग-अलग स्क्रिप्ट को कॉन्फ़िगर करने और विक्रेता के लिए अक्सर आदेशों के साथ पैनल पर जाने के लिए समझ में आता है।


जब आप सिस्को गो बटन पर क्लिक करते हैं, तो पैनल सिस्को बटन बार में बदल जाता है।



सरल और उन्नत स्क्रिप्ट का उपयोग करने के उदाहरण। (वास्तविक जीवन से अभ्यास करें।)


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

संवाद बॉक्स का उपयोग करके उपयोगकर्ता से डेटा का अनुरोध करना


मेरे पास डेटा अनुरोध स्क्रिप्ट में 2 था। यह होस्टनाम और आईपी पते का 4 वां ऑक्टेट है। इस क्रिया को करने के लिए - मैंने इसे कैसे किया जाए और इसे SecureCRT की आधिकारिक वेबसाइट (vandyke) पर पाया। - कार्यक्षमता को प्रॉम्प्ट कहा जाता है।

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 23\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("\r") 

स्क्रिप्ट का यह भाग होस्टनाम और अंतिम ऑक्टेट से संख्याओं का अनुरोध करता है। चूंकि उपकरण 15 पीसी का था। और डेटा तालिका में प्रस्तुत किया गया था, फिर मैंने तालिका से मानों की प्रतिलिपि बनाई और संवाद बक्से में चिपकाया। इसके अलावा स्क्रिप्ट ने स्वतंत्र रूप से काम किया।

एफ़टीपी नेटवर्क उपकरण की नकल।


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

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("ftp 192.168.1.1\r")
	crt.Screen.WaitForString("Name")
	crt.Screen.Send("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("binary\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("put S5720LI-V200R011SPH016.pat\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("quit\r")
	crt.Screen.Synchronous = False
main()


स्क्रिप्ट का उपयोग करके उपयोगकर्ता नाम / पासवर्ड दर्ज करना


एक ग्राहक पर, नेटवर्क उपकरण तक पहुंच सीधे बंद थी। आप पहले डिफॉल्ट गेटवे से कनेक्ट करके उपकरण का उपयोग कर सकते हैं, और फिर उससे जुड़े उपकरणों से कनेक्ट कर सकते हैं। कनेक्ट करने के लिए, हमने IOS / सॉफ़्टवेयर उपकरण में निर्मित ssh क्लाइंट का उपयोग किया। तदनुसार, कंसोल में उपयोगकर्ता नाम और पासवर्ड का अनुरोध किया गया था। नीचे दी गई स्क्रिप्ट का उपयोग करते हुए, उपयोगकर्ता नाम और पासवर्ड स्वचालित रूप से दर्ज किए गए थे:

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("snmpadmin\r")
	crt.Screen.WaitForString("assword:")
	crt.Screen.Send("Password\r")
	crt.Screen.Synchronous = False
main()

नोट: स्क्रिप्ट 2 थी। एक व्यवस्थापक खाते के लिए, दूसरा ई-अकाउंट के लिए।

स्क्रिप्ट निष्पादन के दौरान डेटा को सीधे संलग्न करने की क्षमता वाली एक स्क्रिप्ट।


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

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("Zdes-mogla-bit-vasha-reklama\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("show run | inc ip route\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("conf t\r")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("end\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("copy run sta\r")
	crt.Screen.WaitForString("[startup-config]?")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("exit\r")
	crt.Screen.Synchronous = False
main()

इस स्क्रिप्ट में, लाइन में: crt.Screen.Send ("आईपी मार्ग 10.10.10.8 255.255.255.252 IP), गेटवे का आईपी पता नहीं जोड़ा गया है और कोई गाड़ी वापसी चरित्र नहीं है। स्क्रिप्ट वर्णों के साथ अगली पंक्ति की प्रतीक्षा कर रही है "(विन्यास) #" प्रदर्शित होने के लिए। ये वर्ण आईपी पते में प्रवेश करने और दर्ज करने के बाद दिखाई दिए।

निष्कर्ष:


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

माउस का उपयोग करके स्क्रिप्ट (उपयोगकर्ता नाम + पासवर्ड के साथ) चलाना आम तौर पर नोटपैड से उपयोगकर्ता नाम और पासवर्ड की नकल करने से तेज होता है। लेकिन सुरक्षा के दृष्टिकोण से सुरक्षित नहीं है।
स्क्रिप्ट का उपयोग करते समय एक और (वास्तविक) उदाहरण: आपके पास नेटवर्क उपकरण तक सीधी पहुंच नहीं है। लेकिन सभी नेटवर्क उपकरण (मॉनिटरिंग सिस्टम में जोड़ें, अतिरिक्त उपयोगकर्ता नाम / पासवर्ड / snmpv3username / पासवर्ड को कॉन्फ़िगर करने के लिए) को कॉन्फ़िगर करने की आवश्यकता है। जब आप कोर स्विच पर जाते हैं तो वहां पहुंच होती है, इसमें SSH से लेकर अन्य उपकरण खुले होते हैं। आप Ansible का उपयोग क्यों नहीं कर सकते हैं। - क्योंकि हम नेटवर्क उपकरणों पर अनुमत एक साथ सत्रों की संख्या (लाइन vty 0 4, उपयोगकर्ता-इंटरफ़ेस vty 0 4) पर एक सीमा में चलते हैं (एक और सवाल यह है कि एक ही SSH पहले हॉप के साथ Ansible में विभिन्न उपकरणों को कैसे शुरू किया जाए)।

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

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

केस स्टडी: कंसोल पोर्ट के माध्यम से एक नए स्विच पर प्रारंभिक सेटिंग्स:

ए। मैंने डिवाइस में कंसोल केबल डाला।
B. स्क्रिप्ट का शुभारंभ किया
। बी ने स्क्रिप्ट को पूरा करने के लिए इंतजार किया
। अगले डिवाइस के लिए कंसोल केबल आकर्षित किया।
D. यदि स्विच अंतिम नहीं है,

तो स्क्रिप्ट के परिणामों के आधार पर चरण बी पर जाएँ:

  • उपकरण में एक प्रारंभिक पासवर्ड है।
  • उपयोगकर्ता नाम दर्ज किया गया
  • डिवाइस के लिए एक अद्वितीय आईपी पता दर्ज किया।

PS मुझे ऑपरेशन दोहराना पड़ा। क्योंकि डिफ़ॉल्ट रूप से ssh को कॉन्फ़िगर / बंद नहीं किया गया था। (हां, यह मेरी गलती है।)

उपयोग किए गए स्रोत।


1. स्क्रिप्ट बनाने के बारे में
2. स्क्रिप्ट के उदाहरण

परिशिष्ट 1: लिपियों के उदाहरण।



एक लंबी स्क्रिप्ट का एक उदाहरण, दो अनुरोधों के साथ: Hostname और IP पता। यह कंसोल (9600 बॉड) के माध्यम से प्रीसेटिंग उपकरण के लिए बनाया गया था। और नेटवर्क से उपकरणों का कनेक्शन तैयार करने के लिए भी।

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.Send("sys\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1\r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip address\r")
	crt.Screen.Send("shutdown\r")
	crt.Screen.Send("vlan 100\r")
	crt.Screen.Send(" description description1\r")
	crt.Screen.Send(" name description1\r")
	crt.Screen.Send("vlan 110\r")
	crt.Screen.Send(" description description2\r")
	crt.Screen.Send(" name description2\r")
	crt.Screen.Send("vlan 120\r")
	crt.Screen.Send(" description description3\r")
	crt.Screen.Send(" name description3\r")
	crt.Screen.Send("vlan 130\r")
	crt.Screen.Send(" description description4\r")
	crt.Screen.Send(" name description4\r")
	crt.Screen.Send("vlan 140\r")
	crt.Screen.Send(" description description5\r")
	crt.Screen.Send(" name description5\r")
	crt.Screen.Send("vlan 150\r")
	crt.Screen.Send(" description description6\r")
	crt.Screen.Send(" name description6\r")
	crt.Screen.Send("vlan 160\r")
	crt.Screen.Send(" description description7\r")
	crt.Screen.Send(" name description7\r")
	crt.Screen.Send("vlan 170\r")
	crt.Screen.Send(" description description8\r")
	crt.Screen.Send(" name description8\r")               
	crt.Screen.Send("vlan 180\r")
	crt.Screen.Send(" description description9\r")
	crt.Screen.Send(" name description9\r")
	crt.Screen.Send("vlan 200\r")
	crt.Screen.Send(" description description10\r")
	crt.Screen.Send(" name description10\r")
	crt.Screen.Send("vlan 300\r")
	crt.Screen.Send(" description description11\r")
	crt.Screen.Send(" name description11\r")
	crt.Screen.Send("quit\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configuration\r")
	crt.Screen.Send("region-name desc\r")
	crt.Screen.Send("active region-configuration\r")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("stp instance 0 priority 57344\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Users\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybrid\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021p\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printers\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type access\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021p\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplink\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunk\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134\r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254\r")
	crt.Screen.Send("interface Vlanif 200\r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("-Vlanif200]")
        hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
        ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 24\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

ऐसी लिपियों की आमतौर पर जरूरत नहीं होती है, लेकिन उपकरणों की मात्रा 15 होती है। सेटअप को गति देने की अनुमति है। हार्डवेयर को और कॉन्फ़िगर करना सिक्योरसीआरटी कमांड विंडो के साथ तेज था।

Ssh के लिए खाता सेटअप।


एक और उदाहरण। कंसोल के माध्यम से भी सेटअप करें।

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.WaitForString(">")
	crt.Screen.Send("sys\r")
	crt.Screen.Send("stelnet server enable\r")
	crt.Screen.Send("aaa\r")
	crt.Screen.Send("local-user admin service-type terminal ftp http ssh\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("user-interface vty 0 4\r")
	crt.Screen.Send("authentication-mode aaa\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Synchronous = False
main()


SecureCRT के बारे में:
: 99$ ( SecureCRT )

1 , ( ), .

Mac OS X Windows.

( )
Command Window
Serial/Telnet/SSH1/SSH2/Shell

All Articles