Shell脚本配置root免密登录到其他主机
本篇文章将会指导您使用shell脚本来配置主机间的免密操作。
脚本依赖expect包实现交互操作。
关于expect包安装方法,请参考附录完成安装。
一、shell脚本代码
下面是shell脚本代码
共分三个步骤
一、配置hosts文件,host文件添加免密主机的信息。
二、判断本地的公钥是否存在,如果不存在则需要生成公钥。
三、复制公钥到免密主机上,实现免密操作。
代码如下所示(示例)
#!/bin/bash
# 配置root免密登录到其他主机
# 传递三个参数 1、免密的主机密码 2、免密主机的IP 3、免密主机的主机名称
# @Author Cym
########################
# 一、配置hosts文件
sed -i '/'"$3"'/d' /etc/hosts
eval `echo $2 $3 >> /etc/hosts`
filepath=~/.ssh/id_rsa.pub
# 二、判断本地的公钥是否存在,如果不存在则需要生成公钥
[ ! -f $filepath ] && {
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
}
# 三、实现免密操作
expect -c "set timeout -1;
spawn ssh-copy-id $3;
expect {
*(yes/no)* {send -- yes\r;exp_continue;}
*password:* {send -- $1\r;exp_continue;}
eof { exit 0;}
}";
二、脚本执行结果演示
脚本结果运行如下图所示,expect会自动帮我们完成交互操作。
附录
安装expect
离线安装
离线安装expect需要两个离线包,expect_5.45-2_amd64.deb和tcl8.5_8.5.11-1ubuntu1_amd64.deb,我已经为大家整理完毕放在我的个人空间资源里面,请移步下载。
在线安装
ubuntu系统在线安装使用下面的命令
代码如下所示
apt-get install expect
centOS系统在线安装使用下面的命令
代码如下所示
yum install expect
结语
以上就是Shell脚本配置root免密登录到其他主机的全部内容,喜欢的话点个关注,我会不定期更新技术文章。