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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux expect自動登入ssh,ftpLinuxFTP
- linux 多臺 主機的免登入ssh的配置Linux
- linux expect詳解(ssh自動登入)Linux
- 三臺linux機器做ssh互信的方法Linux
- linux環境下ssh 互信配置Linux
- 快速配置Linux-ssh互信Linux
- linux主機互信操作Linux
- Linux系統互信ssh的配置方法Linux
- 利用Python Fabric配置主機間SSH互信和新增公鑰薦Python
- shell+expect建立多個節點無密碼ssh密碼
- 自動批次實現linux機器ssh免密shell指令碼Linux指令碼
- 配置多臺機器SSH相互通訊信任
- Linux、UNIX設定開機自動執行命令、指令碼配置Linux指令碼
- 通過expect實現ssh協議自動輸密碼協議密碼
- 兩臺Linux伺服器之間配置互信Linux伺服器
- 客戶端自動配置安裝(expect工具)客戶端
- oracle手動配置互信Oracle
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- 【expect】用expect實現scp/ssh-copy-id的非互動
- oracle RAC手動配置互信Oracle
- 自動化運維 Expect運維
- Linux Shell自動互動Linux
- Linux開機自啟動配置Linux
- 同機多Github賬號配置多個SSHGithub
- linux雙機互信設定Linux
- Ansible批量更新遠端主機使用者密碼 (包括Ansible批量做ssh互信)密碼
- 使用ssh隧道穿透NAT訪問內網主機穿透內網
- HP UNIX開機自動掛載與開機自動執行命令
- scp後臺靜默執行(使用expect自動輸入密碼)密碼
- LINUX SSH互信與使用者家目錄許可權Linux
- HP主機訪問動態IP主機配置
- 配置tomcat,使得一臺主機執行多個tomcat容器Tomcat
- 一臺主機上配置MySQL ClusterMySql
- linux expectLinux
- UNIX自動啟動oracleOracle
- 使用shell生成orabbix自動化配置指令碼指令碼
- 批量實現多臺伺服器之間ssh無密碼登入的相互信任關係伺服器密碼
- 配置系統間互信