10
Jul
expect+ssh实现无人值守批量管理
和我一起进公司的几个应届都给安排了不错的技术活让练手,让我负责解决客户问题无法访问网站问题,整理机器硬件信息然后录入公司网站,纯体力劳动。或许是因为有学历?这高中退学的小子不如大学毕业的有培养价值,即使是一个烂大学。
废话不多说,简单描述下情况:公司共有40台服务器,硬件配置都不一样。需要统计出每个服务器的硬件配置,网络参数,计划任务,软件环境,用户,负载情况,BIOS以及机器序列号。
首先要实现的是自动登录,我对tcl并不熟悉,所以只是初步实现了功能,很多细节没有考虑。(比如有些机器是不允许登录ftp的,事后我又专门写了一个scp的脚本解决这个问题)。里面的info.sh是我统计机器信息时候用的,请根据需要替换成自己的脚本。
#!/usr/bin/expect -f set ipaddr [lrange $argv 0 0] #ip参数 spawn ssh -p 9922 -o StrictHostKeyChecking=no $ipaddr expect "*?assword:*" sleep 3 send "123\r" #密码 expect "]#" send "rm -rf /root/info.sh\r" expect "]#" send "rm -rf /root/toftp/*\r" expect "]#" send "wget www.zhangyiqun.cn/hard.sh\r" sleep 3 expect "]#" send "chmod +x info.sh\r" expect "]#" send "/root/info.sh\r" expect "]#" send "cd /root/toftp\r" expect "]#" send "ftp 72.167.232.88\r" sleep 2 expect "Name (72.167.232.191:root):" send "zhangyiqun\r" sleep 2 expect "Password:" send "123\r" sleep 3 expect "ftp>" send "cd data\r" sleep 3 expect "ftp>" send "put *\r" sleep 8 expect eof |
现在来实现ip传递
#!/bin/bash
for i in `awk '{print $1}' /root/Download/ipaddr`
do
/root/Download/dele.sh $i
done |
我把ip放在了ipaddr,可以自动读取。因为我们的服务器密码都一样所以我在expect中直接把密码设成了123 。也许以后会遇到多个服务器密码不同的问题,那也不复杂,将密码放入ipaddr用awk截取即可。
#本人长期寻找好活(兼职亦可),如果有的话请朋友们推荐一下啦~
难道你不知道?
有些大学生和废物是一样的?
[回复]
admin 回复:
08月 10th, 2009 at 14:02
略有耳闻,呵呵
[回复]