免费注册 查看新帖 |

Chinaunix

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

[系统管理] 利用shell 监控交换机端口流量的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-23 15:30 |只看该作者 |倒序浏览
问题是在执行telnet登陆交换机时执行show interfaces counters 这个命令不能全部显示输出,需要按若干个空格才能显示剩下的内容。
导致收集屏幕输出时,显示内容不全。
因此请教大家,有没有什么方法,在执行命令后,让其自动按若干个空格,把所有内容在屏幕中都显示出来。
或者有没有其他命令,可以一次性输出所有端口信息?


先谢谢大家~

下面是目前的脚本内容
#执行脚本

----------------------------------------------------------

#!/bin/bash
>download.txt
while read -u3 line1
do
v1=`echo $line1 | awk -F[","] '{print $1}'`
v2=`echo $line1 | awk -F[","] '{print $2}'`
echo 'ip_address:'$v2
./switchinfo.sh $v1 $v2
echo 'ip_address:'$v2 >> download.txt
cat out.log$v1 |egrep 'Port|Fa|Gi|Po1' >> download.txt
done 3<ipinfo
rm -rf out*

-----------------------------------------------------------



#嵌套脚本switchinfo.sh

-----------------------------------------------------------

#!/bin/bash

tmptty=`tty`
tmptty=`basename $tmptty`
tmpname=`whoami`
ip=$2
inp1="(v-p-n)"
#inp2="stem2008"
inp3="show interfaces counters"

inputfile=in
outputfile=out.log$1

rm -fr $inputfile
rm -fr $outputfile

mknod $inputfile p
touch $outputfile

exec 7<>$outputfile
exec 8<>$inputfile

telnet $ip <&8 >&7 &

sleep 2; echo $inp1 >> $inputfile
echo "executing command $inp3"
sleep 2; echo $inp3 >> $inputfile
echo "exiting"
sleep 2; echo "exit" >> $inputfile
sleep 2; echo -e "\n" >> $inputfile

rm $inputfile
#rm $outputfile

论坛徽章:
0
2 [报告]
发表于 2013-07-23 15:47 |只看该作者
坐等大牛出现

论坛徽章:
0
3 [报告]
发表于 2013-07-24 08:14 |只看该作者
没有人来么?

论坛徽章:
0
4 [报告]
发表于 2013-07-24 08:15 |只看该作者
继续顶,继续顶,

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2013-07-24 20:00 |只看该作者
在执行命令后,让其自动按若干个空格

可以考虑调用expect来模拟键盘操作
http://bbs.chinaunix.net/thread-594417-1-1.html
http://bbs.chinaunix.net/thread-3566066-1-1.html
http://linux.chinaunix.net/techd ... /02/14/950495.shtml

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
6 [报告]
发表于 2013-07-25 13:24 |只看该作者
可能也不需要expect,你系统应该有个 yes 命令吧,估计用这个就可以
  1. yes " " |./switchinfo.sh $v1 $v2
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
7 [报告]
发表于 2013-07-25 13:26 |只看该作者
$ man yes
Reformatting page.  Please Wait... done

User Commands                                              yes(1)

NAME
     yes - generate repetitive affirmative output

SYNOPSIS
     yes [term]...

论坛徽章:
0
8 [报告]
发表于 2013-07-29 09:46 |只看该作者
回复 5# Shell_HAT


大师,你好:
我使用expect 试了一下,但是还是无法模拟出键盘的操作,求指点。

代码如下:
#!/usr/bin/expect
spawn telnet 109.115.12.5

#expect "Username:"

#send "admin\n"

expect "Password:"

send "(v-p-n)\n"

expect "*>"

send "show interfaces counters\n\n\n\n\n"

expect "*>"

send "exit\n"

expect eof

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
9 [报告]
发表于 2013-07-29 11:53 |只看该作者
报什么错误?

论坛徽章:
0
10 [报告]
发表于 2013-07-29 16:19 |只看该作者
Shell_HAT 发表于 2013-07-24 20:00
可以考虑调用expect来模拟键盘操作
http://bbs.chinaunix.net/thread-594417-1-1.html
http://bbs.chin ...


您好:
        问题已经使用expect解决了,

#! /usr/bin/expect
stty erase ^H
set ip [lindex $argv 0]

set password [lindex $argv 1]

log_file $ip.log

spawn telnet $ip

expect "Password:"

send "$password\n"

expect "*>"

send "show interfaces counters\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\n\n"

expect "*>"

send "exit\n"

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP