shell指令碼嵌入expect和awk命令

2021-08-21 13:15:22 字數 780 閱讀 4957

網上查了好多資料 感覺也沒怎麼看明白 哭暈在廁所 我這智商是不是得轉產品去了額。。。

主要是因為寫了好幾個版本 最後把能用的都改瞎了 看來還得再寫幾個別的 總結總結才好

總之 注意幾點:

1、expect**塊裡面末尾需要寫

interact(但是我寫了這句話不太好使 可能是因為有eof的原因?)

或 send exit\r

expect eof

2、expect**塊中像簡單的send ls\r這種直接寫就好了,遇到比較複雜的awk命令得用{}闊起來,$需要轉義一下。。。

{}:保留所有字元原有的意思,而不做解釋,類似於shell中的單引號。

下面是最近寫的檢視n個伺服器上的nginx log檔案,然後統計每秒鐘訪問量最大的10個。。。awk命令用的也比較low。。。

#!/bin/sh

funca

() '|awk -f '+'

' end' | sort -k 2 -rn | head -10}

send \r

send exit\r

expect eof

eof}

ips=(123.123.123.123

456.456.456.456)

length=$

pass='password\r'

for((i=0;i<$length;i++));

doserver=$

funca

done

最後貼幾個參考文章:

shell指令碼之expect語句

在編寫shell指令碼時,我們可能會遇到一些互動式的情況,如passwd ssh等等指令碼時,常常需要手動進行互動。這樣,原本為了實現自動部署的指令碼顯得有些不大方便,這時你就會用上expect命令了。expect命令可以幫你把互動式命令變成非互動式。expect 有期待 期望的中文意思。正如它的中...

shell指令碼巢狀執行expect命令

1.expect命令說明 為避免反覆呼叫,可以巢狀執行 相關命令 spawn 啟動乙個程式或程序 send 給程序或程式返回結果 expect 接受程式或程序輸出 interact 使使用者處於程序或程式的互動狀態,ssh登入後不自動登出 2.shell中巢狀expect命令 bin bash sq...

shell指令碼和expect指令碼完成批量操作

下面是完成公鑰分發的乙個過程 第乙個方法 root centos useradd test u 9999 增加名為test的使用者,並且指定使用者id號為9999 root centos echo test passwd stdin test 設定使用者test的密碼為 test changing ...