Tengo un script (en su mayoría prestado) que utiliza scutil
para cambiar el nombre de las computadoras basadas en valores en un archivo CSV. Hace coincidir el número de serie con el nombre de una computadora, establece una variable y luego cambia el nombre de ComputerName
, HostName
y LocalHostName
con la variable. Para referencia, el nombre será SFO-C2900-MBP
Aquí está el 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-----"
Dos cosas están sucediendo a partir de esto:
1) Se produce un error cuando el script intenta cambiar el nombre de LocalHostName
: SCPreferencesSetLocalHostName() failed: Invalid argument
2) La Terminal, después de salir / reboot / etc, hará lo siguiente: Terminal que muestra el signo de interrogación sobre la carpeta, también falta el nombre de host
La configuración manual de estos valores a través del terminal usando scutil --set {def}
funciona bien y restaura el funcionamiento normal del terminal.
He intentado lo siguiente:
- Eliminando las líneas de LocalHostName del script
- Establecer el valor de LocalHostName en una variable establecida dentro del script y no en el archivo CSV
Principalmente, el problema de la secuencia de comandos es lo que le hace a Terminal más que nada: puedo solucionar el problema LocalHostName. Por extraño que parezca, cuando ejecuta scutil --get {def}
en esos, el terminal genera los valores correctos.