expect应用一例

转载 2007年09月14日 09:08:00
 注:执行需要安装有expect解释器
检查netscreen防火墙
shell+expect编写
shell代码如下,重复执行expect调用,list.txt文件为要检查的防火墙信息
其它设备检查也可做参考(应用于telnet)
savedate=$IFS
IFS=':'
filelog="`date +%Y-%m-%d`.log"
 > $filelog
while read ipaddr username password
do
   > "$ipaddr.log"
   date +%Y-%m-%d >> "$ipaddr.log"
   echo "$ipaddr" >> "$ipaddr.log"
   expect getmessag.exp  $ipaddr $username $password | tee -a "$ipaddr.log"
done < list.txt   /*要检查的设备IP,用户名,密码列表
echo "***************************************************"
echo "now get the important message....."
IFS=':'
while read  ipaddr username password
do
   sed -n '1,2p' "$ipaddr.log" >> $filelog
   grep "Average" "$ipaddr.log"| awk -F": " '{print $2}' >> $filelog
   grep "^Memory:" "$ipaddr.log"| awk -F" " '{print $3,$5}' |awk -F"," '' >> $filelog
   grep "^alloc" "$ipaddr.log"|awk -F" " '{print $2}' | awk -F"/" '{print $1}' >> $filelog
   rm $ipaddr.log
done < list.txt
IFS=$savedate
  

expect程序代码如下
set timeout 4
set ipaddr [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
spawn telnet 132.108.19.1
expect "login:"
send "用户名/r"
expect "*: "
send "密码/r"
expect "*>"
send "telnet $ipaddr/r"
expect "login:"
send "$username/r"
expect "password:"
send "$password/r"
expect "*->"
send "get performance cpu/r"
expect "*->"
send "get memory/r"
expect "*->"
send "get session | include alloc/r"
expect "*->"
send "exit/r"
expect "*>"
send "exit/r"
expect eof


list.txt文件格式如下

192.168.10.6:用户名:密码
192.168.10.16:用户名:密码
192.168.10.60:用户名:密码
192.168.10.7:用户名:密码
192.168.10.9:用户名:密码

自动化交互脚本Expect简单介绍及应用实例

在自动化测试中,有很多需要交互式处理的操作,常用的shell是无法完成交互的。Expect shell脚本是一种自动化交互脚本,可以很方便的完成自动化测试任务。 本文根据工作中实例,简单介绍了一下ex...
  • laoding1993
  • laoding1993
  • 2016年02月26日 13:54
  • 798

使用expect批量修改用户密码

1.配置文件 IP、、 # 192.168.10.187 root 123abc!@# zhangwc 123456 192.168.10.188 root 123abc!@# zhang...
  • yuanfen860913
  • yuanfen860913
  • 2014年11月19日 11:41
  • 676

expect 中的回车和换行

在 expect 的相关资料中, send 最后都追
  • robertsong2004
  • robertsong2004
  • 2014年09月01日 22:57
  • 5915

Linux使用expect实现免手工密码输入

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。    脚本代码如下:    ...
  • xhu_eternalcc
  • xhu_eternalcc
  • 2015年07月27日 11:10
  • 948

expect完整介绍

expect是建立在tcl基础上的一个工具,它用来让一些需要交互的任务自动化地完成。我们首先从一个简单的例子开始,如同在这一节一开始就提到的,我们想设置一个自动的文件下载程序。        我们...
  • senvil
  • senvil
  • 2015年10月05日 18:21
  • 1455

Perl脚本中Expect模块的学习使用

Expect模块可以用来向需要交互执行的程序输入必要的信息。以脚本形式实现交互式应用程序的语言。代码:$exp = new Expect;new一个Expect.$exp->spawn($comman...
  • jichenchen1990
  • jichenchen1990
  • 2017年07月25日 11:22
  • 555

Linux-expect命令详解

Expect (主页http://expect.nist.gov/) 是用于提供自动交互的工具。比如你要用ssh或者 telnet登录服务器的时候,命令行下提示需要输入用户和密码等。如果叫你用shel...
  • jacky0922
  • jacky0922
  • 2015年04月16日 10:38
  • 6482

expect基础语法

 1. Expect基础语法解释 1.1 cmd arg arg arg       一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 .  ...
  • k122769836
  • k122769836
  • 2015年10月11日 20:14
  • 3608

Expect学习笔记

Expect学习笔记   ————Tim   一、Expect介绍 Expect是一种TCL扩展性的语言,主要用于完成系统交互方面的功能,比如SSH、FTP等,这些程序都需要手工与它们进行互...
  • boyishachang
  • boyishachang
  • 2013年03月15日 14:42
  • 3429

expect交互命令

expect命令     是一个用来处理交互的命令。借助expect,可以将交互过程写在一个脚本上,使之自动化完成。形象的说,ssh,ftp登录都符合交互的定义。     四个命令:send,ex...
  • havedream_one
  • havedream_one
  • 2015年04月24日 16:56
  • 4805
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:expect应用一例
举报原因:
原因补充:

(最多只允许输入30个字)