LINUX.ORG.RU

помогите с dialog


0

0

Как в --passwordbox указать чтобы вводимый пароль выдавлся какому то процессу его запрашивающему. Например sudo something

anonymous

1. получить пассворд:
password=`dialog --stdout --passwordbox 'Type the password:' 0 0`

2. передать его sudo:
echo "$password" | sudo -S ...
man sudo
-S The -S (stdin) option causes sudo to read the password from the
standard input instead of the terminal device.

sdio ★★★★★
()
Ответ на: комментарий от sdio

Небольшая затыка случилась. А можно ли для dialoga параметры в другой исп-й файл писать (чтобы параметры обработки иного описать,т.е esc ,введение неверного пороля, отказ),а потом его передавать для:

password=`some_another_file`

а то sudo почему-то внутри одной сесси на второй раз срабатывает автоматом ,вне зависимости от действия))

anonymous
()
Ответ на: комментарий от anonymous

Я не очень хорошо понял о чем речь, но dialog возвращает код
завершения процесса ($? в bash), который для OK = 0, для CANCEL = 1, для ESC = 255

После запуска dialog проверить код и запустить sudo только
если он равен 0.
sudo второй раз не спросит пароль, так как некоторое 
время 5-15минут (зависит от сборки) "помнит предыдушую сессию"

При не правильном пароле sudo возвращает 1 как код завершения.

echo "$password"|sudo -S ls /root
if [ $? == 1 ]; then
   echo 'Invalid password'
fi

sdio ★★★★★
()
Ответ на: комментарий от sdio

т.е. ему не надо явно указывать
case
0)
blah-blah
1)
...
255)

это выполняется по-умолчанию? почему-то уходит на выполнение при cansel.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.