• # wikisys

    Posté par . En réponse au message Récupérer les infos réseau. Évalué à 3.

    Pour le concours :
    ip=$( ifconfig | grep -v '127\.0\.0\.1' | sed -n 's/.*adr:\([^ ]*\) .*/1円/p' )
    
    Sinon j'ai fait un chti script qui a pour but de convertir la config réseau de mes serveurs Linux en syntaxe wiki, le résultat est ensuite posté dans dokuwiki. C'est pas super élégant, ça à l'air fiable, et sûrement pas portable (tant qu'on a pas testé...). Exemple de résultat :
    ^ Interface ^ MAC ^ IP ^ Masque ^ Network ^
    | eth1 | 00:0E:35:70:AA:31 | 192.168.0.2 | 255.255.255.0 | 192.168.0.0/24 |
    | lo | ? | 127.0.0.1 | 255.0.0.0 | 127.0.0.0/8 |
    
    Le script :
    export LANG=C
    # Table header
    echo "^ Interface ^ MAC ^ IP ^ Masque ^ Network ^"
    # Parse ifconfig with awk, results one line per interface
    ifconfig | awk -F " *" '
    # Each interface definition ends with an empty line,
    # even the last one. When an empty line is found we
    # print the results.
    0ドル == "" {
     print iface" "mac" "ip" "masque
     iface = mac = ip = masque = "?"
     next
    }
    # Get interesting values
    1ドル !~ /^ *$/ { iface = 1ドル }
    2ドル ~ /^inet$/ { split( 3,ドル a_res, ":" ); ip = a_res[2] }
    4ドル ~ /^Mask:/ { split( 4,ドル a_res, ":" ); masque = a_res[2] }
    5ドル ~ /^Mask:/ { split( 5,ドル a_res, ":" ); masque = a_res[2] }
    4ドル == "HWaddr" { mac = 5ドル }
    ' | while read iface mac ip masque
    do
     # ipcalc gets network address and CIDR notation
     net=$( ipcalc -bn $ip"/"$masque | awk -F " *" '/Network:/ { print 2ドル }' )
     # print each line
     echo '| '$iface' | '$mac' | '$ip' | '$masque' | '$net' |'
    done
    
    Et Pour mettre en forme les routes de la manière suivante :
    ^ Iface ^ Destination ^ Genmask ^ Gateway ^ 
    | eth1 | 192.168.0.0 | 255.255.255.0 | 0.0.0.0 |
    | eth1 | 0.0.0.0 | 0.0.0.0 | 192.168.0.254 |
    
    J'utilise :
    LANG=C route -n | awk -F " *" '
    NR == 2 { print "^ "8ドル" ^ "1ドル" ^ "3ドル" ^ "2ドル" ^ "; next }
    NR >=3 { print "| "8ドル" | "1ドル" | "3ドル" | "2ドル" |" }
    '