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: