需要安装sshpass ubuntu: apt-get install sshpass 脚本:
#!/bin/bash
line=`awk 'END{ print NR}' password.txt`
for i in `seq 1 $line`
do
ip=`head -n $i password.txt |tail -1|awk '{print $1}'`
port=`head -n $i password.txt |tail -1|awk '{print $2}'`
password=`head -n $i password.txt |tail -1|awk '{print $3}'`
sshpass -p ${password} ssh-copy-id -i /root/.ssh/id_rsa.pub -p ${port} -o StrictHostKeyChecking=no root@${ip}
done
文本: password.txt 文本格式: IP PORT PASSWORD 文本内容:
cat password.txt
192.168.1.201 22 KbbTnykeM6VW
192.168.1.202 22 SHSMmTCBNb47Kxi
执行过程:
./copysshkey.sh
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22' -o 'StrictHostKeyChecking=no' 'root@192.168.1.201'"
and check to make sure that only the key(s) you wanted were added.
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22' -o 'StrictHostKeyChecking=no' 'root@192.168.1.202'"
and check to make sure that only the key(s) you wanted were added.
脚本思路: 1、获取文本行数 2、循环文本行数 3、获取文本每行每列的字符串 4、执行设置免密操作