Guida allo script: Rinominare automaticamente il nome host locale e il computer per macOS

Punti chiave

  • Efficienza automatizzata: Lo script rinomina in modo automatico i computer e nomi degli host locali del Mac, migliorando l’efficienza della gestione della rete.
  • Nomi di rete e nomi user-friendly: Fa una distinzione tra il nome user-friendly del computer e il nome dell’host locale visibile in rete.
  • Flessibilità dei parametri: Gli utenti possono scegliere di rinominare il nome dell’host locale, il nome del computer o entrambi.
  • Rigorose regole di convalida: Lo script per rinominare il computer per macOS applica gli standard di denominazione, garantendo la conformità alle convenzioni dei nomi host.
  • Gestione degli errori: L’efficace gestione degli errori fornisce un feedback chiaro e previene gli ostacoli più comuni.
  • Pulizia della cache DNS: Include un passaggio per svuotare la cache DNS, facilitando il riconoscimento immediato delle modifiche da parte della rete.
  • Dipendenza dal rinnovo DHCP: Le modifiche ai nomi potrebbero non propagarsi completamente fino al ciclo di rinnovo DHCP successivo.
  • Automazione e processo manuale: Lo script offre un significativo miglioramento dell’efficienza rispetto al processo di rinominazione manuale.
  • Sicurezza e chiarezza: Favorisce il mantenimento di una convenzione di denominazione che favorisca la sicurezza e la chiarezza della rete.
  • Integrazione con gli strumenti di gestione: La funzionalità dello script per rinominare il computer per macOS esemplifica il tipo di automazione che può essere integrata in sistemi di gestione IT come NinjaOne.

La modifica del nome del computer e dell’host locale di un Mac è un’operazione cruciale per i professionisti IT che gestiscono più dispositivi in rete. Rinominando in modo efficiente questi componenti si può semplificare la gestione della rete e l’identificazione dei dispositivi, garantendo un funzionamento perfetto in ambienti IT dinamici.

Background

Lo script Bash fornito offre una soluzione solida per rinominare il nome del computer e dell’host locale di un Mac. Questi elementi sono fondamentali in una configurazione di rete: il nome del computer è l’identificatore user-friendly visibile nel Finder, mentre il nome dell’host locale viene utilizzato all’interno della rete. Lo script per rinominare il computer per macOS è particolarmente utile per i professionisti IT e i fornitori di servizi gestiti (MSP) che devono gestire le identità dei dispositivi in modo coerente ed efficiente.

Lo script per rinominare il computer per macOS:

#!/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/terms-of-use.
# 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."

 

Accedi a oltre 700 script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata

Lo script per rinominare il computer per macOS si articola in diverse fasi chiave:

  • Gestione dei parametri: Inizia analizzando gli argomenti della riga di comando, consentendo agli utenti di specificare se desiderano modificare il nome dell’host locale, il nome del computer o entrambi.
  • Convalida: Include una funzione di convalida per garantire che il nuovo nome sia conforme agli standard dei nomi host, controllando i caratteri proibiti e le restrizioni di lunghezza.
  • Modifica del nome: Il comando scutil viene utilizzato per applicare i nuovi nomi. Dopo ogni modifica, lo script fa una breve pausa per assicurarsi che il sistema riconosca il nuovo nome prima di procedere.
  • Gestione degli errori: Lo script per rinominare il computer per macOS gestisce in modo efficace gli errori, fornendo un feedback chiaro in caso di problemi.
  • Pulizia della cache DNS: Infine, svuota la cache DNS, assicurando che i nuovi nomi siano immediatamente riconosciuti in tutta la rete.
  • Notifica all’utente: Lo script si conclude ricordando all’utente che le modifiche potrebbero non essere visibili fino al successivo rinnovo del DHCP.

Casi d’uso potenziali

Immagina che un professionista IT di una scuola abbia bisogno di rinominare i Mac in un laboratorio informatico per facilitarne la gestione. Utilizzando questo script, è possibile aggiornare in modo efficiente l’identità di ogni macchina, garantendo una convenzione di denominazione coerente in tutta la rete.

Confronti

Normalmente rinominare i Mac richiede un intervento manuale attraverso le Preferenze di Sistema, che richiede molto tempo ed è soggetto a errori. Lo script automatizza il processo, riducendo la probabilità di errori e facendo risparmiare molto tempo.

Domande frequenti

  • Come si utilizza lo script per rinominare il computer per macOS?
    • È sufficiente eseguire lo script con il nuovo nome come argomento, specificando facoltativamente il tipo di nome da modificare.
  • È possibile rinominare una macchina con un nome contenente caratteri speciali?
    • No, lo script convalida il nome per assicurarsi che sia conforme agli standard dei nomi host.
  • I cambiamenti saranno immediati?
    • Lo script esegue la pulizia della cache DNS, ma alcune modifiche potrebbero essere visualizzate solo dopo il successivo rinnovo del DHCP.

Implicazioni

L’automazione del processo di rinominazione riduce al minimo gli errori umani e semplifica la gestione della rete. Tuttavia, è fondamentale mantenere una convenzione di denominazione che migliori la sicurezza e la chiarezza della rete.

Raccomandazioni

  • Effettua sempre un backup delle impostazioni del sistema prima di eseguire tali script.
  • Utilizza convenzioni di denominazione chiare e coerenti.
  • Testa lo script per rinominare il computer per macOS in un ambiente controllato prima della distribuzione su larga scala.

Considerazioni finali 

Nel contesto di strumenti come NinjaOne, lo script per rinominare il computer per macOS esemplifica il tipo di soluzione efficiente e automatizzata che è essenziale per la gestione IT moderna. Le funzionalità di NinjaOne possono integrare tali script, offrendo un approccio completo alla gestione dei dispositivi e della rete. L’integrazione di tale automazione all’interno di strutture di gestione IT più ampie è fondamentale per mantenere ambienti IT affidabili, sicuri ed efficienti.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più sulla distribuzione remota di script con NinjaOne, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.