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.