mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	Add tcpping
This commit is contained in:
		
							parent
							
								
									d1ec1018c2
								
							
						
					
					
						commit
						16603b293f
					
				
					 1 changed files with 150 additions and 0 deletions
				
			
		
							
								
								
									
										150
									
								
								openmptcprouter/files/bin/tcpping
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										150
									
								
								openmptcprouter/files/bin/tcpping
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,150 @@ | |||
| #!/bin/sh | ||||
| # | ||||
| # tcpping: test response times using TCP SYN packets | ||||
| #          URL: http://www.vdberg.org/~richard/tcpping.html | ||||
| # | ||||
| # uses tcptraceroute from http://michael.toren.net/code/tcptraceroute/ | ||||
| # | ||||
| # (c) 2002-2005 Richard van den Berg <richard@vdberg.org> under the GPL | ||||
| #               http://www.gnu.org/copyleft/gpl.html | ||||
| # | ||||
| # 2002/12/20 v1.0 initial version | ||||
| # 2003/01/25 v1.1 added -c and -r options | ||||
| #                 now accepting all other tcptraceroute options | ||||
| # 2003/01/30 v1.2 removed double quotes around backquotes | ||||
| # 2003/03/25 v1.3 added -x option, courtesy of Alvin Austin <alvin@crlogic.com> | ||||
| # 2005/03/31 v1.4 added -C option, courtesy of Norman Rasmussen <norman@rasmussen.org> | ||||
| # 2007/01/11 v1.5 catch bad destination addresses | ||||
| # 2007/01/19 v1.6 catch non-root tcptraceroute | ||||
| # 2008/02/10 v1.7 make -C work when reverse lookup fails, courtesy of Fabrice Le Dorze <Fabrice.LeDorze@apx.fr> | ||||
| # 2010/06/04 v1.8 make -C work when ipaddress doesn't reply, courtesy of Yann Beulque | ||||
| 
 | ||||
| 
 | ||||
| ver="v1.8" | ||||
| format="%Y%m%d%H%M%S" | ||||
| d="no" | ||||
| c="no" | ||||
| C="no" | ||||
| ttl=255 | ||||
| seq=0 | ||||
| q=1 | ||||
| r=1 | ||||
| w=3 | ||||
| topts="" | ||||
| 
 | ||||
| usage () { | ||||
| 	name=`basename $0` | ||||
| 	echo "tcpping $ver Richard van den Berg <richard@vdberg.org>" | ||||
| 	echo | ||||
| 	echo "Usage: $name [-d] [-c] [-C] [-w sec] [-q num] [-x count] ipaddress [port]" | ||||
| 	echo | ||||
| 	echo "        -d   print timestamp before every result" | ||||
| 	echo "        -c   print a columned result line" | ||||
| 	echo "        -C   print in the same format as fping's -C option" | ||||
| 	echo "        -w   wait time in seconds (defaults to 3)" | ||||
| 	echo "        -r   repeat every n seconds (defaults to 1)" | ||||
| 	echo "        -x   repeat n times (defaults to unlimited)" | ||||
| 	echo | ||||
| 	echo "See also: man tcptraceroute" | ||||
| 	echo | ||||
| } | ||||
| 
 | ||||
| _checksite() { | ||||
| 	ttr=`tcptraceroute -f ${ttl} -m ${ttl} -q ${q} -w ${w} $* 2>&1` | ||||
| 	if echo "${ttr}" | egrep -i "(bad destination|got roo)" >/dev/null 2>&1; then | ||||
| 		echo "${ttr}" | ||||
| 		exit | ||||
| 	fi | ||||
| } | ||||
| 	 | ||||
| _testsite() { | ||||
| 	myseq="${1}" | ||||
| 	shift | ||||
| 	[ "${c}" = "yes" ] && nows=`date +${format}` | ||||
| 	[ "${d}" = "yes" ] && nowd=`date` | ||||
| 	ttr=`tcptraceroute -f ${ttl} -m ${ttl} -q ${q} -w ${w} $* 2>/dev/null` | ||||
| 	host=`echo "${ttr}" | awk '{print $2 " " $3}'` | ||||
| 	rtt=`echo "${ttr}" | sed 's/.*] //' | awk '{print $1}'` | ||||
| 	not=`echo "${rtt}" | tr -d ".0123456789"` | ||||
| 	[ "${d}" = "yes" ] && echo "$nowd" | ||||
| 	if [ "${c}" = "yes" ]; then | ||||
| 		if [ "x${rtt}" != "x" -a "x${not}" = "x" ]; then | ||||
| 			echo "$myseq $nows $rtt $host" | ||||
| 		else | ||||
| 			echo "$myseq $nows $max $host" | ||||
| 		fi | ||||
| 	elif [ "${C}" = "yes" ]; then | ||||
| 		if [ "$myseq" = "0" ]; then | ||||
| 			echo -n "$1 :" | ||||
| 		fi | ||||
| 		if [ "x${rtt}" != "x" -a "x${not}" = "x" ]; then | ||||
| 			if [ $rtt != "255" ]; then | ||||
| 				echo -n " $rtt" | ||||
| 			else | ||||
| 				echo -n " -" | ||||
| 			fi | ||||
| 		else | ||||
| 			echo -n " -" | ||||
| 		fi | ||||
| 		if [ "$x" = "1" ]; then | ||||
| 			echo | ||||
| 		fi | ||||
| 	else | ||||
| 		echo "${ttr}" | sed -e "s/^.*\*.*$/seq $myseq: no response (timeout)/" -e "s/^$ttl /seq $myseq: tcp response from/" | ||||
| 	fi | ||||
| #       echo "${ttr}" | ||||
| } | ||||
| 
 | ||||
| while getopts dhq:w:cr:nNFSAEi:f:l:m:p:s:x:C opt ; do | ||||
| 	case "$opt" in | ||||
| 		d|c|C) eval $opt="yes" ;; | ||||
| 		q|w|r|x) eval $opt="$OPTARG" ;; | ||||
| 		n|N|F|S|A|E) topt="$topt -$opt" ;; | ||||
| 		i|l|p|s) topt="$topt -$opt $OPTARG" ;; | ||||
| 		f|m) ttl="$OPTARG" ;; | ||||
| 		?) usage; exit ;; | ||||
| 	esac | ||||
| done | ||||
| 
 | ||||
| shift `expr $OPTIND - 1` | ||||
| 
 | ||||
| if [ "x$1" = "x" ]; then | ||||
| 	usage | ||||
| 	exit | ||||
| fi | ||||
| 
 | ||||
| max=`echo "${w} * 1000" | bc` | ||||
| 
 | ||||
| if [ `date +%s` != "%s" ]; then | ||||
| 	format="%s" | ||||
| fi | ||||
| 
 | ||||
| _checksite ${topt} $* | ||||
| 
 | ||||
| if [ "$x" = "" ]; then | ||||
| 	while [ 1 ] ; do | ||||
| 		_testsite ${seq} ${topt} $* & | ||||
| 		pid=$! | ||||
| 		if [ "${C}" = "yes" ]; then | ||||
| 			wait $pid | ||||
| 		fi | ||||
| 		seq=`expr $seq + 1` | ||||
| 		sleep ${r} | ||||
| 	done | ||||
| else | ||||
| 	while [ "$x" -gt 0 ] ; do | ||||
| 		_testsite ${seq} ${topt} $* & | ||||
| 		pid=$! | ||||
| 		if [ "${C}" = "yes" ]; then | ||||
| 			wait $pid | ||||
| 		fi | ||||
| 		seq=`expr $seq + 1` | ||||
| 		x=`expr $x - 1` | ||||
| 		if [ "$x" -gt 0 ]; then | ||||
| 			sleep ${r} | ||||
| 		fi | ||||
| 	done | ||||
| fi | ||||
| 
 | ||||
| exit | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue