ssh批量处理免密登陆

使用此脚本需要安装一个工具:sshpass

步骤:
1、先将该安装包上传到服务器上
2、解压
tar -xvf sshpass-1.05.tar.gz

3、进入
cd sshpass-1.05

4、编译安装
./configure
make
make check #这是检测编译是否有误,如果没有提示信息就证明编译成功
make install
#说明:该软件具有卸载功能,可直接在该目录中执行make clean 可自动卸载

5、可以使用sshpass命令了

#使用前请先将存放IP地址和密码的文件以如下格式存放
172.100.0.1:test1
172.100.0.2:test2

#IP地址和密码之间用":"号隔开,如果IP与密码之间是用空格间隔请使用如下命令进行更改:sed -i.bak 's/ /:/g' pass.txt 原有的文件会以.bak结尾的文件保存备份,执行之前确保该文件除了IP与密码之间其他地方不要有空格

将该脚本上传到服务器后记得添加执行权限:chmod a+x sshautopass.sh

脚本如下:
#!/bin/bash
#使用前请先将存放IP地址和密码的文件以如下格式存放
#172.100.0.1:test1
#172.100.0.2:test2
#IP地址和密码之间用":"号隔开,如果IP与密码之间是用空格间隔请使用如下命令进行更改:sed -i.bak 's/ /:/g' pass.txt 原有的文件会以.bak结尾的文件保存备份,执行之前确保该文件除了IP与密码之间其他地方不要有空格

A=awk '{print $1}' /srv/ansible/jiaoben/pass.txt
B=echo $A

for key in $B; do
IP=echo $key |cut -d : -f1
pass=echo $key |cut -d : -f2

cat /root/.ssh/id_rsa.pub | /usr/local/bin/sshpass -p $pass ssh -o "StrictHostKeyChecking no" -p 22 $IP "mkdir -p /root/.ssh;cat >> /root/.ssh/authorized_keys" &> /dev/null

done

unset A B IP pass

猜你喜欢

转载自blog.51cto.com/19940919/2166750