73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #!/bin/sh
 | |
| #$Id$
 | |
| 
 | |
| #
 | |
| # Script created by: Stephen R. van den Berg <srb@cuci.nl>, 1999/04/18
 | |
| # Donated to the public domain.
 | |
| #
 | |
| # This script transforms the output of "ip" into more readable text.
 | |
| # "ip" is the Linux-advanced-routing configuration tool part of the
 | |
| # iproute package.
 | |
| #
 | |
| 
 | |
| test "X-h" = "X$1" && echo "Usage: $0 [tablenr [raw ip args...]]" && exit 64
 | |
| 
 | |
| test -z "$*" && set 0
 | |
| 
 | |
| ip route list table "$@" |
 | |
|  while read network rest
 | |
|  do set xx $rest
 | |
|     shift
 | |
|     proto=""
 | |
|     via=""
 | |
|     dev=""
 | |
|     scope=""
 | |
|     src=""
 | |
|     table=""
 | |
|     case $network in
 | |
|        broadcast|local|unreachable) via=$network
 | |
|           network=$1
 | |
|           shift
 | |
|           ;;
 | |
|     esac
 | |
|     while test $# != 0
 | |
|     do
 | |
|        case "$1" in
 | |
|           proto|via|dev|scope|src|table)
 | |
|              key=$1
 | |
|              val=$2
 | |
|              eval "$key='$val'"
 | |
|              shift 2
 | |
|              ;;
 | |
|           dead|onlink|pervasive|offload|notify|linkdown|unresolved)
 | |
|              shift
 | |
|              ;;
 | |
|           *)
 | |
|              # avoid infinite loop on unknown keyword without value at line end
 | |
|              shift
 | |
|              shift
 | |
|              ;;
 | |
|        esac
 | |
|     done
 | |
|     echo "$network	$via	$src	$proto	$scope	$dev	$table"
 | |
|  done | awk -F '	' '
 | |
| BEGIN {
 | |
|    format="%15s%-3s %15s %15s %8s %8s%7s %s\n";
 | |
|    printf(format,"target","","gateway","source","proto","scope","dev","tbl");
 | |
|  }
 | |
|  { network=$1;
 | |
|    mask="";
 | |
|    if(match(network,"/"))
 | |
|     { mask=" "substr(network,RSTART+1);
 | |
|       network=substr(network,0,RSTART);
 | |
|     }
 | |
|    via=$2;
 | |
|    src=$3;
 | |
|    proto=$4;
 | |
|    scope=$5;
 | |
|    dev=$6;
 | |
|    table=$7;
 | |
|    printf(format,network,mask,via,src,proto,scope,dev,table);
 | |
|  }
 | |
| '
 |