స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ

నెట్‌వర్క్ ఇంజనీర్లు తరచుగా నోట్‌ప్యాడ్ నుండి కన్సోల్‌కు కొన్ని శకలాలను కాపీ/పేస్ట్ చేసే పనిని ఎదుర్కొంటారు. మీరు సాధారణంగా అనేక పారామితులను కాపీ చేయాలి: వినియోగదారు పేరు/పాస్‌వర్డ్ మరియు మరేదైనా. స్క్రిప్ట్‌ల ఉపయోగం ఈ ప్రక్రియను వేగవంతం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. కానీ స్క్రిప్ట్‌ను వ్రాయడం మరియు స్క్రిప్ట్‌ను అమలు చేయడం అనే పనులు మాన్యువల్ కాన్ఫిగరేషన్ కంటే మొత్తం తక్కువ సమయం పడుతుంది, లేకపోతే స్క్రిప్ట్‌లు పనికిరావు.

ఈ వ్యాసం దేనికి? ఈ కథనం ఫాస్ట్ స్టార్ట్ సిరీస్‌లోనిది మరియు బహుళ పరికరాల్లో పరికరాలను (ఒకే పని) సెటప్ చేసేటప్పుడు నెట్‌వర్క్ ఇంజనీర్‌ల సమయాన్ని ఆదా చేయడం లక్ష్యంగా పెట్టుకుంది. SecureCRT సాఫ్ట్‌వేర్ మరియు అంతర్నిర్మిత స్క్రిప్ట్ ఎగ్జిక్యూషన్ ఫంక్షనాలిటీని ఉపయోగిస్తుంది.

కంటెంట్

పరిచయం

SecureCRT ప్రోగ్రామ్ బాక్స్ వెలుపల అంతర్నిర్మిత స్క్రిప్ట్ ఎగ్జిక్యూషన్ మెకానిజంను కలిగి ఉంది. టెర్మినల్ స్క్రిప్ట్‌లు దేనికి?

  • ఆటోమేటెడ్ I/O, మరియు కనిష్ట I/O ధ్రువీకరణ.
  • సాధారణ పనుల అమలును వేగవంతం చేయండి - పరికరాల సెట్టింగుల మధ్య విరామాలను తగ్గించడం. (హార్డ్‌వేర్‌కు 3 లేదా అంతకంటే ఎక్కువ కమాండ్ శకలాలు వర్తింపజేయడంతోపాటు, అదే హార్డ్‌వేర్‌పై కాపీ/పాస్ట్ చర్యలను నిర్వహించడానికి సమయం కారణంగా ఏర్పడే పాజ్‌ల వాస్తవ తగ్గింపు.)

ఈ పత్రం విధులను కవర్ చేస్తుంది:

  • సాధారణ స్క్రిప్ట్‌ల సృష్టి.
  • SecureCRTలో స్క్రిప్ట్‌లను అమలు చేస్తోంది.
  • సాధారణ మరియు అధునాతన స్క్రిప్ట్‌లను ఉపయోగించే ఉదాహరణలు. (నిజ జీవితం నుండి ప్రాక్టీస్ చేయండి.)

సాధారణ స్క్రిప్ట్‌ల సృష్టి.

సరళమైన స్క్రిప్ట్‌లు కేవలం రెండు ఆదేశాలను మాత్రమే ఉపయోగిస్తాయి, Send మరియు WaitForString. ఈ కార్యాచరణ 90% (లేదా అంతకంటే ఎక్కువ) చేసిన పనులకు సరిపోతుంది.

స్క్రిప్ట్‌లు పైథాన్, JS, VBS (విజువల్ బేసిక్), పెర్ల్ మొదలైన వాటిలో పని చేయగలవు.

పైథాన్

# $language = "Python"
# $interface = "1.0"
def main():
  crt.Screen.Synchronous = True
  crt.Screen.Send("r")
  crt.Screen.WaitForString("name")
  crt.Screen.Send("adminr")
  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 మెనూ => స్క్రిప్ట్ => రికార్డింగ్ స్క్రిప్ట్‌ను ప్రారంభించండి
బి. కన్సోల్‌తో చర్యలను అమలు చేయండి (CLIలో కాన్ఫిగరేషన్ దశలను అమలు చేయండి).
వి. స్క్రిప్ట్ రాయడం పూర్తి చేయండి:
SecureCRT మెనూ => స్క్రిప్ట్ => స్క్రిప్ట్ రికార్డింగ్ ఆపివేయి...
స్క్రిప్ట్ ఫైల్‌ను సేవ్ చేయండి.

అమలు చేయబడిన ఆదేశాలు మరియు సేవ్ చేయబడిన స్క్రిప్ట్ యొక్క ఉదాహరణ:

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ

SecureCRTలో స్క్రిప్ట్‌లను అమలు చేస్తోంది.

స్క్రిప్ట్‌ని సృష్టించిన/సవరించాక, సహజమైన ప్రశ్న తలెత్తుతుంది: స్క్రిప్ట్‌ను ఎలా దరఖాస్తు చేయాలి?
అనేక మార్గాలు ఉన్నాయి:

  • స్క్రిప్ట్ మెను నుండి మాన్యువల్‌గా అమలవుతోంది
  • కనెక్షన్ తర్వాత ఆటోమేటిక్ ప్రారంభం (లాగాన్ స్క్రిప్ట్)
  • స్క్రిప్ట్ ఉపయోగించకుండా ఆటోమేటిక్ లాగిన్
  • SecureCRTలోని బటన్‌తో మాన్యువల్‌గా ట్రిగ్గర్ చేయడం (ఒక బటన్ ఇంకా సృష్టించబడలేదు మరియు SecureCRTకి జోడించబడింది)

స్క్రిప్ట్ మెను నుండి మాన్యువల్‌గా అమలవుతోంది

SecureCRT మెనూ => స్క్రిప్ట్ => రన్…
- చివరి 10 స్క్రిప్ట్‌లు గుర్తుంచుకోబడ్డాయి మరియు త్వరిత లాంచ్ కోసం అందుబాటులో ఉన్నాయి:
SecureCRT మెను => స్క్రిప్ట్ => 1 "స్క్రిప్ట్ ఫైల్ పేరు"
SecureCRT మెను => స్క్రిప్ట్ => 2 "స్క్రిప్ట్ ఫైల్ పేరు"
SecureCRT మెను => స్క్రిప్ట్ => 3 "స్క్రిప్ట్ ఫైల్ పేరు"
SecureCRT మెను => స్క్రిప్ట్ => 4 "స్క్రిప్ట్ ఫైల్ పేరు"
SecureCRT మెను => స్క్రిప్ట్ => 5 "స్క్రిప్ట్ ఫైల్ పేరు"

కనెక్షన్ తర్వాత ఆటోమేటిక్ ప్రారంభం (లాగాన్ స్క్రిప్ట్)

సేవ్ చేయబడిన సెషన్ కోసం ఆటోమేటిక్ లాగింగ్ స్క్రిప్ట్ సెట్టింగ్‌లు కాన్ఫిగర్ చేయబడ్డాయి: కనెక్షన్ => లాగిన్ చర్యలు => లాగిన్ స్క్రిప్ట్

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ

స్క్రిప్ట్ ఉపయోగించకుండా ఆటోమేటిక్ లాగిన్

SecureCRT యొక్క అంతర్నిర్మిత కార్యాచరణను మాత్రమే ఉపయోగించి, స్క్రిప్ట్‌ను వ్రాయకుండా పాస్‌వర్డ్ యొక్క వినియోగదారు పేరును స్వయంచాలకంగా నమోదు చేయడం సాధ్యపడుతుంది. కనెక్షన్ సెట్టింగ్‌లలో “కనెక్షన్” => లాగాన్ చర్యలు => లాగాన్‌ను ఆటోమేట్ చేయండి - మీరు అనేక బండిల్‌లను పూరించాలి - అంటే జతలు: “ఉహించిన వచనం” + “ఈ వచనానికి అక్షరాలు పంపబడ్డాయి” అలాంటి అనేక జతల ఉండవచ్చు. (ఉదాహరణ: 1వ జత వినియోగదారు పేరు కోసం వేచి ఉంది, రెండవది పాస్‌వర్డ్ కోసం వేచి ఉంది, మూడవది ప్రివిలేజ్డ్ మోడ్ ప్రాంప్ట్ కోసం వేచి ఉంది, ప్రివిలేజ్డ్ మోడ్ పాస్‌వర్డ్ కోసం నాల్గవ జత.)

సిస్కో ASAలో స్వయంచాలక లాగిన్ యొక్క ఉదాహరణ:

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ

SecureCRTలోని బటన్‌తో మాన్యువల్‌గా ట్రిగ్గర్ చేయడం (ఒక బటన్ ఇంకా సృష్టించబడలేదు మరియు SecureCRTకి జోడించబడింది)

SecureCRTలో, మీరు ఒక బటన్‌కు స్క్రిప్ట్‌ను కేటాయించవచ్చు. ఈ ప్రయోజనం కోసం ప్రత్యేకంగా సృష్టించబడిన ప్యానెల్‌కు బటన్ జోడించబడింది.

ఎ. ఇంటర్‌ఫేస్‌కు ప్యానెల్ జోడించడం: SecureCRT మెనూ => వీక్షణ => బటన్ బార్
బి. ప్యానెల్‌కు బటన్‌ను జోడించి, స్క్రిప్ట్‌ను జోడించండి. – బటన్ బార్‌పై కుడి-క్లిక్ చేసి, సందర్భ మెను నుండి “కొత్త బటన్…” ఎంచుకోండి.
వి. "మ్యాప్ బటన్" డైలాగ్ బాక్స్‌లో, "యాక్షన్" ఫీల్డ్‌లో, "రన్ స్క్రిప్ట్" చర్య (ఫంక్షన్) ఎంచుకోండి.
బటన్ కోసం శీర్షికను పేర్కొనండి. బటన్ చిహ్నం కోసం రంగు. సరే క్లిక్ చేయడం ద్వారా సెట్టింగ్‌లను పూర్తి చేయండి.

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ

గమనిక:

బటన్లతో ప్యానెల్ చాలా ఉపయోగకరమైన కార్యాచరణ.

1. నిర్దిష్ట సెషన్‌కి లాగిన్ అయినప్పుడు, డిఫాల్ట్‌గా ఈ ట్యాబ్‌కు ఏ ప్యానెల్ తెరవాలో పేర్కొనడం సాధ్యమవుతుంది.

2. పరికరాలతో ప్రామాణిక చర్యల కోసం ముందే నిర్వచించిన చర్యలను సెట్ చేయడం సాధ్యపడుతుంది: షో షో వెర్షన్, షో రన్నింగ్-కాన్ఫిగరేషన్, సేవ్ కాన్ఫిగరేషన్.

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ
ఈ బటన్‌లకు స్క్రిప్ట్ జోడించబడలేదు. యాక్షన్ లైన్ మాత్రమే:

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ
సెట్టింగ్ - సెషన్‌కు మారినప్పుడు, సెషన్ సెట్టింగ్‌లలో బటన్‌లతో అవసరమైన ప్యానెల్ తెరవబడుతుంది:

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ
కస్టమర్ లాగిన్ కోసం వ్యక్తిగత స్క్రిప్ట్‌లను సెటప్ చేయడం మరియు విక్రేత కోసం తరచుగా ఆదేశాలతో ప్యానెల్‌కి వెళ్లడం అర్ధమే.

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ
మీరు గో సిస్కో బటన్‌ను నొక్కినప్పుడు, ప్యానెల్ సిస్కో బటన్ బార్‌కి మారుతుంది.

స్క్రిప్ట్‌లను ఉపయోగించి SecureCRTలో ఆటోమేట్ ఎంట్రీ

సాధారణ మరియు అధునాతన స్క్రిప్ట్‌లను ఉపయోగించే ఉదాహరణలు. (నిజ జీవితం నుండి ప్రాక్టీస్ చేయండి.)

దాదాపు అన్ని సందర్భాలకు సాధారణ స్క్రిప్ట్‌లు సరిపోతాయి. కానీ ఒకసారి నేను స్క్రిప్ట్‌ను కొద్దిగా క్లిష్టతరం చేయవలసి వచ్చింది - పనిని వేగవంతం చేయడానికి. ఈ సంక్లిష్టత వినియోగదారు నుండి డైలాగ్ బాక్స్‌లో అదనపు డేటాను అభ్యర్థించింది.

డైలాగ్ బాక్స్ ఉపయోగించి వినియోగదారు నుండి డేటాను అభ్యర్థిస్తోంది

నేను డేటా అభ్యర్థన స్క్రిప్ట్‌లో 2ని కలిగి ఉన్నాను. ఇది హోస్ట్ పేరు మరియు IP చిరునామా యొక్క 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(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

స్క్రిప్ట్‌లోని ఈ భాగం హోస్ట్ పేరు మరియు చివరి ఆక్టెట్ నుండి సంఖ్యలను కోరింది. 15 పరికరాలు ఉన్నాయి కాబట్టి. మరియు డేటా పట్టికలో ప్రదర్శించబడింది, ఆపై నేను పట్టిక నుండి విలువలను కాపీ చేసి డైలాగ్ బాక్స్‌లలో అతికించాను. ఇంకా స్క్రిప్ట్ స్వతంత్రంగా పనిచేసింది.

FTP నెట్‌వర్క్ పరికరాలకు కాపీ చేయడం.

ఈ స్క్రిప్ట్ నా కమాండ్ విండో (షెల్)ను ప్రారంభించింది మరియు FTP ద్వారా డేటాను కాపీ చేసింది. ముగింపులో, సెషన్‌ను మూసివేయండి. దీని కోసం నోట్‌ప్యాడ్‌ని ఉపయోగించడం అసాధ్యం, ఎందుకంటే కాపీ చేయడానికి చాలా సమయం పడుతుంది మరియు FTP బఫర్‌లోని డేటా ఎక్కువ కాలం నిల్వ చేయబడదు:

# $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.1r")
	crt.Screen.WaitForString("Name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("binaryr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("put S5720LI-V200R011SPH016.patr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("quitr")
	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("snmpadminr")
	crt.Screen.WaitForString("assword:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Synchronous = False
main()

గమనిక: 2 స్క్రిప్ట్‌లు ఉన్నాయి. ఒకటి అడ్మినిస్ట్రేటర్ ఖాతా కోసం, రెండవది eSIGHT ఖాతా కోసం.

స్క్రిప్ట్ అమలు సమయంలో నేరుగా డేటాను జోడించగల సామర్థ్యంతో స్క్రిప్ట్.

అన్ని నెట్‌వర్క్ పరికరాలపై స్థిరమైన మార్గాన్ని జోడించడం పని. కానీ ప్రతి పరికరంలో ఇంటర్నెట్‌కి గేట్‌వే భిన్నంగా ఉంటుంది (మరియు ఇది డిఫాల్ట్ గేట్‌వేకి భిన్నంగా ఉంటుంది). కింది స్క్రిప్ట్ రౌటింగ్ పట్టికను ప్రదర్శించింది, కాన్ఫిగరేషన్ మోడ్‌లోకి ప్రవేశించింది, చివరి వరకు ఆదేశాన్ని వ్రాయలేదు (ఇంటర్నెట్‌కు గేట్‌వే యొక్క IP చిరునామా) - నేను ఈ భాగాన్ని జోడించాను. నేను ఎంటర్ నొక్కిన తర్వాత, స్క్రిప్ట్ ఆదేశాన్ని అమలు చేయడం కొనసాగించింది.

# $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-reklamar")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("show run | inc ip router")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("conf tr")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("endr")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("copy run star")
	crt.Screen.WaitForString("[startup-config]?")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("exitr")
	crt.Screen.Synchronous = False
main()

ఈ స్క్రిప్ట్‌లో, లైన్‌లో: crt.Screen.Send("ip రూట్ 10.10.10.8 255.255.255.252 ") గేట్‌వే యొక్క IP చిరునామా జోడించబడలేదు మరియు క్యారేజ్ రిటర్న్ క్యారెక్టర్ లేదు. స్క్రిప్ట్ "(config) #" అక్షరాలతో తదుపరి పంక్తి కోసం వేచి ఉంది నేను ip చిరునామాను నమోదు చేసి ఎంటర్ చేసిన తర్వాత ఈ అక్షరాలు కనిపించాయి.

తీర్మానం:

స్క్రిప్ట్‌ను వ్రాసేటప్పుడు మరియు దానిని అమలు చేస్తున్నప్పుడు, నియమాన్ని తప్పక అనుసరించాలి: స్క్రిప్ట్‌ను వ్రాయడం మరియు స్క్రిప్ట్‌ను అమలు చేయడం కోసం సమయం సైద్ధాంతికంగా అదే పనిని మాన్యువల్‌గా చేయడానికి (నోట్‌ప్యాడ్ నుండి కాపీ / పేస్ట్ చేయడం, రాయడం మరియు డీబగ్గింగ్ చేయడం) కంటే ఎక్కువ సమయం ఉండకూడదు. పైథాన్ స్క్రిప్ట్ రాయడం మరియు డీబగ్గింగ్ చేయడం కోసం ఒక ప్లేబుక్). అంటే, స్క్రిప్ట్ యొక్క ఉపయోగం సమయాన్ని ఆదా చేయాలి మరియు ప్రక్రియల యొక్క వన్-టైమ్ ఆటోమేషన్‌పై సమయాన్ని వృథా చేయకూడదు (అనగా, స్క్రిప్ట్ ప్రత్యేకంగా ఉన్నప్పుడు మరియు ఎక్కువ పునరావృతం ఉండదు). కానీ స్క్రిప్ట్ ప్రత్యేకమైనది మరియు స్క్రిప్ట్‌తో ఆటోమేషన్ మరియు స్క్రిప్ట్‌ను వ్రాయడం / డీబగ్గింగ్ చేయడం ఏదైనా ఇతర మార్గంలో చేయడం కంటే తక్కువ సమయం తీసుకుంటే (అన్సిబుల్, కమాండ్ విండో), అప్పుడు స్క్రిప్ట్ ఉత్తమ పరిష్కారం.
స్క్రిప్ట్‌ను డీబగ్ చేస్తోంది. స్క్రిప్ట్ క్రమంగా పెరుగుతుంది, డీబగ్గింగ్ మొదటి, రెండవ, మూడవ పరికరంలో రన్-ఇన్‌లో జరుగుతుంది మరియు నాల్గవది నాటికి స్క్రిప్ట్ పూర్తిగా పని చేస్తుంది.

మౌస్‌తో స్క్రిప్ట్‌ను (యూజర్‌నేమ్+పాస్‌వర్డ్‌ని నమోదు చేయడం ద్వారా) అమలు చేయడం సాధారణంగా నోట్‌ప్యాడ్ నుండి వినియోగదారు పేరు మరియు పాస్‌వర్డ్‌ను కాపీ చేయడం కంటే వేగంగా ఉంటుంది. కానీ భద్రతా కోణం నుండి సురక్షితం కాదు.
స్క్రిప్ట్‌ను ఉపయోగిస్తున్నప్పుడు మరొక (నిజమైన) ఉదాహరణ: మీకు నెట్‌వర్క్ పరికరాలకు ప్రత్యక్ష ప్రాప్యత లేదు. కానీ అన్ని నెట్‌వర్క్ పరికరాలను కాన్ఫిగర్ చేయాల్సిన అవసరం ఉంది (దీనిని పర్యవేక్షణ సిస్టమ్‌లోకి తీసుకురండి, అదనపు వినియోగదారు పేరు/పాస్‌వర్డ్/snmpv3username/passwordని కాన్ఫిగర్ చేయండి). మీరు కోర్ స్విచ్‌కి వెళ్లినప్పుడు యాక్సెస్ ఉంది, దాని నుండి మీరు ఇతర పరికరాలకు SSHని తెరుస్తారు. ఎందుకు మీరు Ansible ఉపయోగించలేరు. - ఎందుకంటే మేము నెట్‌వర్క్ పరికరాలపై (లైన్ vty 0 4, వినియోగదారు-ఇంటర్‌ఫేస్ vty 0 4) అనుమతించబడిన ఏకకాల సెషన్‌ల సంఖ్యపై పరిమితిని కలిగి ఉన్నాము (అదే SSH మొదటి హాప్‌తో Ansibleలో వివిధ పరికరాలను ఎలా ప్రారంభించాలనేది మరొక ప్రశ్న).

స్క్రిప్ట్ సుదీర్ఘ కార్యకలాపాల సమయంలో సమయాన్ని తగ్గిస్తుంది - ఉదాహరణకు, FTP ద్వారా ఫైల్‌లను కాపీ చేయడం. కాపీ చేయడం పూర్తయిన తర్వాత, స్క్రిప్ట్ వెంటనే పని చేయడం ప్రారంభిస్తుంది. ఒక వ్యక్తి కాపీ చేయడం ముగింపును చూడాలి, ఆపై కాపీ చేయడం ముగింపును గ్రహించి, ఆపై తగిన ఆదేశాలను నమోదు చేయండి. స్క్రిప్ట్ నిష్పక్షపాతంగా వేగంగా చేస్తుంది.

సామూహిక డేటా డెలివరీ సాధనాలను ఉపయోగించడం అసాధ్యమైన చోట స్క్రిప్ట్‌లు వర్తిస్తాయి: కన్సోల్. లేదా పరికరాల కోసం కొంత డేటా ప్రత్యేకంగా ఉన్నప్పుడు: హోస్ట్ పేరు, నిర్వహణ ip చిరునామా. లేదా ప్రోగ్రామ్‌ను వ్రాసేటప్పుడు మరియు డీబగ్గింగ్ చేసేటప్పుడు స్క్రిప్ట్ నడుస్తున్నప్పుడు పరికరాల నుండి అందుకున్న డేటాను జోడించడం కంటే చాలా కష్టం. - ప్రతి పరికరానికి ఇంటర్నెట్ ప్రొవైడర్ యొక్క స్వంత IP చిరునామా ఉన్నప్పుడు, మార్గాన్ని సూచించడానికి స్క్రిప్ట్‌తో ఒక ఉదాహరణ. (నా సహోద్యోగులు అలాంటి స్క్రిప్ట్‌లను వ్రాసారు - DMVPN మాట్లాడినప్పుడు 3 కంటే ఎక్కువ. DMVPN సెట్టింగ్‌లను మార్చడం అవసరం).

కేస్ స్టడీ: కన్సోల్ పోర్ట్‌లను ఉపయోగించి కొత్త స్విచ్‌లో ప్రారంభ సెట్టింగ్‌లను కాన్ఫిగర్ చేయడం:

ఎ. పరికరానికి కన్సోల్ కేబుల్ ప్లగ్ చేయబడింది.
బి. స్క్రిప్ట్‌ని అమలు చేయండి
బి. స్క్రిప్ట్ అమలు కోసం వేచి ఉంది
D. కన్సోల్ కేబుల్‌ను తదుపరి పరికరానికి ప్లగ్ చేయబడింది.
E. స్విచ్ చివరిది కాకపోతే, దశ Bకి వెళ్లండి.

స్క్రిప్ట్ పని ఫలితంగా:

  • ప్రారంభ పాస్‌వర్డ్ పరికరాలపై సెట్ చేయబడింది.
  • వినియోగదారు పేరు నమోదు చేయబడింది
  • పరికరం యొక్క ప్రత్యేక IP చిరునామా నమోదు చేయబడింది.

PS ఆపరేషన్ పునరావృతం చేయాల్సి వచ్చింది. ఎందుకంటే డిఫాల్ట్ ssh కాన్ఫిగర్ చేయబడలేదు/డిసేబుల్ చెయ్యబడలేదు. (అవును, ఇది నా తప్పు.)

ఉపయోగించిన మూలాలు.

1. స్క్రిప్ట్‌లను సృష్టించడం గురించి
2. స్క్రిప్ట్ ఉదాహరణలు

అనుబంధం 1: నమూనా స్క్రిప్ట్‌లు.


రెండు ప్రశ్నలతో కూడిన పొడవైన స్క్రిప్ట్‌కు ఉదాహరణ: హోస్ట్ పేరు మరియు 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("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Send("sysr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip addressr")
	crt.Screen.Send("shutdownr")
	crt.Screen.Send("vlan 100r")
	crt.Screen.Send(" description description1r")
	crt.Screen.Send(" name description1r")
	crt.Screen.Send("vlan 110r")
	crt.Screen.Send(" description description2r")
	crt.Screen.Send(" name description2r")
	crt.Screen.Send("vlan 120r")
	crt.Screen.Send(" description description3r")
	crt.Screen.Send(" name description3r")
	crt.Screen.Send("vlan 130r")
	crt.Screen.Send(" description description4r")
	crt.Screen.Send(" name description4r")
	crt.Screen.Send("vlan 140r")
	crt.Screen.Send(" description description5r")
	crt.Screen.Send(" name description5r")
	crt.Screen.Send("vlan 150r")
	crt.Screen.Send(" description description6r")
	crt.Screen.Send(" name description6r")
	crt.Screen.Send("vlan 160r")
	crt.Screen.Send(" description description7r")
	crt.Screen.Send(" name description7r")
	crt.Screen.Send("vlan 170r")
	crt.Screen.Send(" description description8r")
	crt.Screen.Send(" name description8r")               
	crt.Screen.Send("vlan 180r")
	crt.Screen.Send(" description description9r")
	crt.Screen.Send(" name description9r")
	crt.Screen.Send("vlan 200r")
	crt.Screen.Send(" description description10r")
	crt.Screen.Send(" name description10r")
	crt.Screen.Send("vlan 300r")
	crt.Screen.Send(" description description11r")
	crt.Screen.Send(" name description11r")
	crt.Screen.Send("quitr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configurationr")
	crt.Screen.Send("region-name descr")
	crt.Screen.Send("active region-configurationr")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("stp instance 0 priority 57344r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Usersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybridr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type accessr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplinkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254r")
	crt.Screen.Send("interface Vlanif 200r")
	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(" 24r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

ఇటువంటి స్క్రిప్ట్‌లు సాధారణంగా అవసరం లేదు, కానీ పరికరాల మొత్తం 15 PC లు. వేగవంతమైన సెటప్ అనుమతించబడింది. SecureCRT కమాండ్ విండోను ఉపయోగించి పరికరాలను సెటప్ చేయడం వేగంగా జరిగింది.

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("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString(">")
	crt.Screen.Send("sysr")
	crt.Screen.Send("stelnet server enabler")
	crt.Screen.Send("aaar")
	crt.Screen.Send("local-user admin service-type terminal ftp http sshr")
	crt.Screen.Send("quitr")
	crt.Screen.Send("user-interface vty 0 4r")
	crt.Screen.Send("authentication-mode aaar")
	crt.Screen.Send("quitr")
	crt.Screen.Send("quitr")
	crt.Screen.Synchronous = False
main()


SecureCRT గురించి:చెల్లింపు సాఫ్ట్‌వేర్: $99 నుండి (అత్యల్ప ధర ఒక సంవత్సరానికి SecureCRT కోసం మాత్రమే)
అధికారిక వెబ్సైట్
సాఫ్ట్‌వేర్ లైసెన్స్‌ని సపోర్ట్‌తో (నవీకరించడం కోసం) ఒకసారి కొనుగోలు చేస్తారు, తర్వాత సాఫ్ట్‌వేర్ ఈ లైసెన్స్‌తో అపరిమిత సమయం వరకు ఉపయోగించబడుతుంది.

Mac OS X మరియు Windows ఆపరేటింగ్ సిస్టమ్‌లలో పని చేస్తుంది.

స్క్రిప్ట్ మద్దతు ఉంది (ఈ కథనం)
ఉన్నాయి కమాండ్ విండో
సీరియల్/టెల్నెట్/SSH1/SSH2/షెల్ ఆపరేటింగ్ సిస్టమ్

మూలం: www.habr.com