Tengo un script para automatizar el inicio de algunos servidores en el terminal. Estos son procesos de servidor del software que estoy desarrollando. Se pueden volver a compilar y cambiar varias veces al día. Los binarios pueden vivir en diferentes lugares (copias de trabajo).
Mi script usa
set sudo to do shell script "sudo -v "
para solicitar la contraseña de root una vez, luego crea una nueva ventana de terminal iterm2 (y algunas pestañas) e intenta iniciar los servidores con sudo:
#!/usr/bin/osascript
on run args
set sudo to do shell script "sudo -v " -- to ask for password once only
tell application "iTerm"
create window with default profile
tell current window
tell current session
write text "sudo /some/server"
end tell
-- more tabs and more sudos go here
end tell
end tell
end run
Todo funcionó bien en El Capitán, pero no en High Sierra.
Si la contraseña sudo
no se almacena en la caché, sudo -v
solicita mi contraseña y luego continúa --- como se esperaba. Si ejecuté sudo
antes y la contraseña se almacena en la caché, sudo -v
no solicita una contraseña, nuevamente, como se esperaba.
Pero en ambos casos, cada uno de los siguientes sudo
s en la nueva ventana me pide mi contraseña, lo que hace que todo sea inconveniente.
Cuando agrego with administrator privileges
al sudo
inicial, solicita mi contraseña en un cuadro de diálogo emergente, pero las siguientes llamadas a sudo
con write text
aún piden la contraseña en el shell.
(Yo uso write text
y el terminal para controlar las salidas de estos servidores).
Puedo ejecutar los comandos regulares de sudo muy bien y almacena la contraseña.
¿Cómo puedo usar sudo
en Applescript en una nueva ventana de iTerm2 y pedirle que solicite la contraseña solo una vez?
EDIT : parece que esto no está relacionado con Applescript sino con iterm y High Sierra. Cuando abro una ventana de terminal con 2 pestañas, debo ingresar mi contraseña en ambas cuando ejecuto, por ejemplo, sudo ls
. Después de que ambas pestañas tengan la contraseña de sudo en caché, pero ejecutar sudo en una pestaña no hace que la otra pestaña use la contraseña de sudo en caché.
Entonces, la verdadera pregunta es: ¿cómo puedo hacer que iTerm2 almacene en caché la contraseña de sudo y la comparta entre pestañas y ventanas?