通过 Shell 和 Expect 脚本实现对 IBM 刀片服务器高级管理模块固件的大量升级
2009-12-09 00:00:00 来源:WEB开发网因此,可以使用 Expect 脚本来完成对 AMM 的 telnet 中的一些交互性操作。
准备工作
首选确认是否安装了如下 rpm 包,如果没有安装,请安装
rpm -q expect
expect-5.42.1-1
根据上一章节的执行流程,需编写三个脚本,分别为:
run.sh 执行整个程序流程
remotechassis.tcl 发现网络里所有的 AMM 的 IP 地址
update.tcl AMM 固件的升级
编写 run.sh 的脚本
run.sh 用来执行整个程序过程,其中涉及到要使用 telnet 连接到 AMM 中执行相应的控制命令,因此我们使用两个 Expect 脚本来分别完成发现网络里所有的 AMM 的 IP 地址和让 AMM 执行固件升级的功能。
由于需要升级固件的 AMM 有多个,可以在 run.sh 中加入循环来自动完成多个 AMM 固件的升级,并将升级进程放入后台运行,这样可以同时执行多个升级进程。
为了保证所有 AMM 固件升级完成,设定延迟 1200 秒后,将所有升级进程 kill 掉。
下面是 run.sh 脚本的具体内容
清单 1. run.sh 代码 #!/bin/sh
# 指 定 登 录 到 其 中 一 个 AMM 中 ,执 行 发 现 remotechassis.tcl 脚 本 , 发
# 现 网 络 中 所 有 的 AMM IP 地 址 ,并 格 式 化 记 录 到 IP.out 文 件 中
./remotechassis.tcl 192.168.1.125 USERID PASSW0RD |grep IP: |cut -c17- >ip.out
# 读 取 ip.out 文 件 中 的 每 一 行 AMM 的 IP 地 址, 然后执行 update.tcl 进
# 行 后 台 升 级
for eachline in `cat ip.out` ;do
# 执行 update 升级脚本,并放入后台执行
./update.tcl $eachline USERID PASSW0RD &
done
# 延 迟 20 分 钟 , 结 束 所 有 的 update.tcl 进 程
sleep 1200
killall update.tcl
更多精彩
赞助商链接