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 POSIX Discussion :

Commande sous ssh avec des paramètres


Sujet :

Shell et commandes POSIX

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut Commande sous ssh avec des paramètres
    Bonjour,
    Je suis sur un poste linux debian et j'ai un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat infile
    ABCD
    EFGH
    IGKL
    MNOP
    J'ai une commande sed trés compliqué :
    qui m'affiche :
    Jusqu'à là, tous va bien.
    Maintenant, je voudrais tester ma commande avec le sed de NetBSD.
    Je copie le fichier infile sur le serveur NetBSD
    Puis je peux tester ma commande sed trés compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh LeNetBSD sed '/^I/!d' infile
    qui m'affiche :
    Donc ma commande fonctionne aussi sur NetBSD.
    Maintenant, je voudrais pouvoir tester ma commande sans avoir besoin de copier le fichier.
    Avec la même commande, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: infile: No such file or directory
    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh LeNetBSD sed '/^I/!d' $(<infile)
    J'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sed: ABCD: No such file or directory
    sed: EFGH: No such file or directory
    sed: IGKL: No such file or directory
    sed: MNOP: No such file or directory
    Bref, je n'y arrive pas.
    Si quelqu'un a une idée ?
    Merci.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    • 1er cas : tu filtres un fichier texte local.
    • 2ème cas : tu filtres à distance un fichier distant.
    • 3ème cas : tu filtres à distance un fichier inexistant. (puisque tu ne veux pas le copier du local au distant)


    Donc rien d'anormal.

    On ne comprend pas vraiment ce que tu cherches à faire.
    Est-ce que tu veux injecter dans un fichier distant le résultat d'une commande locale sans créer un résultat local ?
    Dans ce cas là, peut-être voudras tu faire un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/^I/!d' infile | ssh LeNetBSD 'cat > resultat_distant.txt'
    Sinon, précise.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Merci pour la réponse.
    Ce que je cherche, c'est de pouvoir tester que mon script fonctionne sur les différentes systèmes.
    En clair, je voudrais avoir un seul script et un seul fichier de données et non pas une version sur NetBSD, une sur linux, une sur OpenBSD etc ..
    Par exemple, mon script fonctionne sur linux. Je le teste sur NetBSD et là ça ne fonctionne pas. J'apporte quelques modifications.
    Ok ça fonctionne mais je me retrouve avec 2 versions. Il faut rappatrier cette nouvelle version sur linux. Si ça ne fonctionne pas ...
    Pareil ensuite sur OpenBSD ... d'où l'intêret de n'avoir qu'un seul fichier.
    Cordialement.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh LeNetBSD 'bash -s' < mon_script.bash
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Merci Flodelarab pour m'avoir mis sur la voie.
    En partant de mon fichier infile, je complique un peu la commande sed pour illustrer mon propos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/^[EI]/!d;/^E/s/$/\nici/' infile
    Pour l'utiliser sur debian et sur NetBSD, je crée un fichier com_sed

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cat com_sed
    /^[EI]/!d;/^E/s/$/\nici/
    que j'utilise comme ça sur debian :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -f com_sed < infile
    j'obtiens :

    Et sur NetBSD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh LeNetBSD sed "'$(<com_sed)'" < infile
    j'obtiens :

    Je modifie mon fichier com_sed comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /^[EI]/!d;/^E/s/$/\
    ici/
    Je relance mes commandes et ça fonctionne sur les 2 postes.
    Aucun fichier n'a été copié sur NetBSD.
    Je n'ai donc qu'une seule version de mes fichiers.

    Bon, petit bémol, ça reste des commandes simples et il faudra voir à l'usage avec des commandes beaucoup plus compliquées.
    Par exemple, la commande suivante ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat com_awk 
    NR==1{print FILENAME}
     
    ssh LeNetBSD awk "'$(<com_awk)'" < infile
    On obtient une magnifique ligne vide.

    Cordialement.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Pardon, mais tu chipotes.

    Tu ne veux pas transmettre le fichier, mais tu transmets le fichier !
    C'est juste que tu le transmets par ssh au lieu de scp. Ce qui est pareil.

    Pour la propreté et la tranquillité de ton esprit, c'est ton script qui devrait contenir
    • une phase de mise en place avant
      (avec scp)
    • une phase de traitement
      (tes commandes à tester par ssh)
    • une phase de nettoyage après
      (avec rm)


    Parce que le transfert a lieu dans tous les cas.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

Discussions similaires

  1. MDX sous Excel avec des paramètres
    Par julie123 dans le forum SSAS
    Réponses: 10
    Dernier message: 04/09/2013, 13h56
  2. Exécuter script en ligne de commande avec des paramètres
    Par illegalsene dans le forum Langage
    Réponses: 4
    Dernier message: 29/12/2009, 14h21
  3. Réponses: 3
    Dernier message: 17/04/2008, 15h01
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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