Aide sur un shell
Résolu
dino
-
dino -
dino -
Bonjour,
Je voidrais ecrire un peitit script qui se lance a partir d'une machine A et se connect sur un liste de machine B,C,D,...et laanc a chaque fois un script ou une commande ,mais ca coinse ,il lance ma camande en local
time=`date +%d%m`
LOG_FILE=tarce_$time
list.txt=B,C,D
liste="$(cat /list.txt)"
for i in $liste
do
rsh $i 'ls -ltr'>>tarce_$time
done
Merci pour votre aide
Je voidrais ecrire un peitit script qui se lance a partir d'une machine A et se connect sur un liste de machine B,C,D,...et laanc a chaque fois un script ou une commande ,mais ca coinse ,il lance ma camande en local
time=`date +%d%m`
LOG_FILE=tarce_$time
list.txt=B,C,D
liste="$(cat /list.txt)"
for i in $liste
do
rsh $i 'ls -ltr'>>tarce_$time
done
Merci pour votre aide
Configuration: Windows XP Firefox 3.0.3
14 réponses
Résumé de la discussion
Un script vise à démarrer sur une machine A et, via une liste de machines B, C, D, lancer une commande sur chaque machine distante. Des questionnements apparaissent sur le fichier list.txt, la manière de lire son contenu avec cat ou echo, et l'usage correct de rsh pour que les commandes s'exécutent sur les machines ciblées. D'autres propositions soulignent l'importance de vérifier l'existence du fichier, le chemin d'accès, et d'utiliser correctement une boucle for pour traiter la liste des noms afin d'éviter les exécutions locales.
-
Une manière comme tant d'autres ...
Ici, le script doit exister sur la machine distante...
echo "Entrez le nom du site : \c"
read sit
echo "Entrez le nom de connexion : \c"
read con
echo "Entrez le path complet du fichier a executer: \c"
read pat
rshell $sit -l $con "$pat"
Tu mets çà dans ta boucle, tu adaptes rsh / rshell en fonction de ton shell...
pareil pour récupérer les résultats sur la machine locale... -
hello
list.txt="B C D"
for i in $list.txt
do -
Bonjour,
Merci doudou,la solution de dubcek me parait plus simple,mais c'est ce que j'ai essayer de faire :
liste="$(cat /list.txt)"
for i in $liste
do
le pb c'est que macommande simple "ls -ltr" passe en local ,pas sur la machine distante. -
le nom de deux machines.A noter qye je peux faire un rsh et me connecter sans pb avec user root sur le deux a partir de ma machine en locale.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
les nom sont séparés par des espaces ?
essaye
rsh $i 'ls -ltr'>>tarce_$time < /dev/null -
J'ai essayer de séparer les deux noms par un vide NOK, par un ";" NOK :mon "ls -ltr" passe tje en local et non sur la machines distante
-
liste="$(cat /list.txt)"
for i in $liste
do
le séparateur DOIT être un espace ou tab -
je suis d'accord avec toi mais ,encore une fois j'ai essayer un vide ,mais mon "ls -ltr" passe ne local.
-
Salut vous tous,
Un truc me turlupine ;-\list.txt=B,C,D # <<< variable liste="$(cat /list.txt)" # <<< lecture d'un fichier à la racine !!! for i in $liste do
Il n'y aurait pas comme un os ?
-
j'ai modier le chemin et mis /TOTO/list.txt ,mais est ce vraiment cela le pb ? si oui en quoi et comment le corrriger ?
Merci. -
Bonjour,
st-ce que le fichier existe ?....>oui heuresement !
Si oui, alors pourquoi déclarer une variable ?....>la variable est le contenue de mon fichier qui est une liste de nom de machine -
-
De répondre au message #15 ;-)
-
-
rsh A 'ls -lrt'
si le login sur A se fait comme utilisateur lambda et que le home directory de lambda en monté sur toutes les machines, ls -lrt retournera toujours la même chose
que répond
rsh A 'hostname' -