J'ai fait un petit script pour récupérer des données sur mon routeur (le petit BeWAN ADSL ethernet cx livré par Télé2, sississi, en fait c'est un routeur; pour les curieux, essayez http://votre_modem_bewan/doc/toc.htm,(...) ou connectez-vous à la bête par ftp pour avoir une idée du contenu, mais je digresse), à savoir l'adresse ip externe et les quantités de données transmises en émission et en réception. Comme je ne suis pas un pro du script, je récupère les données dans les pages html servies par le routeur avec lynx, et je les passe à la moulinette avec grep et cut.
Le problème: j'ai trois données à récupérer dans deux pages, l'adresse externe dans wan.htm, les données transmises dans tcp.htm. Pour le moment, je charge deux fois tcp.htm, comme ceci:
IN=`/usr/bin/lynx --source -auth $username:$password http://$host/doc/tcp.htm(...) | /bin/fgrep "st_tcps_rcvbyte =" | /usr/bin/cut -d'"' -f2`;
OUT=`/usr/bin/lynx --source -auth $username:$password http://$host/doc/tcp.htm(...) | /bin/fgrep "st_tcps_sndbyte =" | /usr/bin/cut -d'"' -f2`;
Est-ce qu'y-a-t-y moyen de récupérer $IN et $OUT en une seule passe, sans balancer de fichier intermédiaire sur le disque ? Y a-t-il dans l'assemblée un guru du shell script pour me donner une meilleure solution ?
Polaris
# Re: Question pour un petit script...
Posté par Pascal Terjan (site web personnel) . Évalué à 10.
ou sinon passer par une variable :)
[^] # Re: Question pour un petit script...
Posté par Polaris . Évalué à 2.
[pinailleur]
fgrep ne fait pas de globbing, il faut revenir à grep
[/pinailleur]
Mais c'est moi qui avait suggéré fgrep...
# Re: Question pour un petit script...
Posté par jmfayard . Évalué à 4.
INOUT=`/usr/bin/lynx --source -auth $username:$password http://$host/doc/tcp.htm(...) | /bin/fgrep "st_tcps_rcvbyte =" ` ;
IN =`echo $INOUT | /bin/fgrep rcvbyte | cut -d"" -f 2`;
OUT=`echo $INOUT | /bin/fgrep sndbyte | cut -d "" -f 2`;
ça fait 7 créations de processus pour pas grand chose, mais bon, à partir d'un moment, tu as intérêt à passer à Perl plutôt que de torturer l'esprit.
[^] # Re: Question pour un petit script...
Posté par Polaris . Évalué à 2.
Et oui, un jour je me mettrai à Perl, promis ;-)
[^] # Re: Question pour un petit script...
Posté par Pascal Terjan (site web personnel) . Évalué à 1.
# Re: Question pour un petit script...
Posté par L. R. . Évalué à 4.
snmpget monrouteur.monresaulocal public MIB
snmpstatus monrouteur.monreseaulocal public
...
En plus si c'est pour l'injecter dans MRTG, ben MRTG gère directement le SNMP (bon, certes, sur 32 bits signés, ce qui limite pas mal, genre le volume des données est limité à 2Go à la place de 4 en 32 bits non signés).
Ca ça serait quand même plus propre que du HTTP, après tout le SNMP est prévu pour ça :)
[^] # Re: Question pour un petit script...
Posté par Polaris . Évalué à 1.
Si quelqu'un peut expérimenter avec la bête (BeWAN ADSL Ethernet cx, pour les étourdis), et révèler l'emplacement du snmp, je suis preneur.
Polaris
[^] # Re: Question pour un petit script...
Posté par L. R. . Évalué à 1.
Give the try, t'as rien à y perdre, tout à y gagner :)
[^] # Re: Question pour un petit script...
Posté par finss (site web personnel) . Évalué à 1.
Il est basé sur UDP se sert des ports 161 et 162 voir : http://christian.caleca.free.fr/snmp/(...) y'a de bonnes explications et une utilisation sympa avec une machine linux et une machine sous un système propriétaire bien connu.
\_o<
[^] # Re: Question pour un petit script...
Posté par Polaris . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.