[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: adresses IP dans fichier log



Thomas Harding a écrit, mardi 15 juillet 2008, à 19:51 :
> maderios wrote:
[...]
> > Toutes les solutions proposées me semblent assez compliquées pour le
> > simple usager que je suis mais pourquoi pas....
> Y'a pas de simple ou de compliqué, le tout est d'y aller pas à pas.

[...]
> ifaces=`/sbin/ifconfig -s | tail -n +2 | cut --delimiter=" " -f1`
> 
> Cette ligne:
>   * exécute ifconfig -s[ummary]
>   * supprime les 2 premières lignes

Heu, non, seulement la première :

~ $ for n in {1..4};do echo $n;done|tail -n +2
2
3
4

>   * (pour chaque ligne) ne garde que le premier champ, séparateur espace
>   * met le tout dans la variable ifaces

Il vaudrait mieux utiliser "$()" au lieu de `` ; il me semble aussi plus
facile d'utiliser Awk :

  /sbin/ifconfig -s | awk 'NR>1{print $1}'

 Condition : numéro de ligne supérieur à 1.
 {Action} : écrire le premier champ de ces lignes.


Avec Sed aussi c'est simple, mais peut-être moins lisible...

ifaces="$(/sbin/ifconfig -s|sed -e '1d;s/ .*//')"

 On supprime la première ligne, puis tout ce qui suit le premier espace.

Au cas où il y aurait parfois  une marge à gauche et des espaces divers,
l'équivalent du Awk ci-dessus serait plutôt

  sed -e '1d;s/^[[:space:]]*//;s/[[:space:]].*//'


> for iface in $ifaces ; do
>   details=`/sbin/ifconfig $iface | grep inet |
>            sed -e   's/[[:space:]]*//'`
>   logger -p info "$iface $details"
> done

Grep (sans option avancée) est superflu devant sed :

 sed -ne '/inet/s/^[[:space:]]*//p'


[...]
> Toi y'en a comprendre[1] <g>
> 
> 
> 
> 
> 
> [1]il y a un X dans la série BD dont cette inénarrable citation est
> extraite. Je ne cite pas le nom de la série ni celui de l'album, ils
> sont capables de faire un procès ;)

Pas Goscinny :/
-- 
Jacques L'helgoualc'h


Reply to: