因为工作原因,经常需要对很多IP和很多端口进行traceroue测试,所以自己整了一个脚本,这个脚本只适合我自己用,想用的可以根据情况自己改一下。


脚本内容:

#!/bin/bash
date > "./"$HOSTNAME"_ping_result.txt"
date > "./"$HOSTNAME"_trace_result.txt"
cat ./traceip.txt|grep -v '^#'|while read line
do
        ip_tcpudp=`echo $line|awk '{print $1}'`
        ip_addr=`echo $line|awk '{print $2}'`
        ip_port_all=`echo $line|awk '{print $3}'`
        #echo "ping -c 4  $ip_addr" >> "./"$HOSTNAME"_ping_result.txt"
        #ping -c 4  $ip_addr >> "./"$HOSTNAME"_ping_result.txt"
        OLD_IFS="$IFS" 
        IFS="/" 
        arr=($ip_port_all) 
        IFS="$OLD_IFS" 
        for ip_port in ${arr[@]} 
        do 
                echo "status:trace $ip_addr:$ip_port  $ip_tcpudp"       
                if [ $ip_tcpudp == "UDP"  ];then
                        echo "traceroute  -n -U -p  $ip_port $ip_addr" >> "./"$HOSTNAME"_trace_result.txt"
                        traceroute -n -U -p $ip_port $ip_addr >> "./"$HOSTNAME"_trace_result.txt"
                else
                        echo "traceroute  -n -T -p  $ip_port $ip_addr" >> "./"$HOSTNAME"_trace_result.txt"
                        traceroute -n -T -p $ip_port $ip_addr >> "./"$HOSTNAME"_trace_result.txt"
                 fi
        done
#sleep 30
done


traceip.txt 内容格式

TCP     10.168.0.1    22/1061
TCP     10.168.0.2    22/1061
TCP     10.168.0.3    22/1061


协议名+空格或者TAB+IP+空格或者TAB+端口号(端口用/分开)