Em vez de escrever seu próprio comando password-getting, você pode pedir ao sudo
para executar um já existente, como x11-ssh-askpass
, que no meu sistema Fedora está em um pacote com o mesmo nome. Você diria
SUDO_ASKPASS=/usr/libexec/openssh/x11-ssh-askpass sudo -A somecommand
e irá aparecer uma gui para você digitar uma senha.
Como alternativa, você pode ser menos seguro e permitir que sudo
execute um comando quando não houver tty editando o arquivo sudoers com sudo visudo /etc/sudoers
(cuidado: mantenha um login raiz em algum lugar para salvá-lo, se necessário) e adicionando uma linha:
Defaults:myname !requiretty
para seu nome de usuário myname .
Se você precisa de um tty você pode usar um programa como script
para fornecer um durante a execução do comando, por exemplo:
script <<<'SUDO_ASKPASS=/... sudo -A mycommand'
Você provavelmente precisaria cercar todo o seu script com script
, ou receberia um novo tty a cada vez, e sudo
pediria uma senha toda vez.