2010年(1)
分类:
2010-04-15 09:39:20
如果你的服务器的ip是有一定范围的,比如是 192.168.0.1--192.168.0.100之间,而且他们的root用户密码相同,都为redhat,那么你可以用下面的脚本快速的部署信任关系。
#!/bin/bash
# auto copy publick key to ssh server,but you must create the rsa public key first!
# auth:
# date: 20100408
# include a expect script
# see the log file /tmp/test.log
cat>/tmp/auto.tcl< #!/usr/bin/expect -f set timeout -1 #set user [lrange $argv 1 1] #set password [lrange $argv 2 2] set ipaddr [lrange $argv 0 0] spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@\$ipaddr expect "Are you sure you want to continue connecting (yes/no)?" send "yes\r" expect "*?assword:" send "redhat\r" expect eof eof chmod 755 /tmp/auto.tcl rm -f /root/.ssh/known_hosts for i in {1..100} do if ping -c2 192.168.0.$i &>/dev/null then /tmp/auto.tcl 192.168.0.$i &>/dev/null echo "********192.168.0.$i**************">>/tmp/test.log ssh 192.168.0.$i ifconfig eth0|grep 'inet addr:'|cut -f2 -d:|cut -f1 -d' ' >>/tmp/test.log else echo "the server 192.168.0.$i is't exsit">>/tmp/down.log fi done 建立后,执行这个脚本就可以了 如果是你的服务器ip,root密码无规律咋办呢?这个时候可以这么做,建立一个文件 server.txt 内如格式如下 ip地址:root密码 比如 202.19.1.3:qwz234 201.19.1.2: de123s ... 这个时候可以这么来做 #!/bin/bash # auto copy publick key to ssh server,but you must create the rsa public key first! # auth: # date: 20100408 # include a expect expect script # see the log file /tmp/test.log cat>/tmp/auto.tcl< #!/usr/bin/expect -f set timeout -1 #set user [lrange $argv 2 2] set password [lrange $argv 1 1] set ipaddr [lrange $argv 0 0] spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@\$ipaddr expect "Are you sure you want to continue connecting (yes/no)?" send "yes\r" expect "*?assword:" send "$password\r" expect eof eof chmod 755 /tmp/auto.tcl rm -f /root/.ssh/known_hosts for i in `cat /server.txt` do IP=`echo $i|cut -f1 -d:` PASS=`echo $i|cut -f2 -d:` if ping -c2 $IP &>/dev/null then /tmp/auto.tcl $IP $PASS &>/dev/null echo "********$IP**************">>/tmp/test.log ssh $IP ifconfig eth0|grep 'inet addr:'|cut -f2 -d:|cut -f1 -d' ' >>/tmp/test.log else echo "the server $IP is down">>/tmp/down.log fi done