Récupérer un résultat commande bash

Fermé
eakek - 1 janv. 2021 à 00:06
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 1 janv. 2021 à 12:09
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

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
1 janv. 2021 à 08:57
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.

0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié le 1 janv. 2021 à 10:55
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
0
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..
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
1 janv. 2021 à 12:09
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.
0