expect指令碼實現批量ssh互信

2021-07-08 13:02:41 字數 925 閱讀 4981

搭hadoop時候需要配置多節點ssh互信,節點數量多了,手工配起來就很麻煩。網上有很多自動配置ssh互信的指令碼,但基本都不能直接用。今天摸索了下,自己寫了個簡易版,測試還能用,在這裡分享下。
1、每個節點安裝expect包

yum install expect -y

2、將auto_ssh.sh及ip.list 拷貝至每個節點需要建立ssh的使用者下,我這裡拷貝至hadoop的家目錄

auto_ssh.sh為指令碼**,ip.list 存放所有節點的ip位址,包括自身ip。

auto_ssh.sh指令碼內容:

#! /usr/bin/expect

spawn ssh-keygen

expect "id_rsa"

send "\r"

expect "phrase"

send "\r"

expect "again"

send "\r"

interact

set f [open ip.list r]

while

"*password:"

}}close $f

ip.list 存放節點ip資訊,每個ip一行;

192.168.56.101

192.168.56.102

192.168.56.103

.......

3、在指令碼存放位置執行指令碼即可,可直接expect呼叫;

expect auto_ssh.sh

若有問題,可根據報錯資訊予以調整。

此**只適用於全新系統環境,即使用者未生成過公鑰,若已生成,則刪除公鑰即可;

其他功能如條件判斷等可以自行新增。

expect使用ssh登入指令碼

基礎篇 u s ssh spawn ssh l root 10.10.10.24 等待響應,第一次登入往往會提示是否永久儲存 rsa 到本機的 know hosts 列表中 等到回答後,在提示輸出密碼 之後就直接提示輸入密碼 expect yes no password host interact ...

EXPECT 指令碼 批量 遠端互動

在shell自動部署專案中對自動部署免去使用者互動很痛苦 expect eof 這個一定要加,與spawn對應表示捕獲終端輸出資訊終止,類似於if.endif expect指令碼必須以interact或expect eof結束,執行自動化任務通常expect eof就夠了。設定expect永不超時。...

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

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