標籤:too isp 座標 cursor 傳回值 矩形 設定螢幕 zha 點擊
引言
內容
(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指令碼編寫學習指南