抓取指定IP所在端口脚本

此脚本需要三个文件,一个是.sh的文件,二个是.exp的文件,针对cisco和华三交换机做了两个脚本。还有一个脚本是抓取整个机房服务器IP、服务器mac、服务器所在交换机IPod、服务器所在交换机端口的脚本。

1、华三交换机相关脚本

#!/bin/bash

echo -e "\033[31m 输入一个IP地址关闭端口命令脚本

作者:王阳

编写日期:2013/09/24

注:本脚本还有待优化(交换机是华三的交换机,如是其它厂家则不行,本脚本起到抛砖引玉的作用,希望网友朋友多加改进!!!!!!\033[0m"

echo ""

read -p "请输入IP:" i

cat /var/wangyang/block/switchlist.txt | while read IP LOGIN PASSWD

do

/var/wangyang/block/check.exp ${IP} ${LOGIN} ${PASSWD} ${i} > /var/wangyang/block/core.txt

done

port=`cat core.txt |grep GE |awk '{print $4}'|sed 'y/GE/gi/'`

echo -e "\033[05m 核心交换机端口是 $port \033[0m"

cat /var/wangyang/block/switchlist.txt | while read IP LOGIN PASSWD

do

/var/wangyang/block/access.exp ${IP} ${LOGIN} ${PASSWD} ${port} > /var/wangyang/block/port.txt

done

acip=`cat port.txt |grep 1000 |awk '{print $1}'|grep -v JY`

echo -e "\033[05m 接入交换机 $acip \033[0m"

echo "$acipadminadmin" > /var/wangyang/block/access.txt

cat /var/wangyang/block/access.txt | while read IP LOGIN PASSWD

do

/var/wangyang/block/shutdown.exp ${IP} ${LOGIN} ${PASSWD} ${i} > /var/wangyang/block/shutdown.txt

done

acport=`cat /var/wangyang/block/shutdown.txt |grep GE|awk '{print $4}'|sed 'y/GE/gi/'`

echo -e "\033[05m 接入交换机所连端口 $acport \033[0m"

cat /var/wangyang/block/access.txt | while read IP LOGIN PASSWD

do

/var/wangyang/block/shutdownport.exp ${IP} ${LOGIN} ${PASSWD} ${acport} > /var/wangyang/block/shutdownport.txt

done

log="error"

bao=`cat /var/wangyang/block/shutdownport.txt`

if [ $log = $bao ]

then

echo "本次抓取指这定端口有问题,需要手动抓取."

else

echo "抓取完成!!!"

echo "$i $acportyes" >> /var/wangyang/block/complete.txt

fi

cat /var/wangyang/block/complete.txt

check.exp该脚本主要是查出指定IP所在交换机中的mac地址,内容如下:

#!/usr/bin/expect -f

if { $argc != 4 } {

send_user "error\n"

exit

}

set timeout 30

set IP [lindex $argv 0]

set LOGIN [lindex $argv 1]

set PASSWD [lindex $argv 2]

set i [lindex $argv 3]


spawn telnet

expect "telnet> "

send "open $IP\r"

sleep 1

expect "Username:"

sleep 1

send "$LOGIN\r"

sleep 1

expect "Password:"

sleep 1

send "$PASSWD\r"

sleep 1

expect "*>"

sleep 1

send "sys\r"

sleep 1

expect "*]"

sleep 1

send "dis arp | include $i\r"

sleep 1

expect "*]"

sleep 1

send "quit\r"

sleep 1

expect "*>"

sleep 1

send "quit\r"

access.exp主要是抓取出连接二层交换机IP,内容如下:

#!/usr/bin/expect -f

if { $argc != 4 } {

send_user "error\n"

exit

}

set timeout 30

set IP [lindex $argv 0]

set LOGIN [lindex $argv 1]

set PASSWD [lindex $argv 2]

set port [lindex $argv 3]


spawn telnet

expect "telnet> "

send "open $IP\r"

sleep 1

expect "Username:"

sleep 1

send "$LOGIN\r"

sleep 1

expect "Password:"

sleep 1

send "$PASSWD\r"

sleep 1

expect "*>"

sleep 1

send "sys\r"

sleep 1

expect "*]"

sleep 1

send "dis arp int $port | include 1000\r"

sleep 1

expect "*]"

sleep 1

send "quit\r"

sleep 1

expect "*>"

sleep 1

send "quit\r"

shutdown.exp内容如下:

#!/usr/bin/expect -f

if { $argc != 4 } {

send_user "error\n"

exit

}

set timeout 30

set IP [lindex $argv 0]

set LOGIN [lindex $argv 1]

set PASSWD [lindex $argv 2]

set i [lindex $argv 3]


spawn telnet

expect "telnet> "

send "open $IP\r"

sleep 1

expect "Username:"

sleep 1

send "$LOGIN\r"

sleep 1

expect "Password:"

sleep 1

send "$PASSWD\r"

sleep 1

expect "*>"

sleep 1

send "sys\r"

sleep 1

expect "*]"

sleep 1

send "dis arp | include $i\r"

sleep 1

expect "*]"

sleep 1

send "quit\r"

sleep 1

expect "*>"

sleep 1

send "quit\r"

shutdownport.exp内容如下:

#!/usr/bin/expect -f

if { $argc != 4 } {

send_user "error\n"

exit

}

set timeout 30

set IP [lindex $argv 0]

set LOGIN [lindex $argv 1]

set PASSWD [lindex $argv 2]

set acport [lindex $argv 3]


spawn telnet

expect "telnet> "

send "open $IP\r"

sleep 1

expect "Username:"

sleep 1

send "$LOGIN\r"

sleep 1

expect "Password:"

sleep 1

send "$PASSWD\r"

sleep 1

expect "*>"

sleep 1

send "sys\r"

sleep 1

expect "*]"

sleep 1

send "in $acport\r"

sleep 1

expect "*]"

sleep 1

send "dis this\r"

sleep 1

expect "*]"

sleep 1

send "quit\r"

sleep 1

expect "*]"

sleep 1

send "quit\r"

sleep 1

expect "*>"

sleep 1

send "quit\r"

switch.exp内容如下:

#!/usr/bin/expect -f

if { $argc != 4 } {

send_user "error\n"

exit

}

set timeout 30

set IP [lindex $argv 0]

set LOGIN [lindex $argv 1]

set PASSWD [lindex $argv 2]

set PORTHAO [lindex $argv 3]


spawn telnet

expect "telnet> "

send "open $IP\r"

sleep 1

expect "Username:"

sleep 1

send "$LOGIN\r"

sleep 1

expect "Password:"

sleep 1

send "$PASSWD\r"

sleep 1

expect "*>"

sleep 1

send "sys\r"

sleep 1

expect "*]"

sleep 1

send "in gi1/0/$PORTHAO\r"

sleep 1

expect "*]"

sleep 1

send "packet-filter 3000 inbound\r"

sleep 1

expect "*]"

sleep 1

send "quit\r"

sleep 1

expect "*]"

sleep 1

send "quit\r"

sleep 1

expect "*>"

sleep 1

send "quit\r"

我在这里只写出华三交换机的范例,cisco的我就不写了,原理是一样的,只是有些命令不一样而以,我把相关脚本都上传到附件里,大家有什么不明白的可以邮件给我wangyanjie_001@163.com。