Estoy intentando que los Macs de mi trabajo se actualicen todos a una hora determinada. Para ello, estoy ejecutando un bash script desde un Macbook de repuesto que ejecuta OS X Server. Tengo un pequeño y un gran problema con mi actual script, y me vendría bien tu ayuda.
El script es muy sencillo, y no necesito que sea demasiado robusto para mis propósitos:
#!/bin/bash
for host in 192.blah.blah.blah 192.blah.blah.blah 192.blah.blah.blah
do
ssh -t $host sudo softwareupdate -ia
ssh -t $host sudo shutdown -r now
done
El problema menor: por alguna razón, si intento poner ambos comandos en la misma línea usando ;
o &&
así:
ssh -t $host sudo softwareupdate -ia;sudo shutdown -r now
o
ssh -t $host sudo softwareupdate -ia && sudo shutdown -r now
se reinicia el servidor real en su lugar. No estoy seguro de dónde me estoy equivocando con la sintaxis.
El gran problema: A pesar de configurar ssh con una clave ssh pública (usando las instrucciones que encontré aquí ), todavía se me pide que introduzca una contraseña dos veces por máquina cuando se ejecuta el script. Estoy seguro de que se debe a nuestro amigo sudo
pero los comandos no se ejecutan en absoluto sin él. Lo ideal es que configure una tarea cron a primera hora de la mañana y haga que se ejecute este scriptde forma automática para que, cuando esté en el trabajo, los Macs se hayan actualizado y reiniciado. Estoy seguro de que hay una manera de hacerlo, pero mi Google-Fu me está fallando.
EDITAR/RESPUESTA PARCIAL Resulta que, aunque pongas TextEdit en modo de texto plano, sigue usando 'comillas inteligentes'. Escribiendo y guardando el script a través de la Terminal y LUEGO ejecutándolo funcionó como un encanto.
0942v8653 tuvo la amabilidad de ayudarme en el chat, y también proporcionó un comando para desactivar esta "característica": defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
Sigo buscando una solución al problema de la contraseña.