Envoi de commandes CISCO publipostées via SSH/Telnet

Fermé
farislg Messages postés 5 Date d'inscription mercredi 12 décembre 2012 Statut Membre Dernière intervention 13 décembre 2012 - 12 déc. 2012 à 16:51
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 2 mai 2013 à 17:40
Bonjour jipicy,


Je voudrai d'abord vous remercier pour ce script qui est très intéressent mais malheureusement ça ne marche pas pour moi.

en fait lorsque je l'exécute après l'insertion du mot de passe il se bloque en affichant une erreur ,je vous serez reconnaissant si vous pouvez m'aider.

ceci est le message d'erreur
#################################################

[root@localhost SCRIPT_SWITCHS]# ./script
veuillez donner le mot de passe
./script: line 28: syntax error near unexpected token 'then'
./script: line 28: ' then'
[root@localhost SCRIPT_SWITCHS]#

###################################################

le code

1 #!/bin/bash
2 #sript.sh
3
4 echo "veuillez donner le mot de passe"
5 stty -echo #[1]
6 read password
7 stty echo
8
9 export ssh='./ssh.sh' #[2]
10 export telnet='./telnet.sh'
11 export erreur='./rapport_erreurs.log'
12 export temp='./tmp_routeur.log'
13 export cmdcisco='./commandes.txt'
14 export liste='./liste.txt'
15 export password
16 export routeur
17 export commande
18
19 rm -f $erreur #[3]
20 rm -f $ssh
21 rm -f $telnet
22
23 cat $liste | while read routeur;
24 do
25 if [ "$routeur" != "" ]
26 then
27 if[ ! -f $ssh ] #[4]
28 then
29 echo 'expect 2>&1 << EOF'>> $ssh
30 echo 'spawn ssh adminfh@$routeur' >> $ssh
31 echo 'expect {' >> $ssh
32 echo '"Password:" {send "$password\r"}' >> $ssh
33 echo 'timeout {exit}' >> $ssh
34 echo ' }' >> $ssh
35 echo 'expect "#"' >> $ssh
36
37 cat $cmdcisco | while read commande
38 do
.....



Merci beaucoup

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 déc. 2012 à 09:35
Salut,

27 if[ ! -f $ssh ] #[4]

Il manque un espace entre le "if" et le crochet "[" :
if [ ! -f $ssh ] 

0
farislg Messages postés 5 Date d'inscription mercredi 12 décembre 2012 Statut Membre Dernière intervention 13 décembre 2012
13 déc. 2012 à 13:13
merci beaucoup , c'était bien l'erreur
maintenant j'en ai une autre ,merci de m'aider

le message d'erreur est le suivant
**************************************************
[root@localhost SCRIPT_SWITCHS]# ./script
veuillez donner le mot de passe
real 0.00
user 0.00
sys 0.00
./script: line 63: [: too many arguments
Problè de connexion a l'équipement 192.168.168.40 !

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

le code
50 time -p $ssh > $temp 2>&1 #[6]
51
52 COD_RET=$?
53
54 auth='cat $temp | grep -c "Password: "' #[7]
55 if [ "$auth" -gt "1" ]
56 then
57 echo "Problè d'authentification sur $routeur !"
58 echo "$routeur : wrong log-in/password" >> $erreur
59 continue
60 fi
61
62 temps='grep 'real ' $temp | sed 's/real /§/' | cut -d'§' -f2 | cut -d' ' -f1 | cut -d'.' -f1'
63 if [ $temps -ge 10 -a ! "'grep 'closed' $temp'" ] #[8]
64 then
65 echo "L'equipement $routeur ne rénds pas !";
66 echo "$routeur : connection timed out" >> $erreur
67 continue
68 fi
69
70 if [ "$COD_RET" != "0" ] #[9]
71 then
72 #Erreur de connexion a l'éipement en SSH
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 déc. 2012 à 13:31
Merci de traduire ce qu'est censé faire :
 if [ $temps -ge 10 -a ! "'grep 'closed' $temp'" ] 


Si la variable "$temp" est supérieure ou égale à 10 ET ???
0
farislg Messages postés 5 Date d'inscription mercredi 12 décembre 2012 Statut Membre Dernière intervention 13 décembre 2012
13 déc. 2012 à 13:38
on récupère le nombre du temps d'execution, et on vérifie qu'il ne soit pas supérieur à 10 (valeur du timeout du expect)

en fait je ne suis pas un expert en développement,mais mon but c'est d'accéder a des équipement réseaux en ssh afin d'injecter des commande
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 déc. 2012 à 13:46
Je recommence autrement....

Qu'est censé renvoyer la commande "grep 'closed' $temp" et surtout quelle comparaison veux-tu établir avec "-a !" ???
0
farislg Messages postés 5 Date d'inscription mercredi 12 décembre 2012 Statut Membre Dernière intervention 13 décembre 2012
13 déc. 2012 à 14:19
en fait le script je ne l'ai pas fait,je l'ai trouvé sur commentcamarche et je l'ai executé.
est ce que ça serai possible de poster le code en entier afin que tu puisses mieux comprendre la source de l'erreur ?
Merci
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 déc. 2012 à 15:12
Donc tu ne sais pas ce que fait cette ligne ? Tu recopies un truc sans savoir à quoi ça sert et ce que ça va donner ?

Si tu ne nous dis pas ce qu'est censé faire cette comparaison, et surtout ce que retourne la commande exécutée seule, ça va être difficile de t'aider ;-(
0
farislg Messages postés 5 Date d'inscription mercredi 12 décembre 2012 Statut Membre Dernière intervention 13 décembre 2012
13 déc. 2012 à 16:12
en fait ,ce script est publié sur commentcamarche.net pour un besoin qui est censé marcher,j'ai tésté le script en suivant les indications publiés su le site,le truc c'est que je suis un administrateur et pas un devellopeur et ce script répond bien à mon besoin .malgré cela j'ai fait un effort pour essayer de le faire marcher mais je n'ai pas pu

https://www.commentcamarche.net/faq/9988-envoi-de-commandes-cisco-publipostees-via-ssh-telnet#q=commeEnvoi+de+commandes+CISCO+publipost%E9es+via+SSH%2FTelnet&cur=1&url=%2F
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 déc. 2012 à 19:06
Tiens, j'ai retouché le code et je l'ai posté ici : https://pastebin.com/Y2ih7H5T

Depuis toujours le code pose problème sur CCM, c'est la faute aux balises <code> et la police de caractères employée. D'une part les quotes inverses ne sont pas inversées et ressemblent comme deux gouttes d'eau à des quotes simples, les crochets servent à construire les liens (code html), etc.

Donc essaie avec ce nouveau code et dis-nous...
0
J'ai le même problème, même en utilisant le script de zipe31.

./ConfMasseCiscoold: line 63: [: too many arguments
routeur 109.205.3.181 Alcatel et non Cisco !
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
2 mai 2013 à 17:40
if [ $temps -ge 10 -a ! "$?grep 'closed' $temp)" ]

Change la ligne par celle-là :
if [ $temps -ge 10 -a ! "$(grep 'closed' $temp)" ] 
0