PuTTY是個非常入門的終端機軟體,幾乎所有網管人員都會使用。其實有許多更好用的終端機軟體,但通常只能在個人的電腦上使用,終究很難做到通用。
因此,本文以PuTTY為主,因為資安越來越重視,導致能使用到的越來越侷限,非個人電腦可能沒有權限安裝別的像是程式語言環境,導致效率非常低下。因為要連線到設備,至少會給PuTTY使用。
腳本可以半小時內全數搞定的,若沒有,人為一台台處理,搞不好一整天都弄不完。
從0開始快速建立,這將在未來會更常使用到。
PuTTY可從CMD下指令運作,參數可以看官方文件,這邊就不多提。
假設今天有三台設備,都是同樣型號的設備,只使用一個指令「show run」,Log用「&H」加上CLI指令為名稱,&H代表Hostname,兩者組合,這樣才能知道這Log是什麼設備上什麼指令的結果。
名稱 | 密碼 | 連線方式 | ScriptPath | sessionlog |
admin@192.168.1.1 | password | ssh | show run.txt | &H-show run.log |
admin@192.168.1.2 | password | ssh | show run.txt | &H-show run.log |
admin@192.168.1.3 | password | ssh | show run.txt | &H-show run.log |
由於PuTTY的Script是得從檔案中讀取,只能一行指令(請勿有換行),因此我們要在PuTTY同目錄下,建立一個show run.txt
show run.txt
show run
非常簡單,如果之後要用多個指令,就要建立多個檔案。
做好之後,把資訊轉換成PuTTY指令
putty admin@192.168.1.1 -pw password -ssh -m "show run.txt" -sessionlog "&H-show run.log"
在PuTTY所在的資料夾,在檔案路徑輸入欄中輸入「cmd」,就能開啟位置在該資料夾的CMD,然後將PuTTY指令貼上到CMD中執行。
接著在同資料夾中,找到admin@192.168.1.1-show run.log,內容為送出show run後,所有的輸出內容。
透過這樣的概念與架構,只要有設備清單與帳密,以及需要執行的指令。接下來就能用excel去完成快速填入。
現在把表格建立在Excel中,這次指令除了show run之外,要多個show inventory,表格改良之後如下。
名稱 | 密碼 | 連線方式 | ScriptPath | sessionlog | PuTTY |
admin@192.168.1.1 | password | ssh | show run.txt | &H-show run.log | putty admin@192.168.1.1 -pw password -ssh -m “show run.txt” -sessionlog “&H-show run.log” |
admin@192.168.1.1 | password | ssh | show show inventory.txt | &H-show show inventory.log | putty admin@192.168.1.1 -pw password -ssh -m “show inventory.txt” -sessionlog “&H-show inventory.log” |
(略) |
如果照著上方表格,sessionlog跟PuTTY可以套公式
sessionlog #E2
="&Y&m&D&T-&H-"&D2&".log"
PuTTY #F2
="putty "&A2&" -pw "&B2&" -"&C2&" -m "&CHAR(34)&D2&".txt"&CHAR(34)&" -sessionlog "&CHAR(34)&E2&CHAR(34)
因為雙引號在Excel是特殊符號,需要使用CHAR(34)才能打出。
如果有整理好設備清單,再填入公式,得到指令,從CMD中,就能一輪一輪貼上,快速完成資料取得或修改。
PLINK
Plink是PuTTY的Command Line版本,也就是沒有圖形化介面,靠指令連線,更適用於自動化操作。
網路上文章寫說這比PuTTY更適合使用自動化,能用批次檔,交互性比較好。
從PuTTY官網上下載plink.exe,在同目錄下執行CMD,一樣假設要在設備上下多個指令,改用plink的版本。
(
echo no paging
echo show run
echo show inventory
echo exit
) | plink admin@172.16.3.253 -pw Aruba123 -ssh > 172.16.3.253.log
好處是可以將多行指令的結果集中在一個LOG,比較簡約。
如果指令數一多,那麼PuTTY版本會有相當可觀的行數,而且Excel上也不好處理。指令組合是依照設備型號變化,PuTTY版本會讓設備一行變多成跟指令組合數一樣的行數,而Plink只需要一行。
因為Excel中儲存格的值有多行的話,這時複製再貼上到非excel程式中,前後會加上”,導致無法直接貼上到CMD使用。解決方法的話,就是前後再加換行符,即便是有雙引號那行,也不會干擾到指令執行。
名稱 | 密碼 | 連線 | sessionlog | plink |
admin@192.168.1.1 | password | ssh | 如下 | 如下 |
sessionlog #D2
=TEXT(NOW(),"yyyymmddhhMM")&"-"&A2&".log"
plink # E2
="
(
echo no paging
echo show run
echo show inventory
echo exit
) | plink "&A2&" -pw "&B2&" -"&C2&" > "&D2