Home | History | Annotate | Download | only in ns-tools
      1 #!/bin/sh
      2 
      3 ################################################################################
      4 ##                                                                            ##
      5 ## Copyright (c) International Business Machines  Corp., 2005                 ##
      6 ##                                                                            ##
      7 ## This program is free software;  you can redistribute it and#or modify      ##
      8 ## it under the terms of the GNU General Public License as published by       ##
      9 ## the Free Software Foundation; either version 2 of the License, or          ##
     10 ## (at your option) any later version.                                        ##
     11 ##                                                                            ##
     12 ## This program is distributed in the hope that it will be useful, but        ##
     13 ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
     14 ## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
     15 ## for more details.                                                          ##
     16 ##                                                                            ##
     17 ## You should have received a copy of the GNU General Public License          ##
     18 ## along with this program;  if not, write to the Free Software               ##
     19 ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
     20 ##                                                                            ##
     21 ##                                                                            ##
     22 ################################################################################
     23 #
     24 # File:
     25 #   ns-echoclient
     26 #
     27 # Description:
     28 #   Send various kind of echo request
     29 #
     30 # Author:
     31 #   Mitsuru Chinen <mitch (at] jp.ibm.com>
     32 #
     33 # Options:
     34 #   -S name or IP address of the server
     35 #   -f protocol family
     36 #	4: IPv4
     37 #	6: IPv6
     38 #   -s array of packet size
     39 #   -t timeout [sec]
     40 #   -h display this usage
     41 #
     42 # Outputs:
     43 #   Process ID of the TCP traffic server
     44 #
     45 # Exit Value:
     46 #    0: Exit normally
     47 #   >0: Exit abnormally
     48 #
     49 # History:
     50 #   Oct 19 2005 - Created (Mitsuru Chinen)
     51 #
     52 #-----------------------------------------------------------------------
     53 #Uncomment line below for debug output.
     54 #trace_logic=${trace_logic:-"set -x"}
     55 $trace_logic
     56 
     57 #-----------------------------------------------------------------------
     58 #
     59 # Function: usage
     60 #
     61 # Description:
     62 #   Print the usage of this script, then exit
     63 #
     64 # Argument
     65 #   value: exit value
     66 #
     67 #-----------------------------------------------------------------------
     68 usage(){
     69     value=$1
     70     cat << EOD >&2
     71 ns-echoclient [OPTION]
     72 	-S name or IP address of the server
     73 	-f protocol family
     74 		4: IPv4
     75 		6: IPv6
     76 	-s array of packet size
     77 	-h display this usage
     78 EOD
     79 
     80     exit $value
     81 }
     82 
     83 
     84 #
     85 # Main
     86 #
     87 
     88 family=0
     89 
     90 while getopts 'S:f:s:h' opt ; do
     91     case $opt in
     92 	'S')
     93 	server_name=$OPTARG
     94 	;;
     95 	'f')
     96 	family=$OPTARG
     97 	;;
     98 	's')
     99 	size_array="$OPTARG"
    100 	;;
    101 	'h')
    102 	usage 0
    103 	;;
    104 	*)
    105 	echo "Unknown option" >&2
    106 	usage 1
    107 	;;
    108     esac
    109 done
    110 
    111 # Check the server name
    112 if [ x$server_name = x ]; then
    113     echo "server name isn't specified."
    114     usage 1
    115 fi
    116 
    117 # Define the protocol family
    118 case $family in
    119     4)
    120     ping_command="ping"
    121     ;;
    122     6)
    123     ping_command="ping6"
    124     ;;
    125     *)
    126     echo "protocol family should be 4 or 6."
    127     usage 1
    128     ;;
    129 esac
    130 
    131 # Send the echo request
    132 if [ x"$size_array" = x ]; then
    133     $ping_command $server_name >/dev/null 2>&1 &
    134 else
    135     for size in $size_array ; do
    136 	$ping_command -s $size $server_name >/dev/null 2>&1 &
    137     done
    138 fi
    139 
    140 exit 0
    141