Linux学习笔记 --Bash ScriptsII
#!/bin/expect
set IP [ lindex $argv 0 ]
set PASS [ lindex $argv 1] ##设置变量
spawn ssh [email protected]$IP ##spawn是expect的内部命令,作用是给后面的指令加个壳,用来传递交互指令。
expect { ##expect " "判断上次输出结果里是否包含“ ”的字符串
"yes/no" { send "yes\r"##执行交互动作,相当于手工输入"yes" ;exp_continue##继续执行expect " " }
"password:" { send "$PASS\r" }
}
interact ##执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。否则退出登录
##< expect eof >作用是在输出中搜索文件结束符,如果没有这一行,脚本会立即退出,得不到正确结果。
#!/bin/bash
if ##如果$*不为空
[ -n "$*" ]
then
MAX_LINE=`wc -l $* | awk '{print $1}'` ##定义MAX_LINE值为 $* 即<filename> 的行数
for NUM in `seq 1 $MAX_LINE` ##定义NUM且做for循环
do
IP=`sed -n ${NUM}p $* | awk '{print $1}'` ##定义IP值为 $* 的第NUM行第一列
PASS=`sed -n ${NUM}p $* | awk '{print $2}'` ##定义PASS值为 $* 的第NUM行第二列
/mnt/autosh.exp $IP $PASS hostname | tail -n 1 ##执行 /mnt/autosh.exp $IP $PASS hostname | tail -n 1
done
else
echo "Useage:check_host.sh <filename>"
fi