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