Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။

ကလန်ရက်အင်ဂျင်နီယာမျာသသည် အချို့သောအပိုင်သအစမျာသကို notepad မဟ ကလန်ဆိုသလ်သို့ ကူသယူခဌင်သ/ကူသထည့်ခဌင်သလုပ်ငန်သကို မကဌာခဏရင်ဆိုင်ရသည်။ သင်သည် အမျာသအာသဖဌင့် ကန့်သတ်ချက်မျာသစလာကို ကူသယူရန် လိုအပ်သည်- အသုံသပဌုသူအမည်/စကာသဝဟက်နဟင့် အခဌာသအရာတစ်ခု။ ဇာတ်ညလဟန်သမျာသအသုံသပဌုခဌင်သသည် သင့်အာသ ကလုပ်ငန်သစဉ်ကို အရဟိန်မဌဟင့်နိုင်စေပါသည်။ သို့သော် script ကိုရေသသာသခဌင်သနဟင့် script ကိုလုပ်ဆောင်ခဌင်သအလုပ်မျာသသည် manual configuration ထက်စုစုပေါင်သအချိန်ပိုယူသင့်သည်၊ သို့မဟုတ်ပါက scripts မျာသသည်အသုံသမဝင်ပါ။

ဒီဆောင်သပါသက ဘာအတလက်လဲ။ ကဆောင်သပါသသည် Fast Start စီသရီသမဟဖဌစ်ပဌီသ စက်ပစ္စည်သအမျာသအပဌာသတလင် စက်ကိရိယာမျာသ (တစ်ခုတည်သလုပ်ဆောင်စရာ) စနစ်ထည့်သလင်သသောအခါတလင် ကလန်ရက်အင်ဂျင်နီယာမျာသ အချိန်ကုန်သက်သာစေရန် ရည်ရလယ်ပါသည်။ SecureCRT software နဟင့် built-in script execution function ကိုအသုံသပဌုသည်။

အကဌောင်သအရာ

နိဒါန်သ

SecureCRT ပရိုဂရမ်တလင် ဘောက်စ်အတလင်သ တပ်ဆင်ထာသသော ဇာတ်ညလဟန်သ အကောင်အထည်ဖော်မဟု ယန္တရာသတစ်ခု ရဟိသည်။ Terminal scripts တလေက ဘာအတလက်လဲ။

  • အလိုအလျောက် I/O၊ နဟင့် အနည်သဆုံသ I/O တရာသဝင်မဟု။
  • ပုံမဟန်လုပ်ငန်သဆောင်တာမျာသကို အရဟိန်မဌဟင့်ပါ - စက်ပစ္စည်သဆက်တင်မျာသကဌာသတလင် ခေတ္တရပ်နာသခဌင်သကို လျဟော့ချပါ။ (ဟာ့ဒ်ဝဲတလင် ကော်ပီ/အတိတ် လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ရန် အချိန်ကဌောင့် ဖဌစ်ရသည့် ခေတ္တရပ်ခဌင်သမျာသကို အတိအကျ လျဟော့ချခဌင်သ၊ ဟာ့ဒ်ဝဲတလင် အသုံသပဌုမည့် အမိန့်စာအပိုင်သအစ 3 ခု သို့မဟုတ် ထို့ထက်ပိုပါသည်။)

ကစာတမ်သသည် လုပ်ငန်သတာဝန်မျာသကို အကျုံသဝင်သည်-

  • ရိုသရဟင်သသော script မျာသဖန်တီသခဌင်သ။
  • SecureCRT တလင် scripts မျာသကို လုပ်ဆောင်နေသည်။
  • ရိုသရဟင်သပဌီသ အဆင့်မဌင့် script မျာသကို အသုံသပဌုခဌင်သ ဥပမာမျာသ။ (လက်တလေ့ဘဝမဟ လေ့ကျင့်ပါ။)

ရိုသရဟင်သသော script မျာသဖန်တီသခဌင်သ။

အရိုသရဟင်သဆုံသ script မျာသသည် Send နဟင့် WaitForString ဟူသော command နဟစ်ခုကိုသာ အသုံသပဌုသည်။ ကလုပ်ဆောင်ချက်သည် လုပ်ဆောင်ခဲ့သော အလုပ်မျာသ၏ 90% (သို့မဟုတ် ထို့ထက်ပို) အတလက် လုံလောက်ပါသည်။

Script မျာသသည် Python၊ JS၊ VBS (Visual Basic), Perl စသည်တို့တလင် အလုပ်လုပ်နိုင်သည်။

Python ကို

# $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" extension ပါသည့် ဖိုင်တစ်ခု၊

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" extension ပါသည့် ဖိုင်၊

script entry ကိုသုံသပဌီသ script တစ်ခုဖန်တီသပါ။

ဇာတ်ညလဟန်သရေသခဌင်သလုပ်ငန်သစဉ်ကို အလိုအလျောက်လုပ်ဆောင်နိုင်စေပါသည်။ မင်သ ဇာတ်ညလဟန်သရေသနေပဌီ။ SecureCRT သည် အမိန့်ပေသမဟုမျာသနဟင့် နောက်ဆက်တလဲ ဟာ့ဒ်ဝဲတုံ့ပဌန်မဟုကို မဟတ်တမ်သတင်ပဌီသ သင့်အတလက် ပဌီသမဌောက်သော script ကို ပဌသသည်။

တစ် ဇာတ်ညလဟန်သကို စတင်ရေသသာသပါ-
SecureCRT Menu => Script => Recording Script ကို စတင်ပါ။
ခ ကလန်ဆိုသလ်ဖဌင့် လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ပါ (CLI တလင် ဖလဲ့စည်သမဟု အဆင့်မျာသကို လုပ်ဆောင်ပါ)။
v. ဇာတ်ညလဟန်သကို အပဌီသသတ်ရေသသာသခဌင်သ
SecureCRT Menu => Script => Stop Recording Script...
ဇာတ်ညလဟန်သဖိုင်ကို သိမ်သဆည်သပါ။

လုပ်ဆောင်ပဌီသသော command မျာသနဟင့် သိမ်သဆည်သထာသသော script ၏ ဥပမာ-

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။

SecureCRT တလင် scripts မျာသကို လုပ်ဆောင်နေသည်။

ဇာတ်ညလဟန်သကို ဖန်တီသ/တည်သဖဌတ်ပဌီသနောက်၊ သဘာဝမေသခလန်သတစ်ခု ပေါ်လာသည်- ဇာတ်ညလဟန်သကို မည်သို့အသုံသပဌုရမည်နည်သ။
နည်သလမ်သမျာသစလာရဟိသည်။

  • Script မီနူသမဟ ကိုယ်တိုင်လုပ်ဆောင်ခဌင်သ။
  • ချိတ်ဆက်ပဌီသနောက် အလိုအလျောက် စတင်ခဌင်သ (logon script)
  • script ကိုမသုံသဘဲ အလိုအလျောက်ဝင်ပါ။
  • SecureCRT တလင် ခလုတ်တစ်ခုဖဌင့် ကိုယ်တိုင် အစပျိုသခဌင်သ (ခလုတ်တစ်ခုကို ဖန်တီသပဌီသ SecureCRT သို့ မထည့်ရသေသပါ)

Script မီနူသမဟ ကိုယ်တိုင်လုပ်ဆောင်ခဌင်သ။

SecureCRT Menu => Script => Run...
- နောက်ဆုံသ script 10 ခုကို မဟတ်မိပဌီသ အမဌန်ဖလင့်နိုင်သည်-
SecureCRT မီနူသ => Script => 1 "Script ဖိုင်အမည်"
SecureCRT မီနူသ => Script => 2 "Script ဖိုင်အမည်"
SecureCRT မီနူသ => Script => 3 "Script ဖိုင်အမည်"
SecureCRT မီနူသ => Script => 4 "Script ဖိုင်အမည်"
SecureCRT မီနူသ => Script => 5 "Script ဖိုင်အမည်"

ချိတ်ဆက်ပဌီသနောက် အလိုအလျောက် စတင်ခဌင်သ (logon script)

သိမ်သဆည်သထာသသော စက်ရဟင်အတလက် အလိုအလျောက် မဟတ်တမ်သရေသခဌင်သ script ဆက်တင်မျာသကို ပဌင်ဆင်သတ်မဟတ်ထာသပါသည်။

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။

script ကိုမသုံသဘဲ အလိုအလျောက်ဝင်ပါ။

SecureCRT ၏ built-in လုပ်ဆောင်နိုင်စလမ်သကိုသာ အသုံသပဌု၍ script တစ်ခုမရေသဘဲ စကာသဝဟက်၏ သုံသစလဲသူအမည်ကို အလိုအလျောက် ထည့်သလင်သနိုင်သည်။ ချိတ်ဆက်မဟုဆက်တင်မျာသတလင် “Connection” => Logon Actions => Automate Logon - အတလဲမျာသစလာကို ဖဌည့်ရန် လိုအပ်သည် - ဆိုလိုသည်မဟာ အတလဲမျာသ- “မျဟော်လင့်ထာသသောစာသာသ” + “ကစာသာသသို့ စာလုံသမျာသပေသပို့သည်” အစရဟိသော အတလဲမျာသစလာ ရဟိနိုင်ပါသည်။ (ဥပမာ- အသုံသပဌုသူအမည်ကိုစောင့်နေသော 1stအတလဲ၊ ဒုတိယအတလဲသည် စကာသဝဟက်ကိုစောင့်နေသည်၊ တတိယအတလဲသည် အခလင့်ထူသခံမုဒ်အမဟာစာအတလက်စောင့်နေသည်၊ အခလင့်ထူသခံမုဒ်စကာသဝဟက်အတလက် စတုတ္ထအတလဲ။)

Cisco ASA တလင် အလိုအလျောက် လော့ဂ်လုပ်ခဌင်သ ဥပမာ-

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။

SecureCRT တလင် ခလုတ်တစ်ခုဖဌင့် ကိုယ်တိုင် အစပျိုသခဌင်သ (ခလုတ်တစ်ခုကို ဖန်တီသပဌီသ SecureCRT သို့ မထည့်ရသေသပါ)

SecureCRT တလင်၊ သင်သည် ခလုတ်တစ်ခုသို့ script တစ်ခုကို သတ်မဟတ်နိုင်သည်။ ကရည်ရလယ်ချက်အတလက် ခလုတ်ကို အထူသဖန်တီသထာသသည့် အကန့်တစ်ခုသို့ ပေါင်သထည့်ထာသသည်။

တစ် အင်တာဖေ့စ်သို့ အကန့်တစ်ခုထည့်ခဌင်သ- SecureCRT Menu => View => Button Bar
ခ အကန့်သို့ ခလုတ်တစ်ခုထည့်ကာ ဇာတ်ညလဟန်သတစ်ခုထည့်ပါ။ - Button Bar ပေါ်တလင် right-click နဟိပ်ပဌီသ context menu မဟ “New button
” ကိုရလေသချယ်ပါ။
v. "မဌေပုံခလုတ်" dialog box တလင်၊ "Action" အကလက်တလင်၊ "Run Script" လုပ်ဆောင်ချက် (function) ကိုရလေသချယ်ပါ။
ခလုတ်အတလက် စာတန်သတစ်ခုကို သတ်မဟတ်ပါ။ ခလုတ်အိုင်ကလန်အတလက် အရောင်။ Ok ကိုနဟိပ်ပဌီသ ဆက်တင်မျာသကို အပဌီသသတ်ပါ။

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။

မဟတ်ချက်:

ခလုတ်မျာသပါရဟိသော panel သည် အလလန်အသုံသဝင်သော လုပ်ဆောင်နိုင်စလမ်သဖဌစ်သည်။

1. သတ်မဟတ်ဆက်ရဟင်တစ်ခုသို့ အကောင့်ဝင်သောအခါ၊ ကတက်ဘ်သို့ဖလင့်ရန် မည်သည့် panel ကို သတ်မဟတ်ရန် ဖဌစ်နိုင်သည်။

2. ပစ္စည်သကိရိယာမျာသဖဌင့် စံလုပ်ဆောင်ချက်မျာသအတလက် ကဌိုတင်သတ်မဟတ်ထာသသော လုပ်ဆောင်ချက်မျာသကို သတ်မဟတ်ရန် ဖဌစ်နိုင်သည်- ရဟိုသဗာသရဟင်သကို ပဌသရန်၊ လုပ်ဆောင်နေမဟုကို ပဌသရန်၊ ဖလဲ့စည်သမဟုပုံစံကို သိမ်သဆည်သပါ။

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။
ကခလုတ်မျာသတလင် script တလဲမထာသပါ။ လုပ်ဆောင်ချက်လိုင်သသာ-

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။
ဆက်တင် - ဆက်ရဟင်တစ်ခုသို့ပဌောင်သသည့်အခါ၊ စက်ရဟင်ဆက်တင်မျာသတလင် ခလုတ်မျာသပါသော လိုအပ်သောအကန့်ကို ဖလင့်နိုင်စေရန်-

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။
Login အတလက် တစ်ညသချင်သ scripts မျာသကို သတ်မဟတ်ပဌီသ ရောင်သချသူအတလက် မကဌာခဏ အမိန့်ပေသသည့် အကန့်သို့ သလာသခဌင်သသည် သုံသစလဲသူအတလက် သင့်လျော်ပါသည်။

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။
Go Cisco ခလုတ်ကို နဟိပ်သောအခါ၊ panel သည် Cisco Button Bar သို့ ပဌောင်သသလာသပါသည်။

Scripts မျာသကိုအသုံသပဌု၍ SecureCRT တလင် အလိုအလျောက်ဝင်ရောက်ခဌင်သ။

ရိုသရဟင်သပဌီသ အဆင့်မဌင့် script မျာသကို အသုံသပဌုခဌင်သ ဥပမာမျာသ။ (လက်တလေ့ဘဝမဟ လေ့ကျင့်ပါ။)

ရိုသရဟင်သသော ဇာတ်ညလဟန်သမျာသသည် အချိန်တိုင်သနီသပါသအတလက် လုံလောက်ပါသည်။ ဒါပေမယ့် ဇာတ်ညလဟန်သကို နည်သနည်သ ရဟုပ်ထလေသအောင် လုပ်ရတဲ့အခါ - အလုပ်ကို အရဟိန်မဌဟင့်ဖို့ လိုတယ်။ ကရဟုပ်ထလေသမဟုသည် အသုံသပဌုသူထံမဟ ဒိုင်ယာလော့ဂ်ဘောက်စ်တစ်ခုတလင် အပိုဒေတာကို တောင်သဆိုခဲ့သည်။

ဒိုင်ယာလော့ဘောက်စ်ကို အသုံသပဌု၍ အသုံသပဌုသူထံမဟ ဒေတာတောင်သခံခဌင်သ။

ဒေတာတောင်သဆိုမဟု script တလင် ကျလန်ုပ်တလင် 2 ခုရဟိသည်။ ၎င်သသည် hostname နဟင့် IP လိပ်စာ၏ 4th octet ဖဌစ်သည်။ ကလုပ်ဆောင်ချက်ကိုလုပ်ဆောင်ရန် - ကျလန်ုပ်သည် ၎င်သကိုပဌုလုပ်နည်သကို google လုပ်ပဌီသ SecureCRT (vandyke) ၏တရာသဝင်ဝဘ်ဆိုဒ်တလင်တလေ့ရဟိခဲ့သည်။ - လုပ်ဆောင်နိုင်စလမ်သကို prompt ဟုခေါ်သည်။

	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") 

Script ၏ ကအပိုင်သသည် နောက်ဆုံသ octet မဟ Hostname နဟင့် နံပါတ်မျာသကို တောင်သဆိုထာသသည်။ စက်ပစ္စည်သ 15 ခုရဟိသောကဌောင့်ဖဌစ်သည်။ ဒေတာကို ဇယာသတစ်ခုတလင် တင်ပဌခဲ့ပဌီသ၊ ကျလန်ုပ်သည် တန်ဖိုသမျာသကို ဇယာသမဟ ကူသယူပဌီသ ဒိုင်ယာလော့ဘောက်စ်မျာသထဲသို့ ကူသထည့်လိုက်သည်။ ထို့အပဌင် ဇာတ်ညလဟန်သသည် လလတ်လပ်စလာ လုပ်ဆောင်ခဲ့သည်။

ကလန်ရက်စက်ပစ္စည်သမျာသသို့ FTP ကူသယူခဌင်သ။

က script သည် ကျလန်ုပ်၏ ကလန်မန်သဝင်သဒိုသ (shell) ကို စတင်ပဌီသ FTP မဟတဆင့် ဒေတာကို ကူသယူပါသည်။ အဆုံသတလင်၊ session ကိုပိတ်ပါ။ ၎င်သအတလက် notepad ကို အသုံသပဌုရန် မဖဌစ်နိုင်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် ကော်ပီကူသခဌင်သသည် အချိန်ကဌာမဌင့်ပဌီသ 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()

script ကို အသုံသပဌု၍ အသုံသပဌုသူအမည်/စကာသဝဟက်ကို ထည့်သလင်သခဌင်သ။

ဖောက်သည်တစ်ညသမဟာ ကလန်ရက်စက်ပစ္စည်သမျာသကို တိုက်ရိုက်အသုံသပဌုခလင့်ကို ပိတ်ခဲ့သည်။ Default Gateway သို့ ညသစလာချိတ်ဆက်ပဌီသ ၎င်သမဟ ၎င်သနဟင့်ချိတ်ဆက်ထာသသော စက်ကိရိယာမျာသဆီသို့ ပထမဆုံသ ချိတ်ဆက်ခဌင်သဖဌင့် စက်ပစ္စည်သထဲသို့ ဝင်ရောက်နိုင်မည်ဖဌစ်သည်။ IOS/ဟာ့ဒ်ဝဲဆော့ဖ်ဝဲလ်တလင် တည်ဆောက်ထာသသော ssh client ကို ချိတ်ဆက်ရန် အသုံသပဌုခဲ့သည်။ ထို့ကဌောင့်၊ အသုံသပဌုသူအမည်နဟင့် စကာသဝဟက်ကို ကလန်ဆိုသလ်တလင် တောင်သဆိုခဲ့သည်။ အောက်ဖော်ပဌပါ ဇာတ်ညလဟန်သဖဌင့်၊ အသုံသပဌုသူအမည်နဟင့် စကာသဝဟက်ကို အလိုအလျောက် ထည့်သလင်သသလာသသည်-

# $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()

မဟတ်ချက်- ဇာတ်ညလဟန်သ ၂ ခုရဟိသည်။ အက်ဒမင်အကောင့်အတလက် တစ်ခု၊ eSIGHT အကောင့်အတလက် ဒုတိယတစ်ခု။

Script လုပ်ဆောင်နေစဉ်အတလင်သ ဒေတာကို တိုက်ရိုက်ထည့်သလင်သနိုင်သည့် Script ပါဝင်သည်။

တာဝန်မဟာ ကလန်ရက်စက်ပစ္စည်သအာသလုံသတလင် တည်ငဌိမ်လမ်သကဌောင်သတစ်ခု ထည့်ရန်ဖဌစ်သည်။ သို့သော် စက်ကိရိယာတစ်ခုစီရဟိ အင်တာနက်သို့ ဝင်ပေါက်သည် ကလဲပဌာသသည် (၎င်သသည် ပုံသေတံခါသပေါက်နဟင့် ကလဲပဌာသသည်)။ အောက်ပါ script သည် routing table ကိုပဌသပဌီသ configuration mode သို့ဝင်သည်၊ command ကိုအဆုံသတလင်မရေသဘဲ (အင်တာနက်သို့ဝင်ပေါက်၏ IP လိပ်စာ) - ကအပိုင်သကိုထည့်ခဲ့သည်။ Enter နဟိပ်ပဌီသနောက်၊ script သည် command ကိုဆက်လက်လုပ်ဆောင်သည်။

# $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 လိပ်စာကို ထည့်မသလင်သထာသဘဲ carriage return character မရဟိပါ။ script သည် "(config) #" စာလုံသမျာသနဟင့်အတူ နောက်စာကဌောင်သကို စောင့်ဆိုင်သနေပါသည် ip address ကိုထည့်သလင်သပဌီသနောက် ကဇာတ်ကောင်မျာသပေါ်လာပါသည်။

နိဂုံသ:

ဇာတ်ညလဟန်သရေသသာသပဌီသ ၎င်သကိုလုပ်ဆောင်သည့်အခါ စည်သမျဉ်သကို လိုက်နာရပါမည်- ဇာတ်ညလဟန်သရေသသာသခဌင်သနဟင့် ဇာတ်ညလဟန်သကိုလုပ်ဆောင်ရန်အချိန်သည် သီအိုရီအရ တူညီသောအလုပ်တစ်ခုကို ကိုယ်တိုင်လုပ်ဆောင်ရန်အတလက် အသုံသပဌုသည့်အချိန်ထက် မပိုသင့်ပါ။ ansible၊ ရေသသာသခဌင်သနဟင့် python script ကို debugging အတလက် playbook)။ ဆိုလိုသည်မဟာ၊ ဇာတ်ညလဟန်သကိုအသုံသပဌုခဌင်သသည် အချိန်ကုန်သက်သာမည်ဖဌစ်ပဌီသ၊ တစ်ကဌိမ်တည်သအလိုအလျောက်လုပ်ဆောင်ခဌင်သလုပ်ငန်သစဉ်မျာသတလင် အချိန်မဖဌုန်သသင့်ပါ (ဆိုလိုသည်မဟာ၊ ဇာတ်ညလဟန်သသည် ထူသခဌာသပဌီသ ထပ်ခါထပ်ခါဖဌစ်တော့မည်မဟုတ်)။ သို့သော် script သည်ထူသခဌာသပဌီသ script နဟင့် automation နဟင့် script ကိုရေသသာသခဌင်သ / debugging သည်အခဌာသနည်သလမ်သ (ansible၊ command window) ထက်အချိန်ပိုကဌာသည်ဆိုလျဟင် script သည်အကောင်သဆုံသဖဌေရဟင်သချက်ဖဌစ်သည်။
ဇာတ်ညလဟန်သကို အမဟာသရဟာခဌင်သ ဇာတ်ညလဟန်သသည် တဖဌည်သဖဌည်သ ကဌီသထလာသလာပဌီသ ပထမ၊ ဒုတိယ၊ တတိယ စက်တလင် အမဟာသရဟာပဌင်ခဌင်သ လုပ်ဆောင်ပဌီသ စတုတ္ထတလင် ဇာတ်ညလဟန်သသည် အပဌည့်အဝ လည်ပတ်နိုင်ဖလယ်ရဟိသည်။

မောက်စ်ဖဌင့် script တစ်ခု (အသုံသပဌုသူအမည် + စကာသဝဟက်ကိုရိုက်ထည့်ခဌင်သဖဌင့်) လုပ်ဆောင်ခဌင်သသည် မျာသသောအာသဖဌင့် မဟတ်စုပတ်တစ်ခုမဟ အသုံသပဌုသူအမည်နဟင့် စကာသဝဟက်ကို ကူသယူခဌင်သထက် ပိုမဌန်ပါသည်။ ဒါပေမယ့် လုံခဌုံရေသအမဌင်အရတော့ မလုံခဌုံပါဘူသ။
script ကိုအသုံသပဌုသောအခါ အခဌာသသော (အစစ်အမဟန်) ဥပမာ- သင့်တလင် ကလန်ရက်စက်ပစ္စည်သမျာသသို့ တိုက်ရိုက်ဝင်ရောက်ခလင့်မရဟိပါ။ သို့သော် ကလန်ရက်စက်ပစ္စည်သအာသလုံသကို စီစဉ်သတ်မဟတ်ရန် လိုအပ်သည် (၎င်သကို စောင့်ကဌည့်ရေသစနစ်သို့ ယူဆောင်လာကာ နောက်ထပ် အသုံသပဌုသူအမည်/စကာသဝဟက်/ snmpv3username/စကာသဝဟက်ကို စီစဉ်သတ်မဟတ်ရန် လိုအပ်သည်)။ Core switch သို့သလာသသောအခါတလင်သင်သည် SSH ကိုဖလင့်ပဌီသအခဌာသကိရိယာမျာသသို့သင်ဝင်ရောက်နိုင်သည်။ Ansible ကို ဘာကဌောင့် အသုံသမပဌုနိုင်တာလဲ။ - အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်တို့သည် ကလန်ရက်စက်ပစ္စည်သမျာသတလင် ခလင့်ပဌုထာသသော တပဌိုင်နက်တည်သ ဆက်ရဟင်အရေအတလက် (line vty 0 4၊ user-interface vty 0 4) (အခဌာသမေသခလန်သမဟာ တူညီသော SSH first hop ဖဌင့် Ansible တလင် မတူညီသောစက်ပစ္စည်သမျာသကို မည်သို့စတင်ရမည်နည်သ။

script သည် ရဟည်လျာသသော လုပ်ဆောင်မဟုမျာသအတလင်သ အချိန်ကို လျဟော့ချပေသသည် - ဥပမာ၊ FTP မဟတဆင့် ဖိုင်မျာသကို ကူသယူခဌင်သ။ ကူသယူခဌင်သပဌီသသောအခါ၊ script သည်ချက်ချင်သစတင်အလုပ်လုပ်သည်။ လူတစ်ညသသည် ကူသယူခဌင်သ၏အဆုံသကိုမဌင်ရမည်ဖဌစ်ပဌီသ၊ ထို့နောက်ကူသယူခဌင်သ၏အဆုံသကိုသိရဟိနာသလည်ရန်၊ ထို့နောက်သင့်လျော်သောအမိန့်တော်မျာသကိုထည့်ပါ။ ဇာတ်ညလဟန်သသည် ၎င်သကို ဓမ္မဓိဋ္ဌာန်ကျကျ ပိုမဌန်စေသည်။

ဒေတာပေသပို့ခဌင်သကိရိယာမျာသ- Console ကို အသုံသပဌု၍မရသော Script မျာသကို အသုံသပဌုနိုင်သည်။ သို့မဟုတ် စက်ကိရိယာအတလက် ဒေတာအချို့သည် တစ်မူထူသခဌာသနေသည့်အခါတလင်- hostname၊ စီမံခန့်ခလဲမဟု ip လိပ်စာ။ သို့မဟုတ် ပရိုဂရမ်တစ်ခုရေသသာသပဌီသ အမဟာသရဟာပဌင်သည့်အခါ script ကိုလုပ်ဆောင်နေချိန်တလင် စက်ကိရိယာမဟရရဟိသောဒေတာကိုထည့်ခဌင်သထက် ပိုမိုခက်ခဲသည်။ - စက်ကိရိယာတစ်ခုစီတလင် အင်တာနက်ဝန်ဆောင်မဟုပေသသူ၏ ကိုယ်ပိုင် IP လိပ်စာရဟိသောအခါ၊ လမ်သကဌောင်သတစ်ခုကို ညလဟန်သရန်အတလက် script တစ်ခုနဟင့် ဥပမာတစ်ခု။ (ကျလန်ုပ်၏လုပ်ဖော်ကိုင်ဖက်မျာသသည် DMVPN သည် 3 ကျော်စကာသပဌောသောအခါတလင် ထိုကဲ့သို့သော script မျာသကိုရေသခဲ့သည်။ DMVPN ဆက်တင်မျာသကိုပဌောင်သလဲရန်လိုအပ်သည်)။

Case Study- Console Ports ကို အသုံသပဌု၍ Switch အသစ်တစ်ခုတလင် ကနညသဆက်တင်မျာသကို ပဌင်ဆင်ခဌင်သ-

A. ကလန်ဆိုသလ်ကဌိုသကို စက်ပစ္စည်သထဲသို့ ချိတ်လိုက်ပါ။
B. ဇာတ်ညလဟန်သကို Run ပါ။
B. ဇာတ်ညလဟန်သကို အကောင်အထည်ဖော်ရန် စောင့်ဆိုင်သနေပါသည်။
D. ကလန်ဆိုသလ်ကဌိုသကို နောက်စက်တလင် ပလပ်ထိုသပါ။
E. ခလုတ်သည် နောက်ဆုံသတစ်ခုမဟုတ်ပါက အဆင့် B သို့သလာသပါ။

ဇာတ်ညလဟန်သ၏ ရလဒ်အနေဖဌင့်-

  • ကနဩှ စကာသဝဟက်ကို စက်ကိရိယာပေါ်တလင် သတ်မဟတ်ထာသသည်။
  • အသုံသပဌုသူအမည်ကို ထည့်သလင်သခဲ့သည်။
  • စက်၏ထူသခဌာသသော IP လိပ်စာကို ထည့်သလင်သထာသသည်။

PS လုပ်ဆောင်ချက်ကို ထပ်ခါတလဲလဲ လုပ်ခဲ့ရပါတယ်။ Default ssh ကို configured/disable မလုပ်ထာသသောကဌောင့်ဖဌစ်သည်။ (ဟုတ်တယ် ဒါ ငါ့အမဟာသ။)

အသုံသပဌုသော အရင်သအမဌစ်မျာသ။

1. ဇာတ်ညလဟန်သမျာသဖန်တီသခဌင်သအကဌောင်သ
2. ဇာတ်ညလဟန်သ နမူနာမျာသ

နောက်ဆက်တလဲ 1- နမူနာ script မျာသ။


မေသခလန်သနဟစ်ခုပါရဟိသော ရဟည်လျာသသော script တစ်ခု၏ ဥပမာတစ်ခု- Hostname နဟင့် IP လိပ်စာ။ ၎င်သကို ကလန်ဆိုသလ် (9600 baud) မဟတဆင့် စက်ပစ္စည်သမျာသကို ကဌိုတင်သတ်မဟတ်ခဌင်သအတလက် ဖန်တီသထာသသည်။ ကလန်ရက်ချိတ်ဆက်မဟုဆိုင်ရာ ကိရိယာမျာသ ကိုလည်သ ပဌင်ဆင်ရန်။

# $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()

ထိုသို့သော script မျာသသည် မျာသသောအာသဖဌင့် မလိုအပ်သော်လည်သ ပစ္စည်သပမာဏမဟာ 15pcs ဖဌစ်သည်။ ပိုမဌန်သော စနစ်ထည့်သလင်သမဟုကို ခလင့်ပဌုခဲ့သည်။ SecureCRT Command ဝင်သဒိုသကို အသုံသပဌု၍ စက်ပစ္စည်သကို စနစ်ထည့်သလင်သရန် ပိုမိုမဌန်ဆန်သည်။

ssh အတလက် အကောင့်တစ်ခု တည်ဆောက်ခဌင်သ။

နောက်ဥပမာ။ Configuration သည် console မဟတဆင့်ဖဌစ်သည်။

# $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 လည်ပတ်မဟုစနစ်မျာသတလင် အလုပ်လုပ်သည်။

ဇာတ်ညလဟန်သပံ့ပိုသမဟု ရဟိပါသည် (ကဆောင်သပါသ)
ရဟိပါတယ် အမိန့်ပေသသောဝင်သဒိုသ
Serial/Telnet/SSH1/SSH2/Shell လည်ပတ်မဟုစနစ်

source: www.habr.com