IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Envoi boucle for via rsh sur serveur distant


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Par défaut Envoi boucle for via rsh sur serveur distant
    Bonjour,

    Je rencontre un petit souci dans la résolution de variables utilisées lors de l'exécution d'une boucle for via rsh sur un serveur distant.

    Au préalable on créé le fichier /home/kevin/liste.txt sur la machine distante, il contient tous les chemins (nom complet fichiers) d'un répertoire donné.

    Une fois ce fichier créé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh $Server "for Line in $(echo "cat /home/kevin/liste.txt"); do echo "stat -c "%n %z" \"$Line\"  | grep \"$pattern\" | awk -F" " '{print $1 $2}'";done"
    En rendant verbeux l'exécution de mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ++ echo 'cat /home/kevin/liste.txt'
    + rsh SERVER1 'for Ligne in cat /home/kevin/liste.txt; do echo stat' -c '%n %z' '"";done'
    On voit bien qu'au niveau de la commande stat il ne résout pas la variable $Line.

    J'ai même tenté \"$Ligne\" mais ça ne donne rien de mieux.

    Avez-vous une idée ?

    Merci.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    d'abord, Comment lire un fichier en shell

    ensuite, essaie ces commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh server "$echo "$HOSTNAME""
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh server 'echo "$HOSTNAME"'
    enfin, on ne fait pas grep | awk, parce que awk sait faire ce que fait grep.

    ...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Par défaut
    Je suis sur la machines SERVER1 et je veux passer une commande sur SERVER2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh SERVER2 "echo "$HOSTNAME""
    Résultat : SERVER1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh SERVER2 'echo "$HOSTNAME"'
    Résultat : vide

    Je suis surpris des résultats, dans le 1er cas j'attendais SERVER2.


    Dans la commande ci-dessous comment faire pour que $line au niveau de la commande stat soit bien interprété :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh $Server "for Line in $(echo "cat /home/kevin/liste.txt"); do echo "stat -c "%n %z" \"$Line\"  | grep \"$pattern\" | awk -F" " '{print $1 $2}'";done"
    Le but est de passer la commande ci-dessous sur le serveur distant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stat -c "%n %z" "$Line" | grep "$pattern" | awk -F" " '{print $1 $2}'
    (pour grep et awk, ok je vois ça ensuite, on peut arranger ça)

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ensuite, je te dirai comment rendre ta variable distante disponible.

    non, parce que tu as beau me demander si tu as bien mis ta cagoule, je ne te laisserai pas sortir sans culotte !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Par défaut
    Ok ok tu as raison, je vais déjà lire attentivement ton lien dont je ne doute pas de la qualité (te connaissant un peu).

    Une fois que j'aurais bien mis ma culotte je te dis

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Par défaut
    Bonjour,

    Avant tout je souhaite à tous nos amis informaticiens un joyeux noël et de bonnes fêtes de fin d'années.

    En effet, le awk peut être utilisé pour la recherche d'un pattern, je l'ignorais.

    Donc je dirais qu'on peut remplacer la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh $Server "for Line in $(echo "cat /home/kevin/liste.txt"); do echo "stat -c "%n %z" "$Line"  | grep "$My_Date" | awk -F" " '{print $1 $2}'";done"
    ... par celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh $Server "for Line in $(echo "cat /home/kevin/liste.txt"); do echo "stat -c "%n %z" "$Line"  | awk '/"$My_Date"/ {print $0 $1 $2}';done"
    /home/kevin/list.txt est un fichier contenant tous les chemins complets des fichiers contenus dans un répertoire donné, list.txt est sur le serveur distant.......... et je souhaite depuis mon serveur central (par rsh) lire chaque ligne de list.txt et lui appliquer la commande stat -c "%n %z" afin d'obtenir les fichiers changés (incluant aussi modifiés) à une date donnée.

    N_BaH tu valides ma commande awk ?

    Merci pour ton lien Comment lire un fichier en shell, il y a plein d'infos intéressantes que j'ignorais, il faudrait que je remplace la boucle for par une boucle while mais ce week-end-end j'ai pas le matos pour... Je le fais lundi promis.

    Comment puis-je rendre mes variables distantes disponibles via ce rsh ?

    Avec le echo je vois bien le cat /home/kevin/liste.txt mais pour la suite "$Line" et "My_Date" c'est vide.

    Merci.

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    syntaxiquement ça semble correct.
    après, pour vraiment valider, il faut savoir ce que c'est censé faire...

    myDate est une variable externe (on ne sait d'ailleurs pas où elle est définie) à awk, et une variable entre apostrophes n'est pas évaluée !
    deux solutions :
    - jouer sur les apostrophes, mais à terme ça va être lourdingue,
    - passer la variable à awk par son option -v - c'est le plus propre.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enregistrement automatique de XL puis envoi sur serveur distant
    Par Teckyl dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/09/2019, 09h34
  2. Envoi de mail sur serveur distant OVH
    Par TigerWolf dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 01/09/2010, 16h00
  3. Réponses: 7
    Dernier message: 04/02/2008, 18h52
  4. [Sybase] Accès Table sur serveur distant
    Par MashiMaro dans le forum Sybase
    Réponses: 5
    Dernier message: 11/02/2004, 14h09
  5. jsp sur serveur distant
    Par petitelulu dans le forum JBuilder
    Réponses: 5
    Dernier message: 11/09/2003, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo