Récupérer un résultat commande bash

Signaler
-
Messages postés
36207
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 janvier 2021
-
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

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 réponses

Messages postés
36207
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 janvier 2021
5 807
Salut,

Quasiment rien pigé à ton problème ;-(

Je comprends la récup de l'adresse MAC.
Je ne ne comprends pas la récup des 2 derniers caractères ;-\
Et que vient faire le changement de hostname ???


Merci de mettre un AVANT => APRÈS de ce que tu espères comme résultat.

Messages postés
36207
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 janvier 2021
5 807
En attendant voilà ce qu'il est possible de faire ou d'envisager…

Récupération de la commande dans une variable (adapter à ma sauce vu que j'ai plusieurs interfaces)
$ var=$(ip -o link | awk '$2 == "enp2s0:" {print $2, $(NF-2)}')


Affichage du contenu de la variable :
$ echo "${var}"
enp2s0: 2c:60:0c:f4:a0:f2


Affichage que du nom de l'interface :
$ echo "${var%%:*}"
enp2s0


Affichage que de l'adresse MAC :
$ echo "${var#* }"
2c:60:0c:f4:a0:f2


Affichage que des 2 derniers caractères :
$ echo "${var: -2}"
f2
Afin de pouvoir donner un nom unique sur chaque poste via mon scripts et être sur que les poste ne possède pas le même chiffre lors de la création de compte sur de multiple machine via mon scripts.

Du coup je récupère un morceau de la mac adresse exemple D2 et je récupère ce fameux "D2" pour faire le nom de mon hostname sur la machine

Exemple, TOTOD2, TOTOC7, TOTOE9

Ainsi je lance mon scripts sur l'ensemble des machines et j'ai pas besoin de faire le changement du hostname manuellement, création du compte etc..
Messages postés
36207
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
9 janvier 2021
5 807
Ok.

Tu as pas mal de pistes dans mon post précédent sur comment récupérer le résultat d'une commande dans une variable.

Par contre s'il ne te faut que les 2 dernier caractères de ta commande avec "ip" :
ip -o link | awk '$2 != "lo:" { print substr($(NF-2),16,2) }'

devrait faire l'affaire.