Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15171823
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-03-19 18:33:45

最新文档可见:
需求:
机房到放学时候学生都不走,希望在管理机上ssh登陆关机,对整个机房的所有学生机执行关机命令。
解决办法一:
passwd.txt 存放ip和密码,格式为:ip空格密码,比如
192.168.1.1 123456
192.168.1.2 654321

expect.sh

#!/usr/local/bin/expect
spawn ssh root@[lindex $argv 0]
sleep .2
expect "(yes/no)?" {
send "yes\r"
expect "*assword:"
send "[lindex $argv 1]\r"
} "*assword:"
send "[lindex $argv 1]\r"
expect -re {[$#] }
send "halt -p\r"
expect EOF


#!/bin/sh
while read ip passwd
do
echo "$host....."
/tmp/expect.sh $ip $passwd
done < passwd.txt
为了省事,halt.sh里面调用expect就用了绝对路径,需要根据实际需要修改,呵呵。

解决方法二:
passwd.txt同上面存放ip和密码,格式为:ip空格密码,比如
192.168.1.1 123456
192.168.1.2 654321

halt.sh

#!/usr/local/bin/expect
set f [open passwd.txt r]
set timeout 150
while {[gets $f line] >= 0} {
spawn ssh root@[lindex $line 0]
expect "(yes/no)?" {
send "yes\r"
expect "*assword:"
send "[lindex $line 1]\r"
} "*assword:"
send "[lindex $line 1]\r"
expect -re {[$#] }
send "halt -p\r"
expect eof
}
close $f

还差的功能是,能在执行关机前提示下,让保存文件,然后1分钟以后再关机,这个还得研究,有结果了我再。
阅读(1107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~