Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49163
  • 博文数量: 20
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-06 10:28
个人简介

原创文章,转载请注明出处,谢谢。

我的朋友

分类: LINUX

2014-01-22 10:31:56

需求 在多台服务器上执行命令 并收集结果


expect批量登录远程服务器执行命令lsof -i ,  并将结果反馈回本地




==========================================================
#expect是一个工具,其脚本中不支持shell,理论上只用于单机自动化管理,假如有100台机,貌似你也不会傻到往里面写100个spawn
#!/usr/bin/expect -f
set ip [lindex $argv 0]
set password [lindex $argv 1]
set timeout 3
spawn ssh root@$ip
expect {
"*yes/no" { send "yes\r";exp_continue}
"password:" {send "$password\r"}
}
expect "#*"
send "cd /home;lsof -i >/home/lsof_$ip.log;scp /home/lsof_$ip.log/ 192.168.170.76:/home/\r"   #下面需要验证170.76的密码的,因为我的密码和78,84都一样,因此可以直接调用,假如你本地密码不同于其他,应该在脚本上定义多一个set password

#spawn scp root@$ip:/home/lsof_$ip.log /home/
expect {
"*yes/no" {send "yes\r";exp_continue}
"password:" {send "$password\r"}
}
expect eof


============================================================
建立个文件,批量输入你的ip和密码,格式以空格间隔,我新建的文件名为user_password
内容如下:
192.168.170.78 celia0213
192.168.170.84 celia0213
。。。。。。
。。。。。。


=============================================================
写个shell脚本让expect循环执行自动化管理user_password里面包含的ip
#!/bin/sh
cat /home/kerwin/shell/user_password |while read ip password
do
/usr/bin/expect -f /home/kerwin/shell/expect.sh $ip $password
done




===============================================================
阅读(573) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:rsync同步脚本(可对比同步进度)

给主人留下些什么吧!~~