Points à retenir
- Efficacité automatisée : Le script permet de renommer des ordinateurs macOS et des hôtes locaux automatiquement, améliorant ainsi l’efficacité de la gestion du réseau.
- Noms conviviaux ou noms de réseau : Il fait la distinction entre le nom de l’ordinateur, facile à utiliser, et le nom d’hôte local, visible sur le réseau.
- Flexibilité des paramètres : Les utilisateurs peuvent choisir de renommer le nom d’hôte local, le nom de l’ordinateur ou les deux.
- Règles de validation strictes : Le script applique les normes de dénomination, garantissant la conformité avec les conventions de noms d’hôtes.
- Gestion des erreurs : Une gestion robuste des erreurs fournit un retour d’information clair et permet d’éviter les pièges les plus courants.
- Nettoyage du cache DNS : Il comprend une étape pour vider le cache DNS, ce qui facilite la reconnaissance immédiate des changements par le réseau.
- Dépendance du renouvellement DHCP : Les changements de noms peuvent ne pas se propager complètement jusqu’au prochain cycle de renouvellement DHCP.
- Automatisation ou processus manuel : Le script offre une amélioration significative de l’efficacité par rapport au processus de renommage manuel.
- Sécurité et clarté : Il encourage le maintien d’une convention de dénomination qui favorise la sécurité et la clarté du réseau.
- Intégration avec les outils de gestion : La fonctionnalité du script illustre le type d’automatisation qui peut être intégré dans des systèmes de gestion informatique tels que NinjaOne.
Renommer un ordinateur macOS et le nom d’hôte local d’un Mac est une tâche cruciale pour les professionnels de l’informatique qui gèrent plusieurs appareils sur un réseau. En renommant efficacement ces composants, on peut rationaliser la gestion du réseau et simplifier l’identification des appareils, ce qui garantit un fonctionnement sans faille dans les environnements informatiques dynamiques.
Contexte
Le script Bash fourni offre une solution robuste pour renommer un ordinateur macOS et l’hôte local d’un Mac. Ces éléments sont essentiels dans une configuration réseau : le nom de l’ordinateur est l’identifiant convivial visible dans le Finder, tandis que le nom d’hôte local est utilisé au sein du réseau. Ce script est particulièrement utile pour les professionnels de l’informatique et les fournisseurs de services gérés (MSP) qui doivent gérer les identités des appareils de manière cohérente et efficace.
Le script :
#!/bin/bash # Description: Change's both the mac's computername (friendly name seen in Finder) and local hostname (what you would see in the network). Please note the hostname will update upon the next dhcp renewal. # # Release Notes: Initial Release # By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/fr/conditions-dutilisation # Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. # Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. # Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. # Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. # Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. # Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. # EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). # # Below are all the valid parameters for this script only the new computer name is required! # Preset Parameter: "ReplaceWithNewComputerName" --localhostname-only --computername-only # --localhostname-only: Sets only the LocalHostName (The one you see when scanning the network) # --computername-only: Sets only the user-friendly ComputerName (The one you see in finder) # Help text function for when invalid input is encountered print_help() { printf '\n### Below are all the (case sensitive) valid parameters for this script only the new computer name is required! ###\n' printf '\nPreset Parameter: "ReplaceWithNewComputerName" --localhostname-only --computername-only \n' printf '\t%s\n' "--localhostname-only: Sets only the LocalHostName (The one you see when scanning the network)" printf '\t%s\n' "--computername-only: Sets only the user-friendly ComputerName (The one you see in finder)" } # Determines whether or not help text is nessessary and routes the output to stderr die() { local _ret="${2:-1}" echo "$1" >&2 test "${_PRINT_HELP:-no}" = yes && print_help >&2 exit "${_ret}" } # THE DEFAULTS INITIALIZATION - OPTIONALS _arg_localhostname_only="off" _arg_computername_only="off" _typical="on" # Grabbing the parameters and parsing through them. parse_commandline() { while test $# -gt 0; do _key="$1" case "$_key" in --localhostname-only) _arg_localhostname_only="on" _typical="off" ;; --computername-only) _arg_computername_only="on" _typical="off" ;; --*) _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1'" 1 ;; *) if [[ -z $_arg_name ]]; then _arg_name=$1 else _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1' but the new computername '$_arg_name' was already specified" 1 fi ;; esac shift done } # Dtermines if the hostname is valid. validate_localhostname() { pattern=" |'" if [[ $1 =~ $pattern ]]; then _PRINT_HELP=yes die "FATAL ERROR: Local Hostnames DO NOT support spaces or most special characters - is okay!" 1 fi if [[ ${#1} -gt 253 ]]; then _PRINT_HELP=yes die "FATAL ERROR: Local Hostnames cannot be more than 253 characters long!" 1 fi if [[ ${#1} -gt 15 ]]; then printf "\nWARNING: Hostname is longer than 15 characters!" printf "\tWhile technically osx will let you set a hostname of basically any length you may experience issues if the name is absurdly long." fi } # Initializes parameter processing parse_commandline "$@" if [[ -n $newName ]]; then _arg_name=$newName fi if [[ -n $action ]]; then if [[ $action == "Change Local Host Name Only" ]]; then _arg_localhostname_only="on" _typical="off" fi if [[ $action == "Change Computer Name Only" ]]; then _arg_computername_only="on" _typical="off" fi fi # If they didn't give me a new name I should error out if [[ -z $_arg_name ]]; then _PRINT_HELP=yes die 'FATAL ERROR: No Computer Name was given! Please enter in the new name in the "Preset Parameter" box in Ninja! For Example "MyNewName".' 1 fi # If they didn't specify which of the 2 names to change we'll change both if [[ $_typical == "on" ]]; then validate_localhostname "$_arg_name" echo "Changing both LocalHostName and ComputerName to $_arg_name..." # This actually changes the name scutil --set LocalHostName "$_arg_name" # Sleeps for a few seconds as scutil sometimes takes a second or two for the new name to appear sleep 7 # Tests that the change was successful new_localhostname=$(scutil --get LocalHostName) if [[ $new_localhostname != "$_arg_name" ]]; then _PRINT_HELP=no die "FATAL ERROR: failed to set local hostname to $_arg_name." 1 else echo "Success!" fi # Changes the friendly name scutil --set ComputerName "$_arg_name" # Sleeps for a few seconds as we're gonna test immediately afterwards sleep 7 # Test that we were successful new_computername=$(scutil --get ComputerName) if [[ $new_localhostname != "$_arg_name" ]]; then _PRINT_HELP=no die "FATAL ERROR: failed to set Computer Name to $_arg_name." 1 else echo "Success!" fi fi # This is the same as above just localhostname only if [[ $_arg_localhostname_only == "on" ]]; then validate_localhostname "$_arg_name" echo "Changing LocalHostName to $_arg_name..." scutil --set LocalHostName "$_arg_name" sleep 7 new_localhostname=$(scutil --get LocalHostName) if [[ $new_localhostname != "$_arg_name" ]]; then _PRINT_HELP=no die "FATAL ERROR: failed to set local hostname to $_arg_name." 1 else echo "Success!" fi fi # Same as above just friendly name only if [[ $_arg_computername_only == "on" ]]; then echo "Changing ComputerName to $_arg_name..." scutil --set ComputerName "$_arg_name" sleep 7 new_computername=$(scutil --get ComputerName) if [[ $new_computername != "$_arg_name" ]]; then _PRINT_HELP=no die "FATAL ERROR: failed to set Computer Name to $_arg_name." 1 else echo "Success" fi fi # Flushes the dns cache so that the mac is prepared to start handing out its new name dscacheutil -flushcache # Warns the user that it will take some time for the new name to show up printf "\nWARNING: The devicename in Ninja will likely display the old name until the next dhcp renewal." printf "\n\tOSX determines its devicename\hostname from the dhcp or dns server." printf "\n\tTypically these services will update their records upon receiving a new DHCP request from the device."
Accédez à plus de 700 scripts dans le Dojo NinjaOne
Description détaillée
Le script se déroule en plusieurs étapes :
- Traitement des paramètres : Il commence par analyser les arguments de la ligne de commande, ce qui permet aux utilisateurs de préciser s’ils souhaitent modifier le nom d’hôte local, le nom de l’ordinateur ou les deux.
- Validation : Il comprend une fonction de validation qui permet de s’assurer que le nouveau nom est conforme aux normes relatives aux noms d’hôtes, en vérifiant l’absence de caractères interdits et de restrictions de longueur.
- Changement de nom : La commande scutil est utilisée pour appliquer les nouveaux noms. Après chaque modification, le script marque une courte pause pour s’assurer que le système reconnaît le nouveau nom avant de poursuivre.
- Gestion des erreurs : Le script gère les erreurs de manière robuste et fournit un retour d’information clair en cas de problème.
- Nettoyage du cache DNS : Enfin, il vide le cache DNS, ce qui garantit que les nouveaux noms sont immédiatement reconnus sur le réseau.
- Avis à l’utilisateur : Le script se termine en rappelant à l’utilisateur que les changements peuvent ne pas être visibles avant le prochain renouvellement du DHCP.
Cas d’utilisation potentiels
Imaginez qu’un professionnel de l’informatique d’une école doive renommer les Macs d’un laboratoire informatique pour en faciliter la gestion. En utilisant ce script, ils peuvent mettre à jour efficacement l’identité de chaque machine, garantissant ainsi une convention de dénomination cohérente sur l’ensemble du réseau.
Comparaisons
Traditionnellement, renommer un Mac nécessite une intervention manuelle dans les Préférences Système, ce qui prend du temps et est source d’erreurs. Ce script automatise le processus, ce qui réduit le risque d’erreurs et permet de gagner beaucoup de temps.
FAQ
- Comment utiliser ce script ?
- Il suffit d’exécuter le script avec le nouveau nom en argument, en précisant éventuellement le type de nom à modifier.
- Puis-je renommer une machine avec des caractères spéciaux ?
- Non, le script valide le nom pour s’assurer qu’il est conforme aux normes relatives aux noms d’hôtes.
- Les changements seront-ils instantanés ?
- Le script vide le cache DNS, mais certaines modifications peuvent n’apparaître qu’après le prochain renouvellement DHCP.
Implications
L’automatisation du processus de renommage minimise les erreurs humaines et rationalise la gestion du réseau. Cependant, il est essentiel de maintenir une convention de dénomination qui renforce la sécurité et la clarté du réseau.
Recommandations
- Sauvegardez toujours les paramètres du système avant d’exécuter de tels scripts.
- Utilisez des conventions de dénomination claires et cohérentes.
- Testez le script dans un environnement contrôlé avant de le déployer à grande échelle.
Dernières réflexions
Avec des outils tels que NinjaOne, ce script illustre le type de solution efficace et automatisée qui est essentiel à la gestion informatique. Les fonctionnalités de NinjaOne peuvent compléter ces scripts, en offrant une approche complète de la gestion des appareils et du réseau. L’intégration de cette automatisation dans des cadres de gestion informatique plus larges est essentielle pour maintenir des environnements informatiques performants, sécurisés et efficaces.