Ho uno script per automatizzare l'avvio di alcuni server sul terminale. Questi sono i processi server del software che sto sviluppando. Possono essere ricompilati e modificati più volte al giorno. I binari possono vivere in luoghi diversi (copie funzionanti).
Il mio script usa
set sudo to do shell script "sudo -v "
per chiedere la password di root una volta, quindi crea una nuova finestra terminale iterm2 (e alcune schede) e prova ad avviare i server 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
Tutto ha funzionato bene su El Capitan, ma non su High Sierra.
Se la password sudo
non è memorizzata nella cache, sudo -v
richiede la mia password e quindi procede --- come previsto. Se ho eseguito sudo
prima e la password è stata memorizzata nella cache, sudo -v
non richiede una password, di nuovo, come previsto.
Ma in entrambi i casi, ciascuno dei successivi sudo
s nella nuova finestra richiede la mia password, rendendo l'intera operazione scomoda.
Quando aggiungo with administrator privileges
all'inizio sudo
richiede la mia password in una finestra di dialogo popup, ma le seguenti chiamate sudo
con write text
richiedono ancora la password sulla shell.
(Io uso write text
e il terminale per tenere d'occhio le uscite di questi server.)
Posso eseguire regolarmente comandi sudo bene e memorizza nella cache la password.
Come posso utilizzare sudo
in Applescript in una nuova finestra di iTerm2 e chiedere la password una sola volta?
EDIT : sembra che questo non sia correlato a Applescript ma a iterm e High Sierra. Quando apro una finestra di terminale con 2 schede, devo inserire la mia password in entrambi quando eseguo, ad esempio, sudo ls
. Dopo che entrambe le schede hanno la password sudo memorizzata nella cache, ma l'esecuzione di sudo in una scheda non fa in modo che l'altra scheda utilizzi la password sudo memorizzata nella cache.
Quindi la vera domanda è probabilmente: come faccio a ottenere iTerm2 per memorizzare nella cache la password sudo e condividerlo tra schede e finestre?