Вместо того, чтобы писать свою собственную команду получения пароля -, вы можете попросить sudo
запустить существующую, например x11-ssh-askpass
, которая в моей системе Fedora находится в одноименном пакете. Вы бы сказали
SUDO_ASKPASS=/usr/libexec/openssh/x11-ssh-askpass sudo -A somecommand
и появится всплывающее окно для ввода пароля.
Кроме того, вы можете быть менее безопасным и позволить sudo
запускать команду, когда нет tty, отредактировав файл sudoers с помощьюsudo visudo /etc/sudoers
(будьте осторожны :сохраните где-нибудь имя пользователя root, чтобы спасти вас в случае необходимости )и добавив строку:
Defaults:myname !requiretty
для вашего имени пользователя мое имя .
Если вам нужен tty, вы можете использовать программу типа script
, чтобы предоставить его во время выполнения команды, например:
script <<<'SUDO_ASKPASS=/... sudo -A mycommand'
Вам, вероятно, потребуется окружить весь скрипт script
, иначе вы будете каждый раз получать новый tty, а sudo
каждый раз будет запрашивать у вас пароль.