1,使用ssh-keygen 生成公钥
2,利用expect免交互传输公钥
3,读取文件list中的机器名和密码,while是使用换行符做为标记因此能够使用while read LINE 来读取数据,并过滤须要的信息,任何空白符均可以做为for读取的分隔符,因此为何文件之间有空格会出问题,能够使用:做为分割符,修改下数据文件shell
使用for循环批量免交互输密码,也能够用while按行读取bash
[root@Ray shell]# cat createssh.sh
#!/bin/bash
for i in `cat list`
do
hostname=`cut -d : -f1 list`
passwd=`cut -d : -f3 list`
expect << EOF
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$hostname
expect (yes/no) {send "yes\n"}
expect "*password" {send "$3\n"}
expect "#" {send "echo\r"}
EOF
donessh
机器的相关信息及密码写到一个文件按中测试
[root@Ray shell]# cat list
192.168.1.102:root:bmzy1mjr
192.168.1.103:root:bmzy1mjr
192.168.1.104:root:bmzy1mjrspa
能够测试机器是否能够免免米.net