Connexion à 1 liste de routeurs via ssh (kornshell)
Bonjour,
N'étant pas un aficionados de script, je sollicite votre aide. J'ai régulièrement besoin pour mon travail de me connecter à une liste de routeurs, différente selon les jours, et de leur envoyer des commandes de vérification suite à des Travaux programmés par Orange.
J'ai récupéré un script déjà existant, mais qui fonctionnait en demandant l'IP du routeur à l'utilisateur du script, puis en lisait le résultat.
J'aimerais faire la même chose sans avoir à fournir l'IP du routeur à chaque fois, c'est-à-dire en utilisant une liste d'IPs listées dans un fichier texte, si possible sans retaper mon nom et mon mot de passe plusieurs fois. Il faut prendre en compte que je ne serais pas le seul utilisateur à utiliser ce script, et que les comptes et mot de passe sont différents selon les utilisateurs.
Pouvez-vous prendre un peu de votre temps pour m'aider s'il vous plaît?
Voici le script existant :
J'ai essayé de le modifier comme ci dessous mais j'ai cette erreur qui apparait :
N'étant pas un aficionados de script, je sollicite votre aide. J'ai régulièrement besoin pour mon travail de me connecter à une liste de routeurs, différente selon les jours, et de leur envoyer des commandes de vérification suite à des Travaux programmés par Orange.
J'ai récupéré un script déjà existant, mais qui fonctionnait en demandant l'IP du routeur à l'utilisateur du script, puis en lisait le résultat.
J'aimerais faire la même chose sans avoir à fournir l'IP du routeur à chaque fois, c'est-à-dire en utilisant une liste d'IPs listées dans un fichier texte, si possible sans retaper mon nom et mon mot de passe plusieurs fois. Il faut prendre en compte que je ne serais pas le seul utilisateur à utiliser ce script, et que les comptes et mot de passe sont différents selon les utilisateurs.
Pouvez-vous prendre un peu de votre temps pour m'aider s'il vous plaît?
Voici le script existant :
#!/bin/ksh echo quel est votre login read nom echo "Bonjour $nom" if [ "$nom" = "" ] then echo "Precisez un nom d'utilisateur valide !" exit fi echo "preciser mot de passe" read pass if [ "$pass" = "" ] #!/bin/ksh echo quel est votre login read nom echo "Bonjour $nom" if [ "$nom" = "" ] then echo "Precisez un nom d'utilisateur valide !" exit fi echo "preciser mot de passe" read pass if [ "$pass" = "" ] then echo "password non valide !" exit fi echo "quel est l'IP du routeur X" read X echo "$X" if [ "$X" = "" ] then echo "Precisez une IP valide !" exit fi echo "quel est l'IP du routeur Y" read Y if [ "$Y" = "" ] then echo "Precisez une IP valide !" exit fi echo "debut du script, merci de patienter..." VAR=$(expect -c " send_user \"=========================== debut routeur X =========================== \" spawn ssh -l $nom@site.com -p 3007 $X expect \"yes\" { send \"yes \n\" } expect \"Password: \" { send \"$pass\r\"} expect \"#\" send \"term len 0\n\" expect \"#\" send \"sh ip int brief\n\" expect \"#\" send \"sh ip bgp summary\n\" expect \"#\" send \"sh vrrp brief\n\" expect \"#\" send \"sh track\n\" expect \"#\" send \"sh policy-map interface brief\n\" expect \"#\" send \"exit\n\" expect \"#\" send_user \"=========================== debut routeur Y =========================== \" spawn ssh -l $nom@site.com -p 3007 $Y expect \"yes\" { send \"yes \n\" } expect \"Password: \" { send \"$pass\r\"} expect \"#\" send \"term len 0\n\" expect \"#\" send \"show ip route static\n\" expect \"#\" send \"sh ip int brief\n\" expect \"#\" send \"sh ip bgp summary\n\" expect \"#\" send \"sh vrrp brief\n\" expect \"#\" send \"sh track\n\" expect \"#\" send \"sh policy-map interface brief\n\" expect \"#\" send \"exit\n\" expect \"#\" ") echo "$VAR" echo "$VAR" > result_rt echo "pour revoir les resultats, faire more result_rt"
J'ai essayé de le modifier comme ci dessous mais j'ai cette erreur qui apparait :
line 2: syntax error at line 30: `(' unexpected
#!/bin/ksh files="/script/MER/routeurs/liste-routeurs" for $f in $files; do echo quel est votre login read nom echo "Bonjour $nom" if [ "$nom" = "" ] then echo "Precisez un nom d'utilisateur valide !" exit fi echo "preciser mot de passe" read pass if [ "$pass" = "" ] then echo "password non valide !" exit fi echo "$f" read "$f" if [ "$f" = "" ] then echo "Precisez une IP valide !" exit fi echo "debut du script, merci de patienter..." VAR=$f(expect -c " send_user \"=========================== debut routeur $f =========================== \" spawn ssh -l $nom@site.com -p 3007 $x expect \"yes\" { send \"yes \n\" } expect \"Password: \" { send \"$pass\r\"} expect \"#\" send \"term len 0\n\" send \"sh vrrp brief\n\" expect \"#\" send \"exit\n\" expect \"#\" ") echo "$VAR" echo "$VAR" > result_rt echo "pour revoir les resultats, faire more result_rt"
A voir également:
- Connexion à 1 liste de routeurs via ssh (kornshell)
- Gmail connexion - Guide
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Connexion chromecast - Guide
- Liste code ascii - Guide
2 réponses
Bonjour,
L'idéal serait d'utiliser :
Concernant les commandes à lancer sur le script : l'idéal serait de mettre sur chaque machine script qui va lancer le diagnostic (e.g. les commandes
Si tu ne peux pas stocker de fichier sur la machine distante, tu devras rester sur le genre de script que tu as.
Bonne chance
L'idéal serait d'utiliser :
-
parallel-ssh
pour exécuter une commande arbitraire sur un ensemble de machine (selon un fichier qui liste les login@machine vers lesquels se connecter) - une clé ssh (une clé par utilisateur) pour t'affranchir des problématiques d'authentification (il faut que chaque utilisateur crée sa propre clé ssh avec
ssh-keygen
, l'upload sur les machines distances avecssh-copy-id
; ceci fait, il suffira que l'utilisateur lancessh-add
pour activer une authentification ssh transparente
Concernant les commandes à lancer sur le script : l'idéal serait de mettre sur chaque machine script qui va lancer le diagnostic (e.g. les commandes
sh ip route static) e.g. dans
/usr/local/bin/diagnostic.shqu'il suffira ensuite d'invoquer via
parallel-ssh.
Si tu ne peux pas stocker de fichier sur la machine distante, tu devras rester sur le genre de script que tu as.
Bonne chance