SHELL Appel ssh dans une fonction
Résolu/Fermé
tlep
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
-
21 juil. 2007 à 14:08
dubcek Messages postés 18778 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 avril 2025 - 24 juil. 2007 à 10:17
dubcek Messages postés 18778 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 avril 2025 - 24 juil. 2007 à 10:17
A voir également:
- SHELL Appel ssh dans une fonction
- Fonction si et - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel inconnu - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Ssh secure shell download - Télécharger - Divers Web & Internet
7 réponses
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
21 juil. 2007 à 15:06
21 juil. 2007 à 15:06
Et comme ça ?:
LISTE=$(cat mon_fichier)
for HOSTS in $LISTE;do
Test_Connect HOSTS
done
function Test_Connect
{
ssh root@$1 'bash -c 'hostname"'
}
LISTE=$(cat mon_fichier)
for HOSTS in $LISTE;do
Test_Connect HOSTS
done
function Test_Connect
{
ssh root@$1 'bash -c 'hostname"'
}
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
21 juil. 2007 à 15:29
21 juil. 2007 à 15:29
Salut,
Ben chez moi avec ce script ça marche bien :
Ben chez moi avec ce script ça marche bien :
#! /bin/bash function Test_Connect { ssh jp@$1 'bash -c 'hostname'' } for HOTE in $(cat Fich);do Test_Connect $HOTE donePS. Identification par "passphrase".
tlep
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
23 juil. 2007 à 10:26
23 juil. 2007 à 10:26
En fait çà ne vient pas de la fonction; je ne comprends pas du tout :-(
Pour simplifier j'ai fait :
while read LIGNES;do
ssh root@dev-apache "hostname"
done < CONFIG/dev-apache
Sachant que le fichier "CONFIG/dev-apache" contient 3 lignes, il devrait m'afficher 3 fois le hostname de dev-apache.
Or il affiche une seule fois: une seule connexion ssh puis exit !!
Tandis que, si je mets un echo "$LIGNES", ben il affiche bien successivement les 3 lignes
:-((
Pour simplifier j'ai fait :
while read LIGNES;do
ssh root@dev-apache "hostname"
done < CONFIG/dev-apache
Sachant que le fichier "CONFIG/dev-apache" contient 3 lignes, il devrait m'afficher 3 fois le hostname de dev-apache.
Or il affiche une seule fois: une seule connexion ssh puis exit !!
Tandis que, si je mets un echo "$LIGNES", ben il affiche bien successivement les 3 lignes
:-((
tlep
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
23 juil. 2007 à 10:30
23 juil. 2007 à 10:30
Encore plus bizarre:
si je fais
for i in 1 2 3 4 5;do
ssh root@dev-apache "hostname"
done
Ben là il effectue bien 5 connexions !
si je fais
for i in 1 2 3 4 5;do
ssh root@dev-apache "hostname"
done
Ben là il effectue bien 5 connexions !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
23 juil. 2007 à 12:12
23 juil. 2007 à 12:12
J'ai déjà vu ça sur Solaris en sh (ou ksh).
C'est comme si un rsh ou ssh dans une boucle avec redirection du standard input "annulait"
ce standard input.
marche pas:
while read LIGNES;do
ssh root@dev-apache "hostname"
done < CONFIG/dev-apache
marche ok, mais remplacer 1 2 3 4 par `cat fichier` va faire qu'une boucle:
for i in 1 2 3 4 5;do
ssh root@dev-apache "hostname"
done
C'est comme si un rsh ou ssh dans une boucle avec redirection du standard input "annulait"
ce standard input.
marche pas:
while read LIGNES;do
ssh root@dev-apache "hostname"
done < CONFIG/dev-apache
marche ok, mais remplacer 1 2 3 4 par `cat fichier` va faire qu'une boucle:
for i in 1 2 3 4 5;do
ssh root@dev-apache "hostname"
done
tlep
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
23 juil. 2007 à 13:49
23 juil. 2007 à 13:49
Oui y'a des trucs bizarres en shell des fois..
J'ai contourné le souci via:
for LIGNES in $(seq 1 $(wc -l mon_fichier|awk '{print $1}'));do
LIGNE=$(head -$LIGNES $1/$2|tail -1)
ssh root@mon_hosts "ls $LIGNE/"
done
;-)
J'ai contourné le souci via:
for LIGNES in $(seq 1 $(wc -l mon_fichier|awk '{print $1}'));do
LIGNE=$(head -$LIGNES $1/$2|tail -1)
ssh root@mon_hosts "ls $LIGNE/"
done
;-)
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
23 juil. 2007 à 15:35
23 juil. 2007 à 15:35
Et comme ça ?
while read LIGNES;do
ssh root@dev-apache "hostname" </dev/null
done < CONFIG/dev-apache
while read LIGNES;do
ssh root@dev-apache "hostname" </dev/null
done < CONFIG/dev-apache
tlep
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
23 juil. 2007 à 18:05
23 juil. 2007 à 18:05
Superbe ! ca marche !
Merci pour la suggestion !
Merci pour la suggestion !
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
24 juil. 2007 à 10:17
24 juil. 2007 à 10:17
De rien ... Unix c'est grand !!