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...
    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. 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. Contributeur
        les nom sont séparés par des espaces ?
        essaye

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

            le séparateur DOIT être un espace ou tab
            1. je suis d'accord avec toi mais ,encore une fois j'ai essayer un vide ,mais mon "ls -ltr" passe ne local.
              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 ?
                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.
                  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" !
                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. 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...