免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2509 | 回复: 0
打印 上一主题 下一主题

[高级应用] VIO学习之expect完结 [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-07 16:39 |只看该作者 |倒序浏览

VIO学习之expect完结
    继《VIO学习之expect进阶》(
http://www.cublog.cn/u/739/showart.php?id=734229
)之后,工作中发现约有9%的LPAR不能获得相关的信息,且有问题的LPAR并不是固定的,问题时有时无,最终查明原因是send太快。问题的详细描述可见
http://bbs.chinaunix.net/viewthread.php?tid=1167797
。从这里可以总结出两点:
1、遇到问题,需要自己动手调试,expect的调试方式就是“expect -d”,看得懂“expect -d”的信息就能找到问题的根源。
2、expect脚本中很多内容不用自己写,把autoexpect自动生成的内容稍做改动,就好了。只要能看得懂,那一切都很简单。
    最后解释下/bin/dailyck.exp的思路,照搬这个思路可以写出各种功能的脚本:批量创建用户(每台机器上创建同样的用户),批量改root密码,批量开通ftp记日志功能,批量检查IPSEC、SNA、网卡禁用工作状态,等。因此,本文叫做《VIO学习之expect完结》。脚本/bin/dailyck.exp实际上就做了三件事:
1、把命令及执行结果记录到本地的一个文本文件中
log_file $logname
2、不管三七二十一,一登录到远程机器,就把提示符改成“$”
export PS1=$
3、把所有检查内容的相关命令都写到下面“......”处
ksh /bin/dailyck.exp
#!/usr/bin/expect -f
#DATE: 2008-06-24
#email:
beginner@yeah.net
#blog:
http://www.aixchina.net/?1865
   
http://www.cublog.cn/u/739/
set timeout 10
set username dailyck
set passwd 此处需要改成真密码
set logname /home/padmin/dailyck.log
match_max 10000
log_user 0
spawn telnet [lindex $argv 0]
expect "ogin:"
sleep .1
send -- "$username\r"
expect "assword:"
sleep .1
send -- "$passwd\r"
sleep .1
log_file $logname
expect        {
        "
\\$
"
                {send -- "export PS1=$\r"}
        "#"
                {send -- "export PS1=$\r"}
        "invalid login name or password"
                {send_log "\n\n[lindex $argv 0] The password is wrong\n\n"; exit 1}
        timeout
                {send_log "\n\n[lindex $argv 0] Timeout\n\n"; exit 2}
        eof
                {send_log "\n\n[lindex $argv 0] Connection to host failed: expect_out(buffer)\n\n"; exit 3}
        }
expect -exact "\r
\$"
sleep .1
log_user 1
sleep .1
send -- "ksh  "
send -- "echo \"
\\n\"\r
"
expect -exact "\r
> "
send -- "host `hostname`\r"
expect -exact "\r
> "
send -- "TODAY=`date +\"%m%d\"`\r"
expect -exact "\r
> "
send -- "YESTERDAY=`TZ=+24 date +\"%m%d\"`\r"
expect -exact "\r
> "
send -- "errpt | awk '\$2 ~ YESTERDAY\"......\" || \$2 ~ TODAY\"......\"' YESTERDAY=\$YESTERDAY TODAY=\$TODAY | \\\r"
expect -exact "\r
> "
send -- "grep -v '\[PT\] S SYSXDLCI'\r"
expect -exact "\r
> "
send -- "df | awk 'NR>1, sub(/%/,\"\",\$4){if ( \$4 > 85 ) print \$4\"%\\t\"\$NF}'\r"
expect -exact "\r
> "
send -- "lspath | grep -v ^Enabled\r"
expect -exact "\r
> "
send -- "today=`date +\"%b %d\"`\r"
expect -exact "\r
> "
send -- "yesterday=`TZ=+24 date +\"%b %d\"`\r"
expect -exact "\r
> "
send -- "last | awk 'BEGIN {today='\\\"\"\$today\"\\\"'; yesterday='\\\"\"\$yesterday\"\\\"'} \\\r"
expect -exact "\r
> "
send -- "\$0 !~ today && \$0 !~ yesterday {exit}; NF==9 {sub(/\\/.*/,\"\",\$2); sub(/rsh.*/,\"rsh\",\$2); \\\r"
expect -exact "\r
> "
send -- "print \$4,\$5,\$3,\$2,\$1}; NF "
send -- "wait\r"
expect -exact "\r
> "
send -- "today=`date +\"%b %e\"`\r"
expect -exact "\r
> "
send -- "yesterday=`TZ=+24 date +\"%b %e\"`\r"
expect -exact "\r
> "
send -- "awk '{ a\[NR\]=\$0} END{ for(i=NR;i>0;i--) print a\[i\] }' /var/ftp.log |\\\r"
expect -exact "\r
> "
send -- "awk 'BEGIN {FS=\"\\\]:\"; today='\\\"\"\$today\"\\\"'; yesterday='\\\"\"\$yesterday\"\\\"'} \\\r"
expect -exact "\r
> "
send -- "\$1 !~ today && \$1 !~ yesterday {exit}; !/file local \$/ && / ftp/ {print \$2}' |\\\r"
expect -exact "\r
> "
send -- "awk '{ a\[NR\]=\$0} END{ for(i=NR;i>0;i--) print a\[i\] }' |\\\r"
expect -exact "\r
> "
send -- "sed -e 's/ connection from .* at //g' -e 's/ FTP LOGIN FROM //g' \\\r"
expect -exact "\r
> "
send -- "-e 's/FTPD: EXPORT file local/  DOWNLOAD/g' -e 's/FTPD: IMPORT file local/  UPLOAD/g'\r"
expect -exact "\r
> "
send -- "wait\r"
expect -exact "\r
> "
send -- "echo \"
\\n\"\r
"
expect -exact "\r
> "
send -- "!!!\r"
expect -exact "\r
\$"
sleep .1
log_file
send -- "exit\r"
interact
!!
chmod +x /bin/dailyck.exp
========================================================================
任何形式的转载,请写明出处:
email:
beginner@yeah.net
blog:
http://www.aixchina.net/?1865
   
http://www.cublog.cn/u/739/
========================================================================


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/739/showart_1075190.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP