| #!/bin/sh |
| |
| ################################################################################ |
| ## ## |
| ## Copyright (c) International Business Machines Corp., 2005 ## |
| ## ## |
| ## This program is free software; you can redistribute it and#or modify ## |
| ## it under the terms of the GNU General Public License as published by ## |
| ## the Free Software Foundation; either version 2 of the License, or ## |
| ## (at your option) any later version. ## |
| ## ## |
| ## This program is distributed in the hope that it will be useful, but ## |
| ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## |
| ## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## |
| ## for more details. ## |
| ## ## |
| ## You should have received a copy of the GNU General Public License ## |
| ## along with this program; if not, write to the Free Software ## |
| ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## |
| ## ## |
| ## ## |
| ################################################################################ |
| # |
| # File: |
| # ns-echoclient |
| # |
| # Description: |
| # Send various kind of echo request |
| # |
| # Author: |
| # Mitsuru Chinen <mitch@jp.ibm.com> |
| # |
| # Options: |
| # -S name or IP address of the server |
| # -f protocol family |
| # 4: IPv4 |
| # 6: IPv6 |
| # -s array of packet size |
| # -t timeout [sec] |
| # -h display this usage |
| # |
| # Outputs: |
| # Process ID of the TCP traffic server |
| # |
| # Exit Value: |
| # 0: Exit normally |
| # >0: Exit abnormally |
| # |
| # History: |
| # Oct 19 2005 - Created (Mitsuru Chinen) |
| # |
| #----------------------------------------------------------------------- |
| #Uncomment line below for debug output. |
| #trace_logic=${trace_logic:-"set -x"} |
| $trace_logic |
| |
| #----------------------------------------------------------------------- |
| # |
| # Function: usage |
| # |
| # Description: |
| # Print the usage of this script, then exit |
| # |
| # Argument |
| # value: exit value |
| # |
| #----------------------------------------------------------------------- |
| usage(){ |
| value=$1 |
| cat << EOD >&2 |
| ns-echoclient [OPTION] |
| -S name or IP address of the server |
| -f protocol family |
| 4: IPv4 |
| 6: IPv6 |
| -s array of packet size |
| -h display this usage |
| EOD |
| |
| exit $value |
| } |
| |
| |
| # |
| # Main |
| # |
| |
| family=0 |
| |
| while getopts 'S:f:s:h' opt ; do |
| case $opt in |
| 'S') |
| server_name=$OPTARG |
| ;; |
| 'f') |
| family=$OPTARG |
| ;; |
| 's') |
| size_array="$OPTARG" |
| ;; |
| 'h') |
| usage 0 |
| ;; |
| *) |
| echo "Unknown option" >&2 |
| usage 1 |
| ;; |
| esac |
| done |
| |
| # Check the server name |
| if [ x$server_name = x ]; then |
| echo "server name isn't specified." |
| usage 1 |
| fi |
| |
| # Define the protocol family |
| case $family in |
| 4) |
| ping_command="ping" |
| ;; |
| 6) |
| ping_command="ping6" |
| ;; |
| *) |
| echo "protocol family should be 4 or 6." |
| usage 1 |
| ;; |
| esac |
| |
| # Send the echo request |
| if [ x"$size_array" = x ]; then |
| $ping_command $server_name >/dev/null 2>&1 & |
| else |
| for size in $size_array ; do |
| $ping_command -s $size $server_name >/dev/null 2>&1 & |
| done |
| fi |
| |
| exit 0 |