Necesito ayuda para configurar un script para cambiar la fecha y la hora Mac OS Catalina

esperando que alguien pueda ayudar con esto. Estoy tratando de escribir un script de terminal automatizador en Mac OS Catalina que apagará WiFi, desactivará la configuración automática de fecha y hora, y configurará mi Mac a una fecha y hora de sistema específicas. Realmente no tengo experiencia en programación, pero lo que tengo hasta ahora funciona para apagar el wifi y cambiar la fecha y la hora del sistema... pero el script no sale en Automator... simplemente sigue girando. No estoy seguro de cómo hacer que el comando Sudo -S salga una vez que establece la fecha y la hora del sistema. Esto es lo que tengo hasta ahora:

networksetup -setairportpower en0 off

echo "password" | sudo -S date 0101000120

Así que esto apagará wifi y pasará mi contraseña (también puedo hacerlo a través de un cuadro de diálogo, pero ese no es mi problema) y establecerá la fecha del sistema... luego la rueda automática simplemente gira...

  1. ¿Alguna idea de cómo hacer que la secuencia de comandos del terminal salga y pase al siguiente comando... o debería simplemente ejecutarlo y luego salir de la secuencia de comandos mientras gira, lo cual no es ideal pero también funciona?
  2. comando para activar y desactivar la actualización automática de la fecha y hora del sistema mac?

Muchas gracias por leer y aprecio mucho cualquier ayuda.

EDITAR: actualmente reescribió la tarea del automatizador para ejecutar el comando de terminal, solicite una contraseña y luego pásela:

networksetup -setairportpower en0 off pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "" with hidden answer' -e 'text returned of result' 2>/dev/null)" && / echo "$pw" | sudo -S date 0101000120

Todavía gira la rueda en un bucle infinito al final, pero puedo hacer clic y forzar la parada. ¡Alguien sabe una manera de hacer que deje de apreciarlo!

echoenvía la salida a la consola. Una solicitud de contraseña está esperando entrada . El comando que estás buscando es expect. Sin embargo, apagar WiFi y cambiar la hora del sistema es un flujo de trabajo bastante extraño. ¿Qué está tratando de lograr?
Ejecuto un programa heredado de una empresa ahora desaparecida que configura equipos antiguos pero muy confiables donde trabajo (desafortunadamente no hay actualizaciones de software para un programa de Windows de 1998). No se ejecutará si la fecha del sistema en paralelo es posterior a una fecha determinada. Es solo un dolor ingresar manualmente a través de la Mac y cambiar todas estas cosas manualmente, así que tratar de automatizarlo ... ¡principalmente para que no tenga que ser el único capaz de iniciar esto!
el indicador de eco está enviando mi contraseña a la terminal y aceptándola... se ejecuta el siguiente comando sudo -s pero luego AppleScript simplemente gira... intenté 'esperar' en lugar de 'eco' pero ahora solicita "entrada esperada nuevamente" que el eco parecía estar proporcionando. Todo lo que he escrito funciona bien, simplemente no terminará o saldrá más allá de la fecha... ¿Echo está haciendo eso?
Lo siento, pero me está costando seguir. Te refieres a un Applescript, pero no veo dónde lo llamas/referencias. Además, ¿no puede simplemente configurar la fecha en la máquina virtual en lugar de en el host?
Gracias Allan. AppleScript puede ser la terminología incorrecta. Estoy usando un comando de terminal desde la aplicación Automator. Si copia y pega lo que tengo para el código en la publicación original, verá cómo funciona (simplemente sustituya la contraseña de su sistema donde tengo "contraseña")... luego se cuelga. Creo que el problema es que no sé cómo salir del comando sudo -s y parece atascado en un bucle.
Según la página del manual de Sudo, -S requiere un carácter de nueva línea después de la contraseña. ¿Podría estar esperando eso?

Respuestas (1)

Podría hacer que esto funcione canalizando la contraseña a sudo desde un archivo en lugar de usar echo:

sudo -S date 0101000120 < ~/passwd.txt

Sin embargo, no estoy seguro de qué implicaciones de seguridad tiene esto, pero se siente mal...

Si está buscando una solución rápida y sucia, entonces esto lo hará, sin embargo, según el comentario de nohillside, aquí hay algunas instrucciones para ejecutar comandos sudo sin requerir una contraseña . Estas sugerencias funcionan para mí en Mojave en iTerm2 y terminal.

Tiene aproximadamente las mismas implicaciones que la versión en la pregunta: cualquier persona que tenga acceso passwd.txt(o al archivo de Automator para el enfoque adoptado en la pregunta) puede iniciar sesión como Administrador después. Podría ser mejor usarlo visudopara editar el archivo sudoers y permitir el acceso sudo sin contraseña al datecomando para el usuario específico.
Bueno, gracias. Tampoco me siento cómodo teniendo el PW en un archivo como ese, y cuando lo probé, también funcionó, pero Automator simplemente hace girar la rueda en un bucle infinito. Así que lo modifiqué para que pida una contraseña y luego pase esto al comando Sudo -S ... luego solo tendré que hacer clic en el botón "salir" para que el automático deje de girar. Todavía más rápido que ir a las preferencias y cambiar todo esto.
networksetup -setairportpower en0 off pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "password" with hidden answer' -e 'text returned of result' 2>/dev/null)" && / echo "$pw" | sudo -S date 0101000120
¿Alguien conoce una forma sencilla de desactivar la actualización automática de fecha y hora? Lo que descubrí es que Parallels es realmente bueno para encontrar la fecha y la hora y pasarla a Windows incluso si anula la selección... una vez que eso sucede, el programa de Windows se congela...