SecureCRT中python指令碼編寫學習指南

來源:互聯網
上載者:User

標籤:too   isp   座標   cursor   傳回值   矩形   設定螢幕   zha   點擊   

引言
  • 在測試網路裝置中,通常使用指令碼對裝置端進行配置和測試以及維護;對於PE裝置的測試維護人員來說使用較多是SecureCRT工具;SecureCRT支援VB、JavaScript、Python等多種指令碼語言,為了實現指令碼在CRT中更加豐富穩定地執行,掌握CRT的常用函數是非常有用的。接下來的時間我將對SecureCRT指令碼編寫的常用函數展開學習應用。

內容

(1)使用python語言實現SecureCRT中的Dialog功能

# $language = "Python"# $interface = "1.0"#crt.Dialog.FileOpenDialog([title,[buttonLabel,[defaultFilename,[filter]]]])#彈出一個對話方塊,用於選擇單個檔案;如果選擇了具體檔案則返回該檔案的絕對路徑,如果選擇了彈窗的“取消”,則返回空。filePath =  crt.Dialog.FileOpenDialog("please open a file","open","a.log","(*.log)|*.log")#filePath =  crt.Dialog.FileOpenDialog("","","a.log","")#crt.Dialog.MessageBox(message, [title, [icon|buttons]]) 警告、按鈕類型彈出一個訊息框,可以定義按鈕,使用按鈕和簡訊來實現和使用者的簡單對話;crt.Dialog.MessageBox(filePath,"",64|0)crt.Dialog.MessageBox("會話已斷開","session",64|2)crt.Dialog.MessageBox("確認是否退出","session",32|1)crt.Dialog.MessageBox("確認是否退出","session",32|3)crt.Dialog.MessageBox("是否繼續安裝","session",32|4)crt.Dialog.MessageBox("此會話已開啟","session",48|5)crt.Dialog.MessageBox("無法串連此視窗","session",16|6)#crt.Dialog.Prompt(message [, title [,default [,isPassword ]]])#彈出一個輸入框,使用者可以填寫文字,比如填寫檔案名稱,填寫路徑,填寫IP地址等,運行結果如果點擊‘ok‘,返回輸入的字串,否則返回"" password = crt.Dialog.Prompt("password","session","admin",False)crt.Dialog.MessageBox(password,"password",64|0)password = crt.Dialog.Prompt("password","session","",True)crt.Dialog.MessageBox(password,"password",64|0)

(2)使用python語言實現SecureCRT中的Screen功能

# $language = "Python"# $interface = "1.0"# CurrentColumn返回當前游標的列座標。curCol =  crt.Screen.CurrentColumncrt.Dialog.MessageBox(str(curCol))# CurrentRow返回當前游標的行座標。curRow = crt.Screen.CurrentRowcrt.Dialog.MessageBox(str(curRow))# Columns 返回當前螢幕的最大列寬cols = crt.Screen.Columnscrt.Dialog.MessageBox(str(cols))# Rows 返回當前螢幕的最大行寬rows = crt.Screen.Rowscrt.Dialog.MessageBox(str(rows))#IgnoreEscape 定義當使用WaitForString、WaitForStrings和ReadString這三個方法時是否擷取Escape字元(特殊字元如斷行符號)預設是會擷取的crt.Screen.IgnoreEscape = Falsecrt.Dialog.MessageBox(crt.Screen.ReadString(["\03"],5)) #擷取ctrl+ccrt.Screen.IgnoreEscape = Truecrt.Dialog.MessageBox(crt.Screen.ReadString(["\03"],2)) #不擷取ctrl+c# MatchIndex 定義當使用WaitForStrings和ReadString這三個方法時會根據參數的位置 擷取傳回值,從1開始計算,如果沒有一個匹配則返回0.outPut = crt.Screen.ReadString(["error","warning","#"],10)index = crt.Screen.MatchIndexif (index == 0):    crt.Dialog.MessageBox("Timed out!")elif (index == 1):    crt.Dialog.MessageBox("Found ‘error‘")elif (index == 2):    crt.Dialog.MessageBox("Found ‘warning‘")elif (index == 3):    crt.Dialog.MessageBox("Found ‘#‘")    # Synchronous 設定螢幕的同步屬性。若設定為false,則在指令碼中使用WaitForString、WaitForStrings、ReadString函數時可能存在丟失一部分資料的現象,設定為true後可能會存在螢幕卡頓的情況,預設為falsecrt.Screen.Synchronous = Truecrt.Screen.Send("\r\n")crt.Screen.ReadString("#")crt.Screen.Send("\r\n")crt.Screen.WaitForString("#")crt.Screen.Send("\r\n")crt.Screen.WaitForStrings(["#",">"])crt.Screen.Send("conf t\r\n")   # 方法# Clear()清屏功能# crt.Screen.Clear()# get()按照座標取出一個矩形框內的螢幕上的字元(即從某行某列開始到其它行其它列),不包含字串中的斷行符號分行符號,所以這個多用於擷取無格式的游標處字串或某小段特定地區字串。out = crt.Screen.Get(row1, col1, row2, col2)crt.Dialog.MessageBox(out)# get2()解釋按照座標取出一個矩形框內的螢幕上的字元(即從某行某列開始到其它行其它列),包含字串中的斷行符號分行符號,所以這個多用於擷取大段帶格式的字串。crt.Screen.Get2(row1, col1, row2, col2)# IgnoreCase 使用全域參數設定控制在使用WaitForString、WaitForStrings和ReadString這三個函數時是否對大小寫敏感,預設為false大小寫字串都會檢查,設定為true時則不會檢測大小寫。crt.Screen.IgnoreCase = Truecrt.Screen.Send("show memory\r\n")crt.Screen.WaitForString("more")crt.Screen.Send("\r\n")crt.Screen.WaitForStrings("more","#")crt.Screen.Send("\r\n")crt.Screen.ReadString("more","#")# Send() 向遠端裝置或者螢幕發送字串,當向螢幕發送字串時需要指定第二個參數為Turecrt.Screen.Send("show version\r\n")crt.Screen.Send("\r\nhello,world!\r\n",True)crt.Screen.IgnoreCase = Truewhile (crt.Screen.WaitForString("more",10)):        crt.Screen.Send("\r\n")# SendKeys()向當前視窗發送按鍵,包含組合按鍵,比如可以發送類似"CTRL+ALT+C"等這樣的按鍵組合,這樣寫即可:crt.screen.sendkeys("^%c");這個功能需要語言本身支援,目前只有VBS和JS指令碼可以使用。# SendSpecial()可以發送特殊控制碼,這個控制碼是Crt內建的功能,具體可以包含的有Menu、Telnet、VT functions功能列表中提供的所有功能,crt.Screen.SendSpecial("vT_HOLD_SCREEN")# WaitForCursor()等待游標移動,當移動時傳回值為true,當有逾時時間參數且逾時時返回false,否則會一直等待游標移動。利用這個功能可以用來判斷一個命令的輸出是否結束,crt.Screen.WaitForCursor(5)crt.Screen.Send("\r\nhello,world!\r\n",True)if ( crt.Screen.WaitForCursor(5)):    crt.Screen.Send("show version\r\n")# WaitForKey()檢測有鍵盤按鍵時返回true,當有逾時時間參數且逾時時返回false,否則會一直等待按鍵if (crt.Screen.WaitForKey(5)):    crt.Screen.Send("show version\r\n")# WaitForString()一般用於發送命令後等待某字串# crt.Screen.WaitForString(string,[timeout],[bCaseInsensitive])crt.Screen.WaitForString("#",10)# WaitForStrings()與WaitForString是同樣的功能,可以等待多個字串outPut = crt.Screen.WaitForStrings(["error","warning","#"],10)index = crt.Screen.MatchIndexif (index == 0):    crt.Dialog.MessageBox("Timed out!")elif (index == 1):    crt.Dialog.MessageBox("Found ‘error‘")elif (index == 2):    crt.Dialog.MessageBox("Found ‘warning‘")elif (index == 3):    crt.Dialog.MessageBox("Found ‘#‘")    # ReadString()與WaitForStrings功能類似,都是等待某幾個字元出現,不同的是它還會讀取字串之前出現的所有字元。crt.Screen.ReadString([string1,string2..],[timeout],[bCaseInsensitive])        1、string,必選參數,等待的字串,最少有一個,可以是特殊字元比如:\r\n;2、timeout,選擇性參數,逾時時間,當檢測不到對應字串時會返回false,沒有此參數時會一直等待;3、bCaseInsensitive,選擇性參數,大小寫不敏感,預設值是false,表示將檢測字串的大小寫,當為true時不檢測大小寫。   



本文轉自:

http://www.cnblogs.com/zhaoyujiao/p/4908627.html

 

SecureCRT中python指令碼編寫學習指南

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.