java面试题网站:www.javaoffers.com
把 多天linux 节点可以相互之间免登陆。今天把自己写的脚本发出来。两个文件,mdl.sh 和mdlqd.sh
脚本如下: 把两个脚本放在同一个目录下,执行 ./mdlqd.sh 即可。在使用时需要 注意你的Linux时否支持yum
因为脚本中用到了expect语法。 如果你的Linux不支持yum的话, 请百度安装expect ,如果支持yum 安装话那么本脚本
中帮你安装expect, 注意: 不支持请把脚本中的yum -y install expect 注释掉, 记得更换脚本中你自己的 servers : 你
自己的Linux ip地址和密码。
mdl.sh
#存放免登录的地址
SERVERS="10.231.131.93 10.231.131.165 10.231.131.97 10.231.139.65"
PASSWORD=123
auto_ssh_key() {
expect -c "set timeout -1;
spawn ssh-keygen ;
expect {
*save*key* {send -- \r;exp_continue;}
*Overwrite* {send -- y\r;exp_continue;}
*passphrase* {send -- \r;exp_continue;}
*again* {send -- \r;exp_continue;}
eof {exit 0;}
}";
}
#如果你的Linux 没有安装expect 就把这句放开,如果你的机子不支持yum安装把这条关闭。
yum -y install expect
auto_ssh_key
auto_ssh_copy_id() {
expect -c "set timeout -1;
spawn ssh-copy-id $1;
expect {
*(yes/no)* {send -- yes\r;exp_continue;}
*assword:* {send -- $2\r;exp_continue;}
eof {exit 0;}
}";
}
ssh_copy_id_to_all() {
for SERVER in $SERVERS
do
auto_ssh_copy_id $SERVER $PASSWORD
done
}
ssh_copy_id_to_all
mdlqd.sh
#存放免登录的地址
SERVERS="10.231.131.93 10.231.131.165 10.231.131.97 10.231.139.65"
PASSWORD=123
for SERVER in $SERVERS
do
./mdl.sh
scp mdl.sh root@$SERVER:/root
ssh root@$SERVER /root/mdl.sh
done
补充: SERVERS 中的ip 尽量写成 别名,即 hosts 中的映射名
例如: 10.231.131.93 node1 这里的node1 就是别名
因为我发现,通过 ssh ip 可以免登录,但是 ssh node1 就不行。