Envoi de commandes CISCO publipostées via SSH/Telnet

farislg Messages postés 5 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

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

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

    0
    1. farislg Messages postés 5 Statut Membre
       
      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
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    3. farislg Messages postés 5 Statut Membre
       
      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
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Je recommence autrement....

      Qu'est censé renvoyer la commande "grep 'closed' $temp" et surtout quelle comparaison veux-tu établir avec "-a !" ???
      0
  2. farislg Messages postés 5 Statut Membre
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
  3. farislg Messages postés 5 Statut Membre
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    2. stephapnee
       
      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
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      if [ $temps -ge 10 -a ! "$?grep 'closed' $temp)" ]

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