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 :

Récupérer un résultat commande bash


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut Récupérer un résultat commande bash
    Bonjour,


    Pour les besoins de mon scripts en bash j'aimerai récupérer le résultat d'une commande, qui par la suite ce fameux résultat me servira pour le hostname les machines en questions.

    Je me sert de la mac adresse de la machine pour ensuite l'inclure dans le hostname

    Exemple :

    PC1 = toto14
    PC2 = toto8
    PC 3 = toto45

    Etc...

    Voici ma commande qui me permet de récupérer la mac adresse et par la même occasion de "cut" et de prendre qu'un seul morceau.

    ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}' | cut -d: -f7

    Nom : 86.PNG
Affichages : 212
Taille : 8,2 Ko

    ce que j'aimerai comme je l'ai dit, c'est prendre le résultat de la commande et d'y inclure le changement du hostname de la machine en prenant compte le résultat de la commande ci dessus.

    Une petite aide serait pas refus, merci

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom="$nom$(ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}' | cut -d: -f7 )"

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut
    Merci pour l'aide

    Malheureusement pour moi ça fonctionne pas puisque j'ai l'erreur " Ligne 6 NF-2 : commande introuvable"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    _HOSTNAME="$Abeille(ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}' | cut -d: -f7)"
    echo "$_HOSTNAME"> /etc/hostname
    echo "127.0.0.1 localhost" > /etc/hosts
    echo "127.0.0.1 ${_HOSTNAME}.localdomain ${_HOSTNAME}" >> /etc/hosts
    Nom : TEST1.PNG
Affichages : 198
Taille : 19,3 Ko

    En revanche si je laisse avec "$nom$" j'ai aucun résultat, ça change rien et le signe "$" deviens "grisé"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    _HOSTNAME="$Abeille$(ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}' | cut -d: -f7)"
    echo "$_HOSTNAME"> /etc/hostname
    echo "127.0.0.1 localhost" > /etc/hosts
    echo "127.0.0.1 ${_HOSTNAME}.localdomain ${_HOSTNAME}" >> /etc/hosts
    Nom : TEST2.PNG
Affichages : 190
Taille : 20,1 Ko

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    La première syntaxe n'a aucun sens. Donc je ne commente même pas.

    Pour la seconde, rions ensemble. Ton code a tellement de coloration syntaxique que tu appelles "grisée", la couleur naturelle de ton code.
    De plus, tu découpes mal l'expression. Ce n'est pas $nom$, puis le reste, mais $nom, puis $( ), et le reste. $( ) est une substitution de commande. Je te laisse lire le paragraphe en exécutant cette commande (q pour quitter) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    man -P 'less -p"Substitution de commande"' bash
    Si cela ne fonctionne pas :

  5. #5
    Membre chevronné
    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
    Par défaut
    Bonjour,
    Et sans pipe vers cut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ip -o link | awk -F: '$2 != " lo" {printf "%.2s\n", $(NF-5)}'
    Cordialement.
    Meilleurs voeux a tous.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut
    Hello

    Pour la seconde, rions ensemble. Ton code
    j'vois pas en quoi ça reste marrant... mais surement un type d'humour n'étant pas pour moi...

    @Ctac_ j'ai testé bien que j'ai tenté d'autre chose avec un semblant de résultat, puisque j'obtiens uniquement "D3" ce qui correspond bien à un emplacement de ma mac adresse mais pas avec le nom, ça prend uniquement "D3" j'dois pas pas être bien loin je pense, voici le message d'erreur que j'ai

    ligne 10: fin de fichier (EOF) prématurée lors de la recherche du « " » correspondant
    /home/admini/Documents/TESTATOM: ligne 11: erreur de syntaxe : fin de fichier prématurée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HOSTNAME="$TOTO" $(ip -o link | awk -F: '$2 != " lo" {printf "%.2s\n", $(NF-5)}')"
    echo "$HOSTNAME"> /etc/hostname
    echo "127.0.0.1 localhost" > /etc/hosts
    echo "127.0.0.1 ${HOSTNAME}.localdomain" ${HOSTNAME} >> /etc/hosts
    la ligne "10" correspond ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "127.0.0.1 ${HOSTNAME}.localdomain" ${HOSTNAME} >> /etc/hosts

    En revanche quand j'exécute ce scripts (bien que je récupère pas une partie de ma mac adresse) fonctionne bien et en soit ça fait le "job" mais bon... j'aurai aimé faire un truc un peu plus "punch"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
     
    HOSTNAME="TOTO$RANDOM"
    echo "$HOSTNAME"> /etc/hostname
    echo "127.0.0.1 localhost" > /etc/hosts
    echo "127.0.0.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts

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

Discussions similaires

  1. Résultat commande bash dans une variable
    Par psl dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 18/07/2016, 17h13
  2. Récupérer le résultat d'une commande scp
    Par vbcasimir dans le forum Linux
    Réponses: 19
    Dernier message: 20/05/2009, 16h14
  3. Récupérer le résultat d'une commande shell
    Par espadon1 dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2006, 10h01
  4. Réponses: 5
    Dernier message: 31/05/2006, 19h30
  5. Réponses: 2
    Dernier message: 02/01/2006, 10h39

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