有時候我們需要批量傳送ssh命令給伺服器,但是有可能有些伺服器是新加入的,還沒有配置ssh免密,這個時候就會提示我們輸入yes/no 或者password等,expect指令碼命令就是用於在提示這些的時候,自動為我們輸入相應的文字先看一段shell指令碼,實現了ssh自動連線
#!/usr/bin/expect
spawn ssh 192.168.1.241expect
"password
"send
"123456\r
"expect "]#
" interact
注意第一行使用的是
#!/usr/bin/expect而不是普通的bash指令碼那樣
,注意\r代表換行,跟我們輸入完乙個命令換行是乙個道理。
上面的這種expect屬於單一分支模式,代表就匹配這一種,如果匹配的不是,那麼就要自己輸入了,但是我們有可能在第一次有不同的提示,這個時候就需要使用多分支語法
expect 只要匹配到aaa 或者password其中的一種就會輸出。
#!/usr/bin/expect
spawn ssh 192.168.1.241expect "
password" }
expect "]#
" interact
上面的expect指令碼功能可能都達到了,為了避免有很多expect指令碼,我更推薦使用expect命令
1#!/bin/bash
23 server="
192.168.1.241
"4 passwd=nf123456
56 expect -c "
7set timeout -1;
8spawn ssh $server;
9expect 11\
"password:\"
12};
1314
expect \
"]#\" ;
15 expect \"
]#\" ;
16expect eof;
17"
上面的shell功能和expect指令碼實現的功能一致,都是通過ssh登入進去後輸入,ls -la 命令
#!/bin/bash
servers="
192.168.1.241 192.168.1.242
"passwd="
123456
"function
sshcopyid
\"password:\"
};expect eof;
"}for server in
$servers
dosshcopyid
$server
done
linux 下expect的使用
usr bin expect set timeout 60 spawn ssh l guest 210.45.114.190 expect password expect guest node43 send cd sa11011033 r expect guest node43 send touch...
linux下expect的使用
expect 使用 安裝 yum y install expect 1,首行宣告 2,控制台輸出 3,設定日期變數 date 4,設定ip變數 local ip 127.0.0.1 usr bin expect f set date exec date y m d set ip1 123.57.21...
expect命令使用
expect 是由don libes基於tcl tool command language 語言開發的,主要應用於自動化互動式操作的場景,借助expect處理互動的命令,可以將互動過程如 ssh登入,ftp登入等寫在乙個指令碼上,使之自動化完成。尤其適用於需要對多台伺服器執行相同操作的環境中,可以大...