Aide script batch

Fermé
roger - 28 avril 2011 à 15:42
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 - 29 avril 2011 à 15:34
Bonjour,
j'aimerais traduire en batch le programme ci-dessous

variables :
model = Cisco IOS Software 3750/2960/....
port = valeur entre 1 et 24

si le modele contient "3750" et le port est compris entre 1 et 9 alors
action 1
sinon
action 2
si le modele contient "2960" et le port est compris entre 1 et 9 alors
action 3
sinon
action 4

en fait les variables sont valorisés par les entrees d'un utilisateur
mais je bloque pour traduire en batch les expressions suivantes : "contient tel valeur" et "compris entre 1 et N"
je ne sais pas trop également comment gérer les conditions

merci d'avance pour votre aide

A voir également:

5 réponses

BeFaX Messages postés 14245 Date d'inscription mercredi 24 décembre 2008 Statut Contributeur Dernière intervention 6 août 2013 3 812
28 avril 2011 à 17:14
l'utilisateur doit-il entrer lui même le modèle ?
Quels sont les différents modèles ?
0
tout d'abord merci pour ta réponse
non en fait pour tout t'expliquer l'utilisateur entre une adresse ip
j'envoie un snmpget sur l'équipement pour récupérer le modèle et je stocke le résultat dans la variable modèle
pour info : il ya 3 modeles : 3750,2950 et 2960
0
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
28 avril 2011 à 19:29
Bonsoir,

Voici une suggestion et qui fonctionne, on faudra être quand même vigilant sur le contenu de la variable model et faire un test de sn contenu en conséquence.

Pour vous aider il suffit sous une boîte DOS (CMD) de saisir If /? pour avoir la syntaxe de cette commande (et on peut faire beaucoup de choses avec).

Voci mon exemple:

@Echo off
set port=10
Set model=Cisco IOS Software 2960

If "%model%"=="Cisco IOS Software 3750" goto Port_3750
If "%model%"=="Cisco IOS Software 2950" goto Port_2950
If "%model%"=="Cisco IOS Software 2960" goto Port_2960
Goto Erreur


:port_3750
If %port% GEQ 1 if %port% LEQ 9 (echo Je fais action 1 et la valeur du port=%port%) else echo Je fais action 2 ou La valeur du port est incorrecte...
Goto End

:port_2950
If %port% GEQ 1 if %port% LEQ 9 (echo Je fais action 3 et la valeur du port=%port%) else echo Je fais action 4 ou La valeur du port est incorrecte...
Goto End

:port_2960
If %port% GEQ 1 if %port% LEQ 9 (echo Je fais action 5 et la valeur du port=%port%) else echo Je fais action 6 ou La valeur du port est incorrecte...
Goto End


:Erreur
Cls
Echo.
Echo.
Echo *** ERREUR : impossible de déterminer le modele de la machine...!!!
Echo.
Echo.
Pause

:End
Set model=
Set port=
Echo On sort du Batch....


**************************************************

J'ai fait des tests et cela fonctionne. A vous de voir au niveau des tests pour le contenu de la variable port et avec ceci ils pourront être différents selon le modèle.

Bonne soirée.
0
merci pour votre réponse et votre exemple, je pense qu'il me sera très utile
mais il y a peut etre un souci avec la variable modèle, elle ne sera pas valorisé commedans le format ci-dessus.
comme je l'ai dis au dessus, je fais un snmpget, et je stocke la réponse en variable
la réponse aura ce format là :

DISPLAY STRING- (ascii):Cisco Internetwork Operating System Software
IOS (tm) 2500 Software (C3750-JS-L), Version 12.0(1)T,RELEASE SOFTWARE (fc2)
Copyright (c) 1986-1998 by cisco Systems, Inc.
Compiled Wed 04-Nov-98 20:37 by dschwart

donc je voudrais dire si modèle CONTIENT "3750" alors tu fais ça!

ce n'est peut être pas le moyen le plus simple, peut etre qu'il y a un moyen avec des expression régulières de stocker seulement le modèle dans la réponse qui est donné ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
29 avril 2011 à 15:34
Bonjour,

Le format indiqué ci-dessus est-il sur une seule ligne donc sans retour chariot ou bien est-ce réellement sur 4 lignes et je ne vois pas dans ce cas comment on peut mettre de telles données dans une seule variable (au sens Batch).

Si ce format est bien contenu dans une seule variable (donc sans retour chariot), il est possible de créer un fichier temporaire comportant toutes ces données et de faire un FINDSTR sur le modèle de l'équipement voulu et ensuite si OK de seter en conséquence la variable "model" puis de tester sa valeur etc...

Si le format correspond à ce qu'on appelle une Box de texte, je pense qu'il faudra développer sous VB un petit outil pour rechercher une valeur donnée ou alors il faut se débrouiller en amont pour que cette variable ne contienne que 3750 ou 2950 etc .


Cdlt.
0