Estoy tratando de hacer que las Mac de mi lugar de trabajo se actualicen en un momento específico. Para hacerlo, estoy ejecutando un script de bash desde un Macbook de repuesto que ejecuta OS X Server. Tengo un problema menor y uno grande con mi script actual, y podría usar su ayuda.
El script es muy simple, 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 cualquier razón, si trato de 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
reinicia el servidor real en su lugar. No estoy seguro de dónde voy mal con la sintaxis.
El gran problema: a pesar de configurar ssh con una clave ssh pública (siguiendo las instrucciones que encontré aquí ), todavía me piden que ingrese 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 configurar un trabajo cron temprano en la mañana y hacer que se ejecute este script automáticamente para que, cuando esté en el trabajo, las Mac se hayan actualizado y reiniciado. Estoy seguro de que hay una forma de hacerlo, pero mi Google-Fu me está fallando.
EDITAR / RESPUESTA PARCIAL Resulta que, incluso si pone TextEdit en modo de texto sin formato, sigue usando "comillas inteligentes". Escribir y guardar el script a través de la Terminal y luego ejecutarlo funcionó a la perfección.
0942v8653 tuvo la amabilidad de ayudarme en el chat y también proporcionó un comando para deshabilitar esta 'característica': defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
Sigo buscando una solución al problema de la contraseña.