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. 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...
    0
    1. Contributeur
      hello

      list.txt="B C D"
      for i in $list.txt
      do
      0
      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.
        0
        1. Contributeur
          que contient list.txt ?
          0
      2. 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.
        0
        1. Contributeur
          les nom sont séparés par des espaces ?
          essaye

          rsh $i 'ls -ltr'>>tarce_$time < /dev/null
          0
          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
            0
            1. Contributeur
              liste="$(cat /list.txt)"
              for i in $liste
              do

              le séparateur DOIT être un espace ou tab
              0
              1. je suis d'accord avec toi mais ,encore une fois j'ai essayer un vide ,mais mon "ls -ltr" passe ne local.
                0
                1. 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 ?
                  0
                  1. 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.
                    0
                    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" !
                      0
                  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
                    0
                    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 ?
                      0
                    2. Webmaster
                      Peux-tu nous donner le resultat des commandes cat -A /TOTO/list.txt et file /TOTO/list.txt ?
                      0
                    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
                      0
                    4. Webmaster
                      @dinoet cat -vet /TOTO/list.txt ?

                      PS: Sous quel os es-tu ?
                      0
                    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.
                      0
                  3. 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'
                    0
                    1. Webmaster
                      Ha ouais, bien vu :)

                      Croisons les doigts pour que ce soit le cas...
                      0
                  4. je sais pas ce qu'il fait ,la log ne dit rien :

                    + rsh A ls -ltr
                    0