Aide sur un shell

Résolu
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
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.

Bobot (l’IA à votre service)
  1. Contributeur
    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'
    1. Webmaster
      Ha ouais, bien vu :)

      Croisons les doigts pour que ce soit le cas...
  2. 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
    1. Modérateur
      la variable est le contenue de mon fichier qui est une liste de nom de machine
      Elle sert à quoi alors ? A rien ?
    2. Webmaster
      Peux-tu nous donner le resultat des commandes cat -A /TOTO/list.txt et file /TOTO/list.txt ?
    3. @asevereBonjour,

      voila :

      cat -A /TOTO/list.txt
      cat: Not a recognized flag: A
      Usage: cat [-qrSsu] [-n[b]] [-v[et]] [-|File ...]

      file /TOTO/list.txt
      /TOTO/list.txt: commands text
    4. Webmaster
      @dinoet cat -vet /TOTO/list.txt ?

      PS: Sous quel os es-tu ?
    5. @aseverecat -vet list.txt
      A B C $

      Mais le "more" me donne
      more list.txt
      A B C

      le $ il fait koi la ?

      pour la version :
      uname -a
      AIX 2 5 00527D0A4C00

      Merci.
  3. 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.
    1. Modérateur
      Je n'en sais rien, par contre est-ce que le fichier existe ?
      Si oui, alors pourquoi déclarer une variable ?
      Si non, alors c'est la variable qu'il faut lire et dans ce cas c'est la commande "echo" et non "cat" !
  4. Modérateur
    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 ?
    1. je suis d'accord avec toi mais ,encore une fois j'ai essayer un vide ,mais mon "ls -ltr" passe ne local.
      1. Contributeur
        liste="$(cat /list.txt)"
        for i in $liste
        do

        le séparateur DOIT être un espace ou tab
        1. 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
          1. Contributeur
            les nom sont séparés par des espaces ?
            essaye

            rsh $i 'ls -ltr'>>tarce_$time < /dev/null
            1. 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.
              1. 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.
                1. Contributeur
                  que contient list.txt ?
              2. 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...