Bat/Cmd интерфейс ввода пароля для пользователя
Для командной строки есть проблема - невозможно безопасно запросить данные у клиента для работы скрипта, например чтобы пользователь ввел пароль а мы скриптом его проверили бы. Нашлась программа под названием The Wizard's Apprentice, или WizApp. Подробности тут. Она и позволяет делать то, что нам надо.
Запускать файл test.cmd
echo off
set watitle=Login windows.
set watext=Please enter the password:
set wasig=(c) Raymond
set waico=buddy.ico
set wabmp=logo.bmp
set walabels=;Go!;Go!;%date%
set wabat=c:\11\wizap\test2.cmd
start /w c:\11\wizap\wizapp.exe NOCANCEL NOBACK EB PLAIN
<nul set /p strTemp=call passcheck.cmd >test3.cmd
tr -cd 0-9 <test2.cmd >>test3.cmd
call test3.cmd
pause
При запуске выдается такое окошко:
Где:
watitle - Заголовок окна
watext - Текст окна
wasig - Текст слева снизу
aico - Иконка окна (в моем случае мишка)
wabmp - Картинка часов
walabels - Надписи кнопок внизу окна (назад/вперед/финиш/отмена)
wabat - Файл, в котором программа выведет то, что набрал пользователь.
start /w c:\11\wizap\wizapp.exe NOCANCEL NOBACK EB PLAIN - Запуск самой программы с ключами
К сожалению особенности командной строки не позволяют программе добавить или изменить константу в процессе работы, поэтому она вынуждена создавать новый файл с введенными данными пользователя. В данном случае это будет файл c:\11\wizap\test2.cmd. Примерный вывод такого файла:
set waoutput=123123
set waoutnum=
Соответственно чтобы использовать эти данные, я делаю так. Создаю новый файл test3.cmd с командой call passcheck.cmd
<nul set /p strTemp=call passcheck.cmd >test3.cmd
Выдираю значение пароля и добавляю его в файл text3.cmd
tr -cd 0-9 <test2.cmd >>test3.cmd
В итоге в этом файле появляется команда вызова скрипта проверки пароля:
call passcheck.cmd 111222333
И в конце скрипта собственно делаю его вызов:
call test3.cmd
В самом файле passcheck.cmd происходит только показ пароля:
echo %1
На этом пока все. Возможно в будущем доработаю скрипт генерации и проверки временных паролей.