Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/06/2020, à 06:07

Guismo

script pour effacer le hostname

Bonjour,

Je voudrais savoir comme faire un script pour changer un hostname (fichier hosts), sur le réseau tout en comparant ce nouveau nom de machine aux noms de machines présents sur le réseau.

comment dois je procéder?

J'interroge le réseau sur les noms de machine connectées et j'édite une liste qui sera par la suite utilisée en référence pour contrôler si le hostname existe déjà?

Je précise je n'ai pas de DNS j'ai juste configurer le fichier hosts (noms de machines présent sur le fichiers hosts)

Si quelqu’un peut me donner une piste

Dernière modification par Guismo (Le 01/06/2020, à 06:44)


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#2 Le 01/06/2020, à 07:08

MicP

Re : script pour effacer le hostname

Bonjour Guismo

S'il n'y a pas de serveur DNS sur ce réseau, il ne sera pas possible de récupérer depuis une autre machine le nom d'une machine à laquelle serait associée une adresse IP.

Dans ce cas là, la seule façon de récupérer le nom d'une machine serait de pouvoir exécuter la commande hostname depuis la machine concernée,
et donc de s'y connecter,
et pour pouvoir en changer le nom, il faudra accéder aux privilèges du compte root de la machine dont tu voudrais changer le nom.

(Ça me rappelle ce qu'il se passe dans ce fil de discussion sur debian-facile.org)

Dernière modification par MicP (Le 01/06/2020, à 07:30)

Hors ligne

#3 Le 01/06/2020, à 07:29

Guismo

Re : script pour effacer le hostname

Ok, donc en configurant mon réseau comme ici, je pourrais si je comprend bien, je pourrais interroger le réseau sur les noms de machine connectées et éditer une liste qui sera par la suite utilisée en référence pour contrôler si le hostname existe déjà?

Dernière modification par Guismo (Le 01/06/2020, à 07:42)


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#4 Le 01/06/2020, à 07:33

MicP

Re : script pour effacer le hostname

Non, justement,
dans le cas de ce fil de discussion,
il n'y a de serveur DNS sur aucun des deux réseaux locaux.

Dernière modification par MicP (Le 01/06/2020, à 07:35)

Hors ligne

#5 Le 01/06/2020, à 07:43

Guismo

Re : script pour effacer le hostname

Dans mon cas je n'ai pas non plus de DNS.
j'ai une idée celle de nommée mes machine avec les deux ou le dernier octet de son IP, ce qui fait quand cas de changement de hostname je ne peut avoir deux hostname identique! Est ce la bonne solution?

Le problème règne au niveau du changement sur le fichier hosts

Dernière modification par Guismo (Le 01/06/2020, à 07:51)


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#6 Le 01/06/2020, à 15:32

Guismo

Re : script pour effacer le hostname

Bon je suis arrivé à un résultat pour l'attribution des noms de mes machine:

#!/bin/bash
nom=ch
mon_ip=`hostname -I | \
   cut -c13,14,15`

echo $o
nom-$mon_ip > /etc/hostname

Ce qui fait que j'ai une identification par nom+fin du troisième octet de l'ip, j'ai mis une plombe pour trouver ça maintenant je souffre à trouver le raisonnement pour aller coller ce hostname dans le fichier /etc/hosts
J'ai essayé plein de solution sur le web et je m'en retrouve avec l'esprit et la reflexion complètement vide! hmm hmm

Une piste?

je précise que j'ai configurer mon fichier hosts comme indiqué ci-dessus

Dernière modification par Guismo (Le 01/06/2020, à 20:06)


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#7 Le 01/06/2020, à 17:24

Guismo

Re : script pour effacer le hostname

Mince quel imbécile c'est

#!/bin/bash
nom=ch
mon_ip=`hostname -I | \
   cut -c11,12,13`

echo $nom-$mon_ip > /etc/hostname

Dernière modification par Guismo (Le 01/06/2020, à 20:13)


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#8 Le 01/06/2020, à 18:24

nany

Re : script pour effacer le hostname

Bonjour,


Guismo a écrit :

Bon je suis arrivé à un résultat pour l'attribution des noms de mes machine:

#!/bin/bash
nom=ch
mon_ip=`hostname -I | \
   cut -c13,14,15`

echo $nouveau_nom-$mon_ip > /etc/hostname

Ce qui fait que j'ai une identification par nom+fin du troisième octet de l'ip,

Euh… ⁇
Et d’où sort $nouveau_nom ?

Guismo a écrit :

j'ai mis une plombe pour trouver ça maintenant je souffre à trouver le raisonnement pour aller coller ce hostname dans le fichier /etc/hosts
J'ai essayé plein de solution sur le web et je m'en retrouve avec l'esprit et la reflexion complètement vide! hmm hmm

Une piste?

je précise que j'ai configurer mon fichier hosts comme indiqué ci-dessus

Je ne vois rien indiqué ci-dessus.
Néanmoins,

#!/bin/bash
ancien_nom=$(cat /etc/hostname)
nom=ch
mon_ip=$(hostname -I | awk '{sub(".*\.","",$1);print $1}')
nouveau_nom="$nom-$mon_ip"

echo "$nouveau_nom" > /etc/hostname
sed -i "s/$ancien_nom/$nouveau_nom/g" /etc/hosts

En ligne

#9 Le 01/06/2020, à 18:25

Watael

Re : script pour effacer le hostname

quel imbécile* c'est

#*!/bin/bash

nom=ch
#monIP=$(hostname -i)
monIP=$(hostname -I)

echo "${nouveauNom:-inconnu}-${monIP##*.}" >/etc/hostname

--
* big_smile
plus sérieusement, ta commande ne fonctionnera pas avec une adresse différentes (10.0.0.2, par exemple)

Dernière modification par Watael (Le 01/06/2020, à 19:18)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 01/06/2020, à 19:09

nany

Re : script pour effacer le hostname

Watael a écrit :
monIP=$(hostname -i)

Chez moi, hostname -i me sort 127.0.1.1.

En ligne

#11 Le 01/06/2020, à 19:15

Watael

Re : script pour effacer le hostname

là, je suis sur ArchLinux, je n'ai pas d'option -I. j'ai pensé que ça donnait la même information.

je corrige.

Dernière modification par Watael (Le 01/06/2020, à 19:17)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#12 Le 01/06/2020, à 19:38

MicP

Re : script pour effacer le hostname

Bonsoir

@Guismo

Une adresse IPv4 est composée de 4 octets.

Un octet, en décimal peut avoir une valeur sur 3 chiffres
prendre seulement les deux derniers ne suffirait pas.

Tu avais écrit dans ce fil de discussion que tu avais 2 réseaux,
et dans ces deux réseaux, il pourrait très bien exister
des adresses IP dont le dernier octet est le même.

Pour pouvoir les différencier vraiment,
il faudra donc tenir compte des deux derniers octets.

=======
Ci-dessous, le script à exécuter
avec les privilèges du compte root de et sur chacune des machines.

#!/bin/bash

# Pour changer le nom de machine en y ajoutant
#  les deux derniers octets de l'adresse IP de la machine
#  précédés par le caractère '-'

lastHostname=$(hostname)
ipAdresses=( $(hostname -I) )
toAdd=$(awk -F. '{printf "-"$3"-"$4}' <<< ${ipAdresses[1]})
newHostname=$lastHostname$toAdd

# Pour remplacer le nom de machine dans le fichier '/etc/hosts'
sed -i "s/$lastHostname/$newHostname/g" /etc/hosts

# Pour remplacer le nom de machine dans le fichier '/etc/hostname'
echo "$newHostname" > /etc/hostname

=======
EDIT :

La ligne de commande 'hostname -I' retourne l'adresse IP en y ajoutant un caractère espace à la fin (vacherie !!!)
C'est sans doute pour séparer les différentes adresses IP que les interfaces réseaux de la machine auraient pu avoir.
Sur ma machine, ça donne :

michel@micT450:~$ hostname -I
192.168.0.18 192.168.122.1 2a01:e0a:448:5860:280a:a4a2:68d7:b4ad 2a01:e0a:448:5860:6af7:28ff:fed8:73b1 
michel@micT450:~$ 

Du coup j'ai modifié mon script afin qu'il ne prenne en compte que la première adresse IP
en utilisant une liste (array) comme conseillé par Watael dans son message #15

Dernière modification par MicP (Le 01/06/2020, à 20:49)

Hors ligne

#13 Le 01/06/2020, à 20:05

Guismo

Re : script pour effacer le hostname

@Nany dsl mais je n'ai pas remarqué mon erreur entre temps j'avais changé! arf mais super vous êtes tous arrivé en même temps.

et moi qui est passé une journée de ouf a chercher et me tordre le cerveau à faire des test et re-test! Je vois par coontre que je me suis bien tordu le cerveau dans le trop compliqué!

je vais déjà aller corrigé mon erreur.

Dernière modification par Guismo (Le 01/06/2020, à 20:43)


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#14 Le 01/06/2020, à 20:12

Guismo

Re : script pour effacer le hostname

Bonsoir @MicP,
Ouais un peut de bon sens ne m'aurais pas fait de mal non plus, désolé de t'avoir écorchés les yeux!

Bon je vais décrocher pour mieux reprendre demain! En vous remerciant de votre intervention mais je suis content de moi aujourd'hui j'ai bien bossé!

Merci encore à bientôt


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#15 Le 01/06/2020, à 20:27

Watael

Re : script pour effacer le hostname

Du coup j'ai modifié mon script afin qu'il ne prenne en compte que la première adresse IP

si c'est une liste, alors utilise une liste ! smile

$ monIP=( $(hostname -I) )
$ echo "${monIP[0]}" #ou simplement "$monIP"

Dernière modification par Watael (Le 01/06/2020, à 20:27)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#16 Le 01/06/2020, à 20:34

MicP

Re : script pour effacer le hostname

Merci beaucoup Watael smile
c'est effectivement beaucoup plus logique d'utiliser une liste

Hors ligne

#17 Le 01/06/2020, à 20:54

Guismo

Re : script pour effacer le hostname

@watael @MicP,

Je vous explique en faite, j'ai configuré mon dhcp pour qu'il soit paramétrable à distance, au début je n'avais pas réservé d'adresse (maintenant si) pour mes postes, alors le script présent scanne via nmap le réseau pour avoir toutes les adresses connectées une foi le script engagé il se connecte à toutes les machines et viens exécuter un autre script présent sur les PC!

Donc oui il y à une liste, et en
vous lisant je me demande si il est vraiment nécessaire de faire des scripts sur les machines et je comprend donc que mon script sur le serveur pourrais être le seul et avoir la même action qu'avec deux script (1 sur le serveur, 1 sur chaque machine).

Je suis complètement novice en bash je bouffe du cours, j’apprends je  lis  etc,..

j'ai beaucoup appris et lorsque je lis vos ligne de bash , je comprend et si je comprend pas je vais pêcher l'info

Dernière modification par Guismo (Le 01/06/2020, à 20:58)


L'Homme est l'espèce la plus insensée, il vénère un dieu invisible et massacre une nature visible ! Sans savoir que cette nature qu'il massacre est ce dieu invisible qu'il vénère !

Hors ligne

#18 Le 01/06/2020, à 21:15

Watael

Re : script pour effacer le hostname

monReseau='192.168.1.0/24'
for ip in $(nmap -sn -PR -oG - "$monReseau" | sed -n '/\Host/s/^[^:]*: \([^ ]*\).*/\1/p')
do
   ssh "$ip" '/pah/to/script'
done

bon appétit !

Dernière modification par Watael (Le 01/06/2020, à 21:15)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne