|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2003 Messages : 25 ![]() |
Bonjour à tous,
j'ai réalisé un script qui réalise en gros, les opérations suivantes avec expect: 1-connexion en ssh sur une machine distante (spawn ssh -l utilisateur xxx.xxx.xxx.xxx 2-envoi de la commande1 à la machine distante 3-envoi de la commande2 à la machine distante .... j'ai deux petit soucis le premier, c'est que la connexion ssh peut échouer , du coup j'ai parfois ceci: ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused et mon script s'arrete la ... comment faire pour qu'il re-essaye de se connecter tant qu'il n'y arrive pas ? l'autre probleme, moins compliqué je pense, et que je voudrais garder une trace de l'execution de ce script, un log quoi. comment faire ? Merci pour vos avis éclairés
|
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
Code bash :
? sachant que si nc échoue (ta machine distante n'est pas joignable sur le port 22), on reprend le test par nc, et si nc réussit (la machine distante est joignale sur le port 22), alors tes commandes sont excutées. |
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : février 2003 Messages : 25 ![]() |
Merci N_BaH
j'ai appris une commande ![]() par contre je vois pas comment passer un nom d'utilisateur et comment utiliser ma clef privée ssh avec nc ? il n'y a pas moyen de le faire avec expect ?, sachant que lorsque la connexion échoue, le script s'arrete brutalement. idéalement un truc qui detecte le message "ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused" , qui arrete le script est le relance Merci |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2003 Messages : 25 ![]() |
rhaaa j'avais pas capté le fonctionnement de la chose
c'est génial ! merci beaucoups N_BaH
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : février 2003 Messages : 25 ![]() |
mince j'ai un os...
nc fonctionne a merveille, mais est-ce qu'on peut y passer un argument ? voila mon script.sh: maFunc() { nc -w5 -z xxx.xxx.xxx.xxx && { monscript2.sh $1 } || maFunc } si j'appelle celui-vi par ./script.sh TOTO je voudrais que TOTO soit la variable correspondant à $1 j'ai essayé à coup de NARGS, mais rien à faire, ca renvoi une chaine vide à chaque fois... Merci |
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() |
il faut les passer a ta function aussi
au lieu de l'appeler maFunc tu fait maFunc $1 |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : février 2003 Messages : 25 ![]() |
arf, à force de chercher un truc compliqué ...
ca marche. j'ai de nouvea un probleme, décidement, mon script fonctionne à merveille quand je le lance en ligne de commande sans aucune interraction de ma part. mais, si je met le script en crontab, il traite la partie jusqu'a la fonction nc, puis à priori, s'arrete. aucun message d'erreur dans les logs il n'y à pas d'interraction dans le script, je comprend pas. |
|
|
00
|
|
|
#9 |
|
Membre éprouvé
![]() |
si le script doit écrire sur la sortie standard il se fera killer (vu qu'il n'y a pas de sortie standard) a moins de rediriger le flux.
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
par défaut, cron n'hérite d'aucune variable d'environnement :
incorpore à ton cron le PATH qui ira bien... etc pour avoir les commandes nécessaires s'exécuter... ? ou précède tes commandes de leur chemin absolu... ? |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
![]() unknow0, si le script renvoie quoi que ce soit dans le pire des cas ce sera "mailé" à root... cron ne gère pas de "tueries" ... ? |
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : février 2003 Messages : 25 ![]() |
trop simple...
![]() tout est ok, j'ai fini d'embeter la communauté avec ce script Merci encore pour votre aide.
|
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() Inscription : septembre 2006 Messages : 2 255 ![]() |
Citation:
en cas d'échec de nc, les tentatives de connexion auront lieu aussi vite que le script peut s'exécuter, ce qui n'est pas utile : si le réseau n'est pas disponible mieux faut attendre un peu (rajouter un sleep N, avant d'appeler à nouveau myFunc dans le || ... où N est le nombre de secondes à attendre avant de continuer…) et si après un certain temps le serveur distant n'est toujours pas disponible, il y a peut-être un problème plus sérieux dont il faudrait prévenir l'admin… (via un mail par exemple…) |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com