Linux/Unix shell內嵌expect自動配置多臺主機SSH互信
在自動化測試,或者Oracle RAC安裝過程中,需要配置主機之間SSH 無密碼訪問,當有多臺主機時,配置起來很麻煩,網上的很多類似指令碼拿到本機有問題,所以自己寫了一個:
-
#!/bin/bash
-
-
NUM_OF_NODES=
-
NODE1=""
-
NODE2=""
-
NODE3=""
-
NODE4=""
-
NODE5=""
-
-
USER=root
-
EXPECT=/usr/bin/expect
-
PASSWD=""
-
#USER_PROMPT="*$ "
-
USER_PROMPT="*# "
-
-
if [ "x${NODE1}" == "x" -o "x${USER}" == "x" -o "x${PASSWD}" == "x" ]; then
-
echo ""
-
echo "Please set the NODE INFO, USER and PASSWD"
-
echo "then $0 to start..."
-
exit 1
-
fi
-
-
declare -i l_i=1
-
while [ $l_i -le $NUM_OF_NODES ]
-
do
-
eval l_current_node=\$NODE$l_i
-
-
$EXPECT <<EOF
-
spawn ssh $USER@$l_current_node
-
expect "*(yes/no)?*" {
-
send -- "yes\r"
-
expect "*?assword:*"
-
send -- "$PASSWD\r"
-
} "*?assword:*" {send -- "$PASSWD\r"}
-
expect "$USER_PROMPT"
-
send -- "ssh-keygen -t rsa -q -f ~/.ssh/id_rsa -P '' \r"
-
expect "*Overwrite (yes/no)? " {
-
send -- "yes\r"
-
} "$USER_PROMPT" {send -- "\r"}
-
expect "$USER_PROMPT"
-
send -- "cat ~/.ssh/id_rsa.pub | ssh $USER@$NODE1 'cat - >> ~/.ssh/authorized_keys' \r"
-
expect "*(yes/no)?*" {
-
send -- "yes\r"
-
expect "*?assword:*"
-
send -- "$PASSWD\r"
-
} "*?assword:*" {send -- "$PASSWD\r"}
-
expect "$USER_PROMPT"
-
send -- "exit\r"
-
EOF
-
((l_i++))
-
done
-
-
declare -i l_n=1
-
while [ $l_n -le $NUM_OF_NODES ]
-
do
-
eval l_current_node=\$NODE$l_n
-
$EXPECT <<EOF
-
-
spawn ssh $USER@$NODE1
-
expect "*?assword:*" {
-
send -- "$PASSWD\r"
-
expect "$USER_PROMPT"
-
} "$USER_PROMPT" {send -- "scp ~/.ssh/authorized_keys $l_current_node:~/.ssh/ \r"}
-
expect "*?assword:*"
-
send -- "$PASSWD\r"
-
expect "$USER_PROMPT"
-
send -- "exit\r"
-
EOF
-
((l_n++))
- done
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20482996/viewspace-1127298/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RAC主機配置ssh互信
- linux環境下ssh 互信配置Linux
- 三臺linux機器做ssh互信的方法Linux
- linux主機互信操作Linux
- shell+expect建立多個節點無密碼ssh密碼
- 自動批次實現linux機器ssh免密shell指令碼Linux指令碼
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- 客戶端自動配置安裝(expect工具)客戶端
- oracle手動配置互信Oracle
- 【expect】用expect實現scp/ssh-copy-id的非互動
- Linux開機自啟動配置Linux
- shell-6 expect
- oracle RAC手動配置互信Oracle
- Ansible批量更新遠端主機使用者密碼 (包括Ansible批量做ssh互信)密碼
- 同機多Github賬號配置多個SSHGithub
- LINUX SSH互信與使用者家目錄許可權Linux
- linux expectLinux
- Linux/unix主機環回地址的一些功用Linux
- 使用ssh隧道穿透NAT訪問內網主機穿透內網
- linux 主機mail 系統配置.LinuxAI
- Linux Shell互動式自動化運維程式Linux運維
- shell實戰之Linux主機系統監控Linux
- git配置多個ssh keyGit
- Git 多賬號 SSH 配置Git
- 批量實現多臺伺服器之間ssh無密碼登入的相互信任關係伺服器密碼
- GOland配置ssh訪問Linux/Manjaro虛擬機器GoLandLinuxJAR虛擬機
- Linux平臺Oracle開機自啟動設定LinuxOracle
- 多臺kafka同時啟動shell指令碼Kafka指令碼
- Linux伺服器---ssh配置Linux伺服器
- Linux下expect安裝Linux
- linux expect 的基本使用Linux
- xshell-ssh自動多級跳轉功能介紹
- Linux中配置網路地址,主機名Linux
- Linux中主機名的作用是什麼?如何配置主機名?Linux
- windows下 power shell啟動,呼叫ssh命令Windows
- shell指令碼實現多臺伺服器自動巡檢--可參考學習指令碼伺服器
- 動態主機配置協議DHCP協議
- Mac OS 下配置多個 SSH KeyMac
- Git配置單個或多個SSHGit