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 :

CP --verbose avec variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Par défaut CP --verbose avec variable
    Bonjour tous,

    Je suis en train de modifier un script pour le customiser selon mes besoins.

    C'est un script qui permet de re générer des certificats.

    A un moment, nous devons rapatrier les certificats déja en place dans le dossier wso2iot-3.1.0
    Actuellement avec ces lignes, ils sont rapatriés à la racine ou je lance mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Grab the existing keystores to be fixed (it is assumed that they're all the same)
    mkdir ${dir_wso2iot}/temp_certificates
    cp --verbose $(find wso2iot* -name 'client-truststore.jks' | head -1) .
    cp --verbose $(find wso2iot* -name 'wso2carbon.jks' | head -1) .
    cp --verbose $(find wso2iot* -name 'wso2certs.jks' | head -1) .
    L'idée c'est de les avoir dans un dossier. Pour cela, j'ai créer une variable qui permet de reprendre le chemin entier d'ou est lancé le script. Ma variable fonctionne puisque quand je fais un echo de celle-ci, elle me donne le bon chemin. Cette variable s'appelle : ${folder_certificats}
    Par contre, je ne sais pas la rajouter au code ci-dessus.
    J'ai tenté plusieurs trucs du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Grab the existing keystores to be fixed (it is assumed that they're all the same)
    cp --verbose ${folder_certificats} $(find wso2iot* -name 'client-truststore.jks' | head -1) .
    cp --verbose ${folder_certificats} $(find wso2iot* -name 'wso2carbon.jks' | head -1) .
    cp --verbose ${folder_certificats} $(find wso2iot* -name 'wso2certs.jks' | head -1) .
    Ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Grab the existing keystores to be fixed (it is assumed that they're all the same)
    cp ${folder_certificats} --verbose $(find wso2iot* -name 'client-truststore.jks' | head -1) .
    cp ${folder_certificats} --verbose $(find wso2iot* -name 'wso2carbon.jks' | head -1) .
    cp ${folder_certificats} --verbose $(find wso2iot* -name 'wso2certs.jks' | head -1) .
    Quelqu’un aurait la solution ?

    merci par avance

    Tof

  2. #2
    Membre confirmé Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Par défaut
    Bien,

    J'avance à petit pas.
    Les copies se font avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cp --verbose $(find wso2iot* -name 'client-truststore.jks' | head -1) . ${folder_certificats}/
    cp --verbose $(find wso2iot* -name 'wso2carbon.jks' | head -1) . ${folder_certificats}/
    cp --verbose $(find wso2iot* -name 'wso2certs.jks' | head -1) . ${folder_certificats}/
    Par contre dans la console, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'wso2iot-3.1.0/wso2/analytics/repository/resources/security/client-truststore.jks' -> '/home/users/IOT/tmp_certificats/client-truststore.jks'
    cp: -r not specified; omitting directory '.'
    'wso2iot-3.1.0/wso2/analytics/repository/resources/security/wso2carbon.jks' -> '/home/users/IOT/tmp_certificats/wso2carbon.jks'
    cp: -r not specified; omitting directory '.'
    'wso2iot-3.1.0/repository/resources/security/wso2certs.jks' -> '/home/users/IOT/tmp_certificats/wso2certs.jks'
    cp: -r not specified; omitting directory '.'

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    export destDir=/home/users/IOT/tmp_certificats
    find wso2iot* -name 'client-truststore.jks' -exec sh -c 'cp --verbose "$1" "$destDir/"' sh {} +
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre confirmé Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Par défaut
    Merci N_BaH

    Toutefois, ma variable ${folder_certificats} est /home/users/IOT/tmp_certificats

    Du coup, confirmez-vous cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find wso2iot* -name 'client-truststore.jks' -exec sh -c 'cp --verbose "${folder_certificats}/"' sh {} +
    J'ai testé dans la console et au final, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cp: missing destination file operand after '/'
    Try 'cp --help' for more information.
    cp: missing destination file operand after '/'
    Try 'cp --help' for more information.
    sh: 1: sh: Syntax error: Unterminated quoted string
    Au plaisir de te lire.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Citation Envoyé par N_BaH
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    export destDir=/home/users/IOT/tmp_certificats
    find wso2iot* -name 'client-truststore.jks' -exec sh -c 'cp --verbose "$1" "$destDir/"' sh {} +
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par Tofdu31 Voir le message
    Actuellement avec ces lignes, ils sont rapatriés à la racine ou je lance mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp --verbose $(find wso2iot* -name 'client-truststore.jks' | head -1) .
    J'ai l'impression que tu n'as pas bien compris cette ligne de commande...

    La partie $(find wso2iot* -name 'client-truststore.jks' | head -1) est exécutée en premier et elle ramène la liste des fichiers nommés client-truststore.jks trouvés dans tous les répertoires dont le nom commence par wso2iot, liste dont le head -1 ne garde que le premier élément.
    Cette liste d'un fichier est passée en argument à cp qui exécute donc cp --verbose <le premier fichier client-truststore.jks trouvé> ..
    Dans cette ligne de commande, le . final est très important: il indique le répertoire où le ou les fichiers doivent être copiés.
    Or, le répertoire . est le répertoire courant, c'est-à-dire le répertoire passé en argument à la dernière commande cd.
    La ligne de commande va donc copier dans le répertoire courant le fichier trouvé.

    Pour le copier ailleurs, il faut remplacer . par un autre répertoire, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp --verbose $(find wso2iot* -name 'client-truststore.jks' | head -1) "${folder_certificats}/"
    Est-ce plus clair?

    Cela dit, normalement, par défaut, la réponse de N_BaH devrait être meilleure...
    Apparemment, le $1 remplace le head -1.
    Dans son code, destDir représente le répertoire de destination.
    Si tu préfères l'appeler folder_certificats, il suffit de remplacer destDir par folder_certificats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    export folder_certificats=/home/users/IOT/tmp_certificats
    find wso2iot* -name 'client-truststore.jks' -exec sh -c 'cp --verbose "$1" "$folder_certificats/"' sh {} +
    Rq: il faut qu'elle soit exportée pour être visible dans le sous-shell lancé par -exec sh.

  7. #7
    Membre confirmé Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Par défaut
    waouh !!! Un grand merci pour ces explications. J'ai pris note et surtout sauvegardé ton explication car cela me fait bien avancer !

    Merci encore pour avoir pris ce long moment ainsi qu'a N_BaH pour m'avoir mis sur la voie.

    Bravo encore et au plaisir de vous lire.

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

Discussions similaires

  1. Requête avec variable incrémentée sur changement de clé.
    Par souellet dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/09/2005, 22h47
  2. Merge avec variables
    Par kluh dans le forum Oracle
    Réponses: 18
    Dernier message: 25/07/2005, 14h31
  3. [AS2] Pb avec variables dans syntaxe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/07/2005, 11h28
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20

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