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);
 | 
						|
 }
 | 
						|
'
 |