shell 脚本,免登陆脚本

把 多天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  就不行。

猜你喜欢

转载自blog.csdn.net/qq_29499107/article/details/85063780