我想編寫一個 perl 腳本,透過 telnet 登入 cisco 交換器並解析show mac-address-table
.問題是不同的開關顯示不同的欄位佈局。
WS-C3548-XL 依序顯示字段
Destination Address Address Type VLAN Destination Port
而 C2960 顯示如下
Vlan Mac Address Type Ports
有沒有辦法告訴 show 按預先定義的順序列印欄位?
答案1
使用 SNMP 輪詢設備。我認為 MIB 是相同的,但你永遠不知道 Cisco 的情況。
答案2
不,據我所知沒有。
但由於您已經在使用 perl,因此只需檢查第一行即可。從那裡開始,您知道特定字段的含義是什麼,並相應地填充您的哈希值(我希望您正在使用一個!)。這樣做的另一個優點是,將來您可以使用另一種輸出格式支援其他模型。同時仍然支援“舊”的。強大的程式設計能力。
....哦,請確保處理「地址類型」中的空格:)
答案3
您是否考慮使用 SNMP 編寫腳本 您可以執行外部 snmpget / snmpwalk 公用程式並解析輸出或使用 Net::SNMP 模組。
答案4
SNMP 是最好的。但也要記住,「include」輸出修飾符具有正規表示式功能。如果你想堅持使用 Perl-expect,你可以只獲取你想要的資訊