簡體   English   中英

期望腳本輸出

[英]Expect script output

我正在嘗試使用Expect腳本從固件輸出ARP表的大小,以便對其進行繪圖。 在執行以下代碼后,將顯示輸出到屏幕:

/usr/bin/expect -f -<< EOD
spawn ssh test@1.2.3.4
sleep 1
expect {
"*word:" {send "password\r"}
}
sleep 1
expect {
"*>" {send "show arp all | match \"total ARP entries in table\"\r"}
}
sleep 1
expect {
"*>" {send "exit\r"} 
}
expect eof
EOD

spawn ssh test@1.2.3.4
FW-Active
Password:
Number of failed attempts since last successful login: 0
test@FW-Active(active)> show arp all | match "total ARP entries in table"
total ARP entries in table :        2861

我想做的是只能輸出表中ARP總條目中指示的數值。 我假設我需要一些如何“剪切”或“ awk”或僅提取數字的方法,但是我沒有任何運氣。 任何幫助是極大的贊賞。

您存儲在一個變量,整個命令的輸出,讓我們說a 這樣的事情可能會起作用。 由於您使用的是Expect,因此您可能需要弄清楚如何將輸出存儲為變量,從而可以對其進行操作。 在示例中,我將輸出存儲為$ a。

$ echo $a
total ARP entries in table : 2861
$ echo ${a% *}
total ARP entries in table :
$ echo ${a% *}-
total ARP entries in table : -
$ echo ${a##* }
2861

邏輯說明(BASH中的參數/變量替換)
1)要去除/剝除左側部分,請使用#到達第一個匹配字符值(從左側讀取/解析),使用##到達最后一個匹配字符/值。 它通過在{ } *<value>

2)要刪除/剝離右側部分,請使用%來獲取第一個匹配字符值(從右側讀取/解析),使用%%來獲取最后一個匹配字符/值。 它通過在{ } <value>*起作用。

或者,如果您不想存儲輸出或任何東西,則只需執行以下操作:

show arp all | match "total ARP entries in table" | grep -o "[0-9][0-9]*"

或(以下假設您沒有改變

show arp all | match "total ARP entries in table" | sed "s/  *//g"|cut -d':' -f2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM