linux下expect命令實現批量ssh免密

2022-04-03 17:50:27 字數 1454 閱讀 8391

有時候我們需要批量傳送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登入等寫在乙個指令碼上,使之自動化完成。尤其適用於需要對多台伺服器執行相同操作的環境中,可以大...