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