我之前在農信社的機房工作,那裡的領導曾經有一個需求,希望可以快速查看所有機器的配置信息,還有CPU、內存的運行狀態等信息。機房的伺服器在80台左右。
前段時間我學了點expect腳本,便想利用這個腳本實現這個需求。昨天正式開始著手操作,感覺應該是遇到最後的問題了。
批量查看多台機器的內存信息,如果多台機器的用戶密碼都一樣的話,我還能完成。但是,如果密碼不同,我就不知道腳本應該如何改了。
腳本1:
# cat iplist
192.168.1.179 redhat
192.168.1.180 redhat
192.168.1.181 123456
192.168.1.182 123456
腳本2:
# cat view_client_info.sh
#!/bin/sh
. /etc/init.d/functions
for ip in `cut -d " " -f1 iplist`
do
expect lipeixue.exp $ip free -m
done
腳本3:
# cat -n lipeixue.exp
1 #!/usr/bin/expect
2 if { $argc != 2 } {
3 send_user "usage: expect scp-expect.exp ip command\n"
4 exit
5 }
6
7 #define var
8 set ip
9 set command
10 set password
11 #set password "123456"
12
13 spawn ssh -P22 root@$ip $command
14 expect {
15 -timeout 2
16 "yes/no" {send "yes\r";exp_continue}
17 "*password" {send "password\r"}
18 timeout {puts "timeout";return}
19 }
20 #expect eof
21 exit
我知道自己寫的腳本3是有問題的。
可我就是不知道是否應該在第10行加變數,還是在別的位置提取腳本1里的密碼呢?
我不知道,這密碼應該如何提取了?
請各位幫忙提點一下,謝謝。
[火星人 ] 使用expect批量查看多台機器的內存信息,如果密碼不同,應該如何修改腳本呢?已經有825次圍觀