.

iT邦幫忙

0

如何整合vbs腳本與putty抓取ssh主機名、儲存輸出到檔案

  • 分享至 

  • xImage

我的需求是自動化遠程網路設備,我的vbs內容如下
Dim pm, folder, file, timestamp, network, hostname
Set shell = CreateObject("WScript.Shell")
Set pm = WScript.CreateObject("WScript.Shell")
Set network = CreateObject("WScript.Network")
hostname = network.ComputerName
timestamp = Year(Now) & Right("0" & Month(Now), 2) & Right("0" & Day(Now), 2)
file = "C:\Users\frank\Downloads" & timestamp & "-" & hostname & ".log"
Set folder = CreateObject("Scripting.FileSystemObject")
Set file = folder.CreateTextFile(file, True)

shell.Run "putty -ssh admin@192.168.123.168 -P 22"
WScript.Sleep 500
pm.SendKeys "admin"
pm.SendKeys "{ENTER}"
pm.SendKeys "enable"
pm.SendKeys "{ENTER}"
pm.SendKeys "cisco"
pm.SendKeys "{ENTER}"
pm.SendKeys "terminal length 0"
pm.SendKeys "{ENTER}"
pm.SendKeys "show version"
pm.SendKeys "{ENTER}"
pm.SendKeys "terminal length 24"
pm.SendKeys "{ENTER}"
pm.SendKeys "copy running-config startup-config"
pm.SendKeys "{ENTER}"
pm.SendKeys "{ENTER}"

執行結果如下
https://ithelp.ithome.com.tw/upload/images/20250107/20142793k30Vvnwcer.png

我需求是
1.生成檔名必須是網路設備hostname,例如20250107-WAN-R1.log,而不是20250107-WIN11.log這種微軟主機的hostname。
2.我的腳本雖然在putty執行成功,可是無法輸出到目標檔案.log,打開竟然是空的。
以上請教大神,小弟應如何修改...

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2025-01-07 21:14:11 檢舉
1. VBS前面寫的都是那台windows主機的,到了執行SSH才是遠端主機的,你要怎麼生遠端主機的名稱?
2. SSH後你就等於進到遠端主機了,創的log也是在遠端主機上,你得用SCP把log拖回windows
如果執行VBS的電腦不舊,win10/2016以上,基本上都能以powershell來做ssh, scp 等工作,VBS會有被終止的一天(安全性)
I.T. Wang iT邦新手 1 級 ‧ 2025-01-08 12:56:04 檢舉
@froce
VBS我是零基礎,寫法都是參考網路上、chatgpt,我重新發問...我想知道語法應怎麼改,才能抓取遠端主機名稱。
創的log在本地,並不在遠端主機上,如截圖所示。
froce iT邦大師 1 級 ‧ 2025-01-08 13:15:34 檢舉
你搞不清楚狀況...你現在的狀況對任何程式語言來說都是正常的。
1. hostname = network.ComputerName
這句你根本沒SSH進去遠端主機,那本地主機怎麼會知道你要遠端的主機(192.168.123.168 )的名稱?
2. Set file = folder.CreateTextFile(file, True)
這句會創一個txt在你本地主機,問題是SSH後的操作都是在遠端主機上,而且還是開個subprocess,putty根本寫不到你的這個本地主機的log檔啊。常用的處理方式是SSH後在遠端主機產生log,再用SCP傳回本機順便改名。
觀念都弄不清楚了,用AI只會更加糟糕而已。

3. 大規模要管請考慮用ansible...
https://danny-mccaslin.medium.com/backing-up-your-cisco-devices-with-ansible-7403219a322b
4. 同樓上japhenchen所說,VBS快被淘汰了。
I.T. Wang iT邦新手 1 級 ‧ 2025-01-09 12:24:48 檢舉
@froce
1.是阿小弟零基礎搞不清狀況,所以小弟需要的是請問如何調整程式碼、怎麼寫?
我在發問時是這樣寫的「生成檔名必須是網路設備hostname」,小弟知道我的code有誤,但小弟不知道怎麼改! 才上來發問!
而您提及的那些技術原理&概念,小弟都懂...但請問如何實作? 所以也請大大搞清楚發問者問題再回答,謝謝您喔= =
2.反而ansible我會...可是ansibe會有自己格式,會有play、output之類的,我要txt檔案儲存原生show格式。
(我的客戶接受ansible好方法,但也不接受ansible原生格式)
3.我同意時代問題,但我要先解決現在問題,再去想以後問題...= =
froce iT邦大師 1 級 ‧ 2025-01-09 14:36:25 檢舉
那你自己慢慢解吧,反正我用別的語言就會做了,查了一下ansible有fetch可以做。
.
圖片
  直播研討會

尚未有邦友回答

立即登入回答