J'ai un script pour automatiser le démarrage de quelques serveurs sur le terminal. Il s'agit de processus serveur du logiciel que je suis en train de développer. Ils peuvent être recompilés et modifiés plusieurs fois par jour. Les binaires peuvent se trouver à différents endroits (copies de travail).
Mon script utilise
set sudo to do shell script "sudo -v "
demande une fois le mot de passe Root, puis crée une nouvelle fenêtre de terminal iterm2 (et quelques onglets) et tente de démarrer les serveurs avec 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
Tout fonctionnait bien sur El Capitan, mais pas sur High Sierra.
Si le sudo
n'est pas mis en cache, le mot de passe sudo -v
me demande mon mot de passe et procède ensuite --- comme prévu. Si je lance sudo
avant et que le mot de passe est mis en cache, le sudo -v
ne demande pas de mot de passe, comme prévu. Mais dans les deux cas, chaque sudo
dans la nouvelle fenêtre me demande mon mot de passe, ce qui rend l'ensemble peu pratique.
Lorsque j'ajoute with administrator privileges
à la valeur initiale de la sudo
il me demande mon mot de passe dans une fenêtre de dialogue, mais le message suivant s'affiche sudo
appelle avec write text
demande toujours le mot de passe sur le shell. (J'utilise write text
et le terminal pour surveiller les sorties de ces serveurs).
Je peux exécuter des commandes sudo normales sans problème et le mot de passe est mis en cache.
Comment puis-je utiliser sudo
en Applescript dans une nouvelle fenêtre iTerm2 et qu'il ne demande le mot de passe qu'une seule fois ?
EDITAR : Il semble que ce ne soit pas lié à Applescript mais à iterm et à High Sierra. Lorsque j'ouvre une fenêtre de terminal avec 2 onglets, je dois entrer mon mot de passe dans les deux lorsque j'exécute par exemple, sudo ls
. Après cela, les deux onglets ont le mot de passe sudo en cache, mais l'exécution de sudo dans un onglet ne fait pas en sorte que l'autre onglet utilise le mot de passe sudo en cache.
La vraie question est donc probablement : comment faire pour qu'iTerm2 mette en cache le mot de passe sudo et le partage entre tabs et Windows ?