Ho uno script (per lo più preso in prestito) che utilizza scutil
per rinominare i computer in base ai valori in un file CSV. Corrisponde al numero seriale al nome di un computer, imposta una variabile, quindi rinomina ComputerName
, HostName
e LocalHostName
con la variabile. Per riferimento, il nome sarà SFO-C2900-MBP
Ecco lo script:
#!/bin/bash
echo "-----Starting-----"
# Get serial from ioreg and assign
serial="$(ioreg -l | grep IOPlatformSerialNumber | sed -e 's/.*\"\(.*\)\"//')"
#Initialize compName to null
compName=''
#Loop through CSV looking for a match
while IFS=',' read ser loc; do
if [ "$serial" == "$ser" ]; then
compName=$loc
echo "Serial Matched with name: $compName"
fi
done < /Volumes/Macintosh\ HD/Users/Shared/Configuration/names.csv
#If compName is not null, use scutil to rename. Otherwise user must manually rename
if [[ -z $compName ]]; then
echo "This computer was not found on the list, you must manually rename it."
else
echo "Setting Host Name to $compName"
scutil --set HostName $compName
echo "Setting Computer Name to $compName"
scutil --set ComputerName $compName
echo "Setting Local Host Name to $compName"
scutil --set LocalHostName $compName
fi
echo "-----Finished Renaming-----"
Da ciò stanno accadendo due cose:
1) Viene generato un errore quando lo script tenta di rinominare LocalHostName
: SCPreferencesSetLocalHostName() failed: Invalid argument
2) Il Terminale, dopo aver chiuso / riavviato / etc, farà quanto segue: Terminale che mostra il Punto interrogativo sulla cartella, anch'esso mancante del nome host
L'impostazione manuale di questi valori tramite terminale utilizzando scutil --set {def}
funziona correttamente e ripristina il normale funzionamento di Terminal.
Ho provato quanto segue:
- Rimozione delle linee LocalHostName dallo script
- Impostazione del valore LocalHostName su una variabile impostata all'interno dello script e non sul file CSV
Per lo più, il problema dello script è quello che fa a Terminal più di ogni altra cosa: posso aggirare il problema LocalHostName. Stranamente, quando si esegue scutil --get {def}
su quelli, Terminal restituisce i valori corretti.