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 :

Définir une variable en fonction d'une sortie 'awk'


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut Définir une variable en fonction d'une sortie 'awk'
    Bonjour,

    Je ne sais pas si je m'y prends de la meilleure façon...
    J'essaye de récupérer le nom d'un dossier en l'occurence le dernier créé.
    J'ai donc testé une commande dans le terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ls -got | grep '^d' | head -1 | awk '{print $7}'
    qui m'affiche bien mon nom de dossier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    10-08-2016_13:01:36
    J'ai donc voulu l'intégrer dans un site bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/bin/bash
     
     
    ssh USER@LOGIN "cd dossierbackup/;ls -got | grep '^d' | head -1 | awk '{print $7}';exit"
    Je voudrais arriver à définir la sortie $7 comme une variable à réutiliser dans une prochaine commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/bin/bash
     
     
    ssh USER@LOGIN "cd dossierbackup/;ls -got | grep '^d' | head -1 | awk '{print $7}'; zip -r MAVARIABLE$7/ ;exit"
    comment je dois m'y prendre ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    Bonjour,

    d'abord, le nom de fichier est très mal conçu.
    c'est visuellement satisfaisant, mais "programmatiquement" pénible; tu devrais (si tu peux) utiliser le nombre de secondes depuis EPOCH, avec un préfixe significatif.

    et puis ON N'UTILISE PAS ls DANS UN SCRIPT !!!on passe par stat qui permet de choisir finement les informations à afficher.
    dans ton cas, la date (au format secondes depuis EPOCH) et le nom, que tu piperas à la commande de tri, puis à un découpage simple pour ne garder que le nom.

    enfin, man bash, puis rechercher Substitution de commandes.
    et lire les tutos qui apparaissent dans ma signature.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Pas le choix des noms des dossiers, c'est des sauvegardes ftp sur un hébergement gérées automatiquement par l'hébergeur.
    Voici la liste du dossier actuel affichée par ls -got :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    drwxr-sr-x 15 4096 août  10 12:26 10-08-2016_13:01:36
    drwxr-sr-x 14 4096 juin  15 10:21 01-08-2016_10:28:15
    drwxr-sr-x 14 4096 juin  15 10:21 02-08-2016_07:33:42
    drwxr-sr-x 14 4096 juin  15 10:21 03-08-2016_11:21:07
    drwxr-sr-x 14 4096 juin  15 10:21 04-08-2016_09:56:19
    drwxr-sr-x 14 4096 juin  15 10:21 05-08-2016_12:27:38
    drwxr-sr-x 14 4096 juin  15 10:21 07-08-2016_15:38:05
    Tu proposes quoi ?
    Mon but serait de faire une connexion SSH, d'aller dans le dossier des sauvegardes, de zipper le dernier dossier en date puis de le télécharger,
    le tout 1 fois/semaine

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    Citation Envoyé par blueice
    Tu proposes quoi ?
    schématiquement (il faut regarder les man pour trouver les options correctes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd repertoire; stat <options> * | sort <options> | tail <option> | cut <options>
    ensuite, pour stocker le résultat dans une variable (bien que ça ne semble pas indispensable), regarde le man de bash à la rubrique que je t'ai indiquée précédemment.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 354
    Par défaut
    Bonjour,

    Dommage d'avoir autant de haine pour ls, ici un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zip -r $(ls -got | awk '/^d/ {print $7;exit}')
    Pourrait le faire, non ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    en attendant un espace (ou pire) dans le nom du fichier.
    en attendant que ça ne fonctionne plus.

    Dommage d'avoir autant de haine pour ls
    mais pourquoi tant de haine ?
    parce queuuuuuu !!!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par blueice Voir le message
    Mon but serait de faire une connexion SSH, d'aller dans le dossier des sauvegardes, de zipper le dernier dossier en date puis de le télécharger
    le coup de zip + télécharger on peut faire ça de manière astucieuse aussi, un joli "zip-pipe" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@machine 'zip -r - "..."' > archive.zip

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2015, 15h46
  2. Réponses: 1
    Dernier message: 10/12/2012, 11h09
  3. Réponses: 11
    Dernier message: 10/03/2007, 02h01
  4. Réponses: 1
    Dernier message: 20/01/2007, 14h06
  5. Réponses: 4
    Dernier message: 16/02/2006, 10h40

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