Journal Question pour un petit script...

Posté par  .
Étiquettes : aucune
0
10
déc.
2003
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  (site web personnel) . Évalué à 10.

    un truc genre eval `/usr/bin/lynx --source -auth $username:$password http://$host/doc/tcp.htm(...) | /bin/fgrep "st_tcps_.*byte =" | sed -e 's/^.*st_tcps_rcvbyte =.*"\(.*\)".*$/IN=\1;/' -e 's/^.*st_tcps_sndbyte =.*"\(.*\)".*$/OUT=\1;/' | tr -d '\n'`

    ou sinon passer par une variable :)
    • [^] # Re: Question pour un petit script...

      Posté par  . Évalué à 2.

      Impeccable, maintenant le script choppe les deux infos en une seule requête, la princesse est sauvée et le royaume peut vivre en paix. Gloire au guru. Je te plussoierais bien, pour la peine...

      [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  . Évalué à 4.

    Rule of Simplicity :
    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  . Évalué à 4.

    Euuh... juste en passant... il aurait pas SNMP o_O ?

    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  . Évalué à 1.

      C'est une question intéressante, et je me la pose aussi. Nmap ne révèle que 3 ports ouverts (ftp, telnet et http), et la seule page web servie par le modem qui parle de snmp est remplie de "TextField Error! - No symbol 'SNMP_blabla_blabla' found", donc je suppose que soit le modem ne gère pas snmp, soit ce n'est pas activé.

      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  . Évalué à 1.

        Perso quand je scan mes routeurs je vois pas SNMP non plus, j'ai pas cherché plus loin mais ça doit pas utiliser TCP ou UDP. J'avais pensé à ICMP ? Je sais pas, faudrait que je vois plus en détails.

        Give the try, t'as rien à y perdre, tout à y gagner :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.