免费注册 查看新帖 |

Chinaunix

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

[系统管理] [求助]except 远程到cisco设备上如何使用for循环? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-28 14:00 |只看该作者 |倒序浏览
最近因为有些事情,需要在半夜进行cisco网络设备的大包ping测试,于是我在linux上写了个except的登录脚本进行测试,
脚本如下:
ping.exp:
#! /usr/bin/expect
set ip [lindex $argv 0]
set passwd [lindex $argv 1]
set enpasswd [lindex $argv 2]
set timeout 60
spawn telnet $ip
expect "Password:"
send "$passwd\r"
expect ">"
send "en\r"
expect "Password:"
send "$enpasswd\r"
expect "#"
send "ping 10.35.195.1 source 10.35.195.245 size 1500 repeat 100\r"
expect "#"
send "exit\r"
expect eof

save.sh:
#! /bin/sh
a=`cat /tmp/ip.txt`
for ip in $a;
do
/tmp/ping.exp $ip passwd passwd;
done

ip.txt
10.35.195.245
10.35.195.246
当前能够实现的就是从我的linux服务器,通过ip.txt上的IP去登陆进行ping测,而后我会>>到某个log文件中,但是问题是我登陆的每台cisco网络设备都不一样,即ping的地址都是不一样的,
即exp脚本中我如何能将
send "ping 10.35.195.1 source 10.35.195.245 size 1500 repeat 100\r"
这行的目的地址和原地址用变量替代掉?类似shell中的for in的循环那样。expect不是太懂,求大师们点化。。。
多谢多谢~~~~

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
2 [报告]
发表于 2013-11-28 14:11 |只看该作者
回复 1# 钟大發

ping.exp加入
set dip  [lindex $argv 3]
set sip  [lindex $argv 4]
  1. send "ping 10.35.195.1 source 10.35.195.245 size 1500 repeat 100\r"

  2. ==>
  3. send "ping $dip source $sip size 1500 repeat 100\r"
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-11-28 15:13 |只看该作者
谢谢提醒,我之前想过这样做,然后将ip.txt文件进行修改,比如这样:
ping.exp
#! /usr/bin/expect
set ip [lindex $argv 0]
set passwd [lindex $argv 1]
set enpasswd [lindex $argv 2]
set dip [lindex $argv 3]
set sip [lindex $argv 4]
set timeout 60
spawn telnet $ip
expect "Password:"
send "$passwd\r"
expect ">"
send "en\r"
expect "Password:"
send "$enpasswd\r"
expect "#"
send "ping $dip source $sip size 1500 repeat 100\r"
expect "#"
send "exit\r"
expect eof

save.sh:
#! /bin/sh
a=`cat /tmp/ip.txt`
for par in $a;
do
/tmp/ping.exp $par;
done

IP.txt
10.35.195.245   netstar01       netstar01       10.35.195.1     10.35.195.245

但是运行的时候到输入密码那部就卡住了。。sh-x也看不出什么。不知道有什么问题吗。。。。

回复 2# HH106


   

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
4 [报告]
发表于 2013-11-28 15:22 |只看该作者
回复 3# 钟大發
  1. for par in $a
  2. ==> for par in "$a"
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-11-28 15:28 |只看该作者
。。竟然忘记这点了。。多谢大师点化!给你32个赞!!!回复 4# HH106


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP