[PERL] commande pour un débutant
Résolu/Fermé
floxi
Messages postés
145
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
15 avril 2016
-
5 juin 2007 à 18:01
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 6 juin 2007 à 18:49
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 6 juin 2007 à 18:49
A voir également:
- [PERL] commande pour un débutant
- Invite de commande - Guide
- Commande terminal mac - Guide
- Logiciel de programmation pour débutant - Guide
- Diskpart commande - Guide
- Commande dism - Guide
10 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
5 juin 2007 à 19:15
5 juin 2007 à 19:15
Salut,
je n'ai pas d'erreur de syntaxe
je n'ai pas d'erreur de syntaxe
lami20j@debian:~$ cat ccm.pl #!/usr/bin/perl use strict;use warnings; foreach my $VAR (`snmpwalk sd21 -c public -v 2c Ifoperstatus | grep up | grep 101 | cut -d "." -f2 | cut -d " " -f1`) { my $varin = `snmpwalk sd21 -c public -v 2c ifInOctets.$VAR | cut -d " " -f4` ; print"$varin\n"; } lami20j@debian:~$ perl -cW ccm.pl ccm.pl syntax OKque doit faire ton code?
floxi
Messages postés
145
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
15 avril 2016
94
6 juin 2007 à 08:03
6 juin 2007 à 08:03
Merci de ta réponse,
explication:
En fait voila ce que devrais faire le code , pour chaque interface up d'un switch, afficher uniquement le débit entrant, via la commande snmpwalk.
J'essai en fait de transcrire ce script shell en PERL:
Si j'enleve du code perl le " | cut -d " " -f4" voila ce que cela ramène:
Et ce que je désire c'est garder uniquement la dernière valeur
Des idées?
Merci de vos réponses
explication:
En fait voila ce que devrais faire le code , pour chaque interface up d'un switch, afficher uniquement le débit entrant, via la commande snmpwalk.
J'essai en fait de transcrire ce script shell en PERL:
for i in `snmpwalk $host -c $com -v $vers Ifoperstatus | grep up | grep 101 | cut -d "." -f2 | cut -d " " -f1` ; do varin=`snmpwalk sd21 -c public -v 2c ifInOctets.$i| cut -d " " -f4`` in=`sh $rep/scriptbc $in+$varin` done
Si j'enleve du code perl le " | cut -d " " -f4" voila ce que cela ramène:
IF-MIB::ifInOctets.10101 = Counter32: 883735657 IF-MIB::ifInOctets.10102 = Counter32: 4226079414 IF-MIB::ifInOctets.10103 = Counter32: 2947602820 IF-MIB::ifInOctets.10105 = Counter32: 3821959613 IF-MIB::ifInOctets.10106 = Counter32: 852246388 IF-MIB::ifInOctets.10108 = Counter32: 560528995 IF-MIB::ifInOctets.10109 = Counter32: 672882322 IF-MIB::ifInOctets.10110 = Counter32: 247499512 IF-MIB::ifInOctets.10111 = Counter32: 613109941 IF-MIB::ifInOctets.10112 = Counter32: 3541198374 IF-MIB::ifInOctets.10113 = Counter32: 1954398019 IF-MIB::ifInOctets.10114 = Counter32: 2185799660 IF-MIB::ifInOctets.10115 = Counter32: 768 IF-MIB::ifInOctets.10116 = Counter32: 3930895612 IF-MIB::ifInOctets.10117 = Counter32: 2615655947 IF-MIB::ifInOctets.10120 = Counter32: 1084073186 IF-MIB::ifInOctets.10121 = Counter32: 856584858 IF-MIB::ifInOctets.10122 = Counter32: 1845225790 IF-MIB::ifInOctets.10123 = Counter32: 83744505 IF-MIB::ifInOctets.10124 = Counter32: 3057346105 IF-MIB::ifInOctets.10125 = Counter32: 3162132350 IF-MIB::ifInOctets.10127 = Counter32: 3862719933 IF-MIB::ifInOctets.10128 = Counter32: 784908254
Et ce que je désire c'est garder uniquement la dernière valeur
Des idées?
Merci de vos réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 juin 2007 à 10:17
6 juin 2007 à 10:17
Salut,
En fait voila ce que devrais faire le code , pour chaque interface up d'un switch, afficher uniquement le débit entrant, via la commande snmpwalk.
je pense que tu te compliques un peu
Si tu me donne ce qu'il t'affiche la commande
Sinon, autant le faire en shell.
A toi.
En fait voila ce que devrais faire le code , pour chaque interface up d'un switch, afficher uniquement le débit entrant, via la commande snmpwalk.
je pense que tu te compliques un peu
Si tu me donne ce qu'il t'affiche la commande
snmpwalk $host -c $com -v $vers Ifoperstatuset tu me dit ce que tu veux, je pourrai tout parser en Perl sans avoir besoin d'utiliser des commandes Unix (grep, cut, etc).
Sinon, autant le faire en shell.
A toi.
floxi
Messages postés
145
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
15 avril 2016
94
6 juin 2007 à 10:50
6 juin 2007 à 10:50
$ snmpwalk sd21 -c public -v 2c Ifoperstatus
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
IF-MIB::ifOperStatus.2 = INTEGER: up(1)
IF-MIB::ifOperStatus.3 = INTEGER: up(1)
IF-MIB::ifOperStatus.4 = INTEGER: up(1)
IF-MIB::ifOperStatus.5 = INTEGER: up(1)
IF-MIB::ifOperStatus.6 = INTEGER: up(1)
IF-MIB::ifOperStatus.10101 = INTEGER: up(1)
IF-MIB::ifOperStatus.10102 = INTEGER: up(1)
IF-MIB::ifOperStatus.10103 = INTEGER: up(1)
IF-MIB::ifOperStatus.10104 = INTEGER: down(2)
IF-MIB::ifOperStatus.10105 = INTEGER: up(1)
IF-MIB::ifOperStatus.10106 = INTEGER: up(1)
IF-MIB::ifOperStatus.10107 = INTEGER: down(2)
IF-MIB::ifOperStatus.10108 = INTEGER: up(1)
IF-MIB::ifOperStatus.10109 = INTEGER: up(1)
IF-MIB::ifOperStatus.10110 = INTEGER: up(1)
IF-MIB::ifOperStatus.10111 = INTEGER: up(1)
IF-MIB::ifOperStatus.10112 = INTEGER: up(1)
IF-MIB::ifOperStatus.10113 = INTEGER: up(1)
IF-MIB::ifOperStatus.10114 = INTEGER: up(1)
IF-MIB::ifOperStatus.10115 = INTEGER: up(1)
IF-MIB::ifOperStatus.10116 = INTEGER: up(1)
IF-MIB::ifOperStatus.10117 = INTEGER: up(1)
IF-MIB::ifOperStatus.10118 = INTEGER: down(2)
IF-MIB::ifOperStatus.10119 = INTEGER: down(2)
IF-MIB::ifOperStatus.10120 = INTEGER: up(1)
IF-MIB::ifOperStatus.10121 = INTEGER: up(1)
IF-MIB::ifOperStatus.10122 = INTEGER: up(1)
IF-MIB::ifOperStatus.10123 = INTEGER: up(1)
IF-MIB::ifOperStatus.10124 = INTEGER: up(1)
IF-MIB::ifOperStatus.10125 = INTEGER: up(1)
IF-MIB::ifOperStatus.10126 = INTEGER: down(2)
IF-MIB::ifOperStatus.10127 = INTEGER: up(1)
IF-MIB::ifOperStatus.10128 = INTEGER: up(1)
IF-MIB::ifOperStatus.14501 = INTEGER: up(1)
Il faut comptabiliser uniquement les interface 10101->10128
merci
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
IF-MIB::ifOperStatus.2 = INTEGER: up(1)
IF-MIB::ifOperStatus.3 = INTEGER: up(1)
IF-MIB::ifOperStatus.4 = INTEGER: up(1)
IF-MIB::ifOperStatus.5 = INTEGER: up(1)
IF-MIB::ifOperStatus.6 = INTEGER: up(1)
IF-MIB::ifOperStatus.10101 = INTEGER: up(1)
IF-MIB::ifOperStatus.10102 = INTEGER: up(1)
IF-MIB::ifOperStatus.10103 = INTEGER: up(1)
IF-MIB::ifOperStatus.10104 = INTEGER: down(2)
IF-MIB::ifOperStatus.10105 = INTEGER: up(1)
IF-MIB::ifOperStatus.10106 = INTEGER: up(1)
IF-MIB::ifOperStatus.10107 = INTEGER: down(2)
IF-MIB::ifOperStatus.10108 = INTEGER: up(1)
IF-MIB::ifOperStatus.10109 = INTEGER: up(1)
IF-MIB::ifOperStatus.10110 = INTEGER: up(1)
IF-MIB::ifOperStatus.10111 = INTEGER: up(1)
IF-MIB::ifOperStatus.10112 = INTEGER: up(1)
IF-MIB::ifOperStatus.10113 = INTEGER: up(1)
IF-MIB::ifOperStatus.10114 = INTEGER: up(1)
IF-MIB::ifOperStatus.10115 = INTEGER: up(1)
IF-MIB::ifOperStatus.10116 = INTEGER: up(1)
IF-MIB::ifOperStatus.10117 = INTEGER: up(1)
IF-MIB::ifOperStatus.10118 = INTEGER: down(2)
IF-MIB::ifOperStatus.10119 = INTEGER: down(2)
IF-MIB::ifOperStatus.10120 = INTEGER: up(1)
IF-MIB::ifOperStatus.10121 = INTEGER: up(1)
IF-MIB::ifOperStatus.10122 = INTEGER: up(1)
IF-MIB::ifOperStatus.10123 = INTEGER: up(1)
IF-MIB::ifOperStatus.10124 = INTEGER: up(1)
IF-MIB::ifOperStatus.10125 = INTEGER: up(1)
IF-MIB::ifOperStatus.10126 = INTEGER: down(2)
IF-MIB::ifOperStatus.10127 = INTEGER: up(1)
IF-MIB::ifOperStatus.10128 = INTEGER: up(1)
IF-MIB::ifOperStatus.14501 = INTEGER: up(1)
Il faut comptabiliser uniquement les interface 10101->10128
merci
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 juin 2007 à 13:24
6 juin 2007 à 13:24
Ben, il y a une incohérence en ce qui tous demande
IF-MIB::ifInOctets.10128 = Counter32: 784908254
et ça
IF-MIB::ifOperStatus.14501 = INTEGER: up(1)
Il n'y a pas la possibilté d'obtenir un résultat groupé groupé ?
Tu applique la commande snmpwalk sur un résultat d'une commande précedente snmpwalk, c'est un peu rédondant.
Quelque chose de genre (je ne connais pas cette application)
snmpwalk sd21 -c public -v 2c Ifoperstatus -v 2c ifInOctets
IF-MIB::ifInOctets.10128 = Counter32: 784908254
et ça
IF-MIB::ifOperStatus.14501 = INTEGER: up(1)
Il n'y a pas la possibilté d'obtenir un résultat groupé groupé ?
Tu applique la commande snmpwalk sur un résultat d'une commande précedente snmpwalk, c'est un peu rédondant.
Quelque chose de genre (je ne connais pas cette application)
snmpwalk sd21 -c public -v 2c Ifoperstatus -v 2c ifInOctets
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
floxi
Messages postés
145
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
15 avril 2016
94
6 juin 2007 à 14:51
6 juin 2007 à 14:51
Non on ne peut rassembler les deux valeur car il doit y avoir un test :
Si: l'interface est UP (ifoperstatus)
Alors: comptabiliser le traffic ( ifinoctect)
Je pense ne pas etre loin de la solution avec mon script il faut juste résoudre cette petite erreur peut etre des guillment des crochet je ne sais pas et ne trouve pas :
`snmpwalk sd21 -c public -v 2c ifInOctets.$VAR | cut -d " " -f4` ;
Si: l'interface est UP (ifoperstatus)
Alors: comptabiliser le traffic ( ifinoctect)
Je pense ne pas etre loin de la solution avec mon script il faut juste résoudre cette petite erreur peut etre des guillment des crochet je ne sais pas et ne trouve pas :
`snmpwalk sd21 -c public -v 2c ifInOctets.$VAR | cut -d " " -f4` ;
floxi
Messages postés
145
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
15 avril 2016
94
6 juin 2007 à 15:38
6 juin 2007 à 15:38
Apparament cela s'avère plus compliqué que je ne le pensait.
Résumé de ce que je cherche une commande perl qui feria ca:
j'ai:
Je shouhaite obtenir cela:
Résumé de ce que je cherche une commande perl qui feria ca:
j'ai:
IF-MIB::ifInOctets.10101 = Counter32: 2522564922 IF-MIB::ifInOctets.10102 = Counter32: 3048390914 IF-MIB::ifInOctets.10103 = Counter32: 3037847876 IF-MIB::ifInOctets.10105 = Counter32: 4002527322 IF-MIB::ifInOctets.10106 = Counter32: 858424052
Je shouhaite obtenir cela:
2522564922 3048390914 3037847876 4002527322 858424052
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 juin 2007 à 15:42
6 juin 2007 à 15:42
essaie
foreach $VAR (`snmpwalk sd21 -c public -v 2c Ifoperstatus | grep up | grep 101 | cut -d "." -f2 | cut -d " " -f1`) { my $varin = `snmpwalk sd21 -c public -v 2c ifInOctets.$VAR` ; $varin =~ s/.*:\s*//; print"$varin\n"; }
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 juin 2007 à 15:45
6 juin 2007 à 15:45
oups, error!
floxi
Messages postés
145
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
15 avril 2016
94
6 juin 2007 à 16:19
6 juin 2007 à 16:19
Ca marche,
Moi qui fesait que du shell c'est quand meme un peu plus compliqué qu'un "cut" lol.
Un grand merci lami20j
$varin =~ s/.*:\s*//;
Moi qui fesait que du shell c'est quand meme un peu plus compliqué qu'un "cut" lol.
Un grand merci lami20j
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 juin 2007 à 16:22
6 juin 2007 à 16:22
c'est quand meme un peu plus compliqué qu'un "cut" lol.
c'est compliqué quand on ne sait pas :-))
et c'est facile quand on le sait :-))
Quand j'ai parlé de cut je n'ai pas pensé au simple, mais plutôt à la paresse :-))
Trop de cut quand même.
Voilà une version optimisé (je ne l'ai pas testé, mais pas de cut ou grep shell, le grep que j'utilise c'est une fontion Perl), je vais le tester ce soir chez moi. Je mets en résolu quand même :-)
lami20j
c'est compliqué quand on ne sait pas :-))
et c'est facile quand on le sait :-))
Quand j'ai parlé de cut je n'ai pas pensé au simple, mais plutôt à la paresse :-))
Trop de cut quand même.
Voilà une version optimisé (je ne l'ai pas testé, mais pas de cut ou grep shell, le grep que j'utilise c'est une fontion Perl), je vais le tester ce soir chez moi. Je mets en résolu quand même :-)
foreach $VAR ( grep { /(101\d*)\s*=.*up/ } `snmpwalk sd21 -c public -v 2c Ifoperstatus` ) { my $varin = `snmpwalk sd21 -c public -v 2c ifInOctets.$VAR` ; print"$varin\n"; }--
lami20j
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 juin 2007 à 18:49
6 juin 2007 à 18:49
Essaie ça
foreach $VAR ( grep { s/.*(101\d*)\s*=.*up.*/$1/ } `snmpwalk sd21 -c public -v 2c Ifoperstatus` ) { my $varin = `snmpwalk sd21 -c public -v 2c ifInOctets.$VAR` ; print"$varin\n"; }