Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Выполнение bat файла после ввода пароля.. (http://forum.oszone.net/showthread.php?t=234505)

vasya00 12-05-2012 14:56 1914579

Выполнение bat файла после ввода пароля..
 
Подскажите, пожалуйста, как организовать чтобы bat попросил пароль и только после правильного ввода выполнялся?
Спасибо!

ShaddyR 12-05-2012 15:52 1914611

vasya00, реализовать запрос пароля - мелочи. Сложнее сделать так, чтоб он вводился тобой, но не отображался.

vasya00 12-05-2012 16:01 1914619

ShaddyR,
Цитата:

Цитата ShaddyR
Сложнее сделать так, чтоб он вводился тобой, но не отображался. »

На самом деле, лично мне, это не принципиально..

ShaddyR 12-05-2012 16:27 1914638

Код:

@echo off
set /p promt=Требуется идентификация.^>
if not %promt%==пароль exit


Freddy1984 05-02-2016 11:45 2602755

так а вообще возможно сделать так что бы пароль не отображался при вводе? или при вводе вместо пароля были к примеру звёздочки?
и как сделать так, что бы если первый раз пароль был введён не правильно, с новой строки можно было осуществить вторую попытку ввода пароля?
никто не в курсе?

Iska 05-02-2016 11:55 2602760

Цитата:

Цитата Freddy1984
так а вообще возможно сделать так что бы пароль не отображался при вводе? »

На XP можно — посредством вызова WSH и задействования имеющейся на ней библиотеки. На новых ОС проще целиком переходить на PowerShell (там со вводом паролей проблем нет).

Цитата:

Цитата Freddy1984
если первый раз пароль был введён не правильно, с новой строки можно было осуществить вторую попытку ввода пароля? »

А потом — третью и так далее?
Код:

:Repeat
set /p promt=Требуется идентификация.^>
if not %promt%==пароль goto :Repeat


Freddy1984 05-02-2016 12:05 2602764

Цитата:

Цитата Iska
goto :Repeat »

с этим параметром дальше скрипт не отрабатывает к сожалению. есть может ещё какие соображения?? :)

вот сообщение между вводами пароля. а по поводу если не правильно ввести пароль и второй попыткой... бЯдА.. "goto :Repeat" не работает. :(
так выглядит сообщение о повторном вводе пароля:
Код:

for /f "delims=" %%A in ("Не правильный пароль, введите пароль заново") do >nul chcp 866& echo.%%A

Foreigner 05-02-2016 12:21 2602773

Freddy1984, Все это возможно, но смысла нет, так как пароль можно подсмотреть в батнике. Если уж проверять пароль, то как-нибудь иначе, например с помощью архива, у которого такой же пароль -- распаковался, значит переменная с паролем верна и ее можно подставлять туда, для чего она предназначена. А проверка в явном виде, это самообман.

Код:

:Repeat
set /p promt=Требуется идентификация.^>
if not %promt%==пароль (echo Неверный пароль & goto :Repeat)


Freddy1984 05-02-2016 12:27 2602777

Цитата:

Цитата Foreigner
пароль можно подсмотреть в батнике »

абсолютно согласен, но батник же можно зашифровать и не так всё просто окажется... так же? :)

yurfed 05-02-2016 12:28 2602778

Freddy1984, ну так введите после строки
Код:

:Repeat
к примеру "Пароль не правильный. Повторите ещё раз." или что там вам больше по вкусу.
Вывод сообщений в BAT файлах
Примерно так
Код:

:Repeat
echo off
cls
echo "Пароль не правильный. Повторите ещё раз."


Freddy1984 05-02-2016 12:32 2602783

Цитата:

Цитата Foreigner
(echo Неверный пароль & goto :Repeat) »

странно... и даже это не помогает...
вот весь код:
Код:

@echo off
chcp 1251 >nul
Echo.
Echo.
set /p promt=ВВЕДИТЕ ПАРОЛЬ:^>
if not %promt%==111 (echo Неверный пароль & goto :Repeat)
for /f "delims=" %%A in ("Неправильный пароль, введите пароль заново") do >nul chcp 866& echo.%%A
chcp 1251 >nul
set /p promt=ВВЕДИТЕ ПАРОЛЬ:^>
if not %promt%==111 exit

но если первый раз вместо 111 ввесли швабракадабру, то консольное окно просто закроется... хм.

Foreigner 05-02-2016 12:48 2602794

Freddy1984, А что должно быть в итоге?
Код:

@echo off
1>nul chcp 1251
setlocal

set "pass=fake"

:repeat
set /p pass="Введите пароль > "
if not "%pass%"=="111" (echo Неверный пароль & goto:repeat)

echo пароль %pass% Верный
1>nul chcp 866


Freddy1984 05-02-2016 12:57 2602796

Цитата:

Цитата Foreigner
А что должно быть в итоге? »

1. После правильного ввода пароля с первого раза, должна пропускаться команда ввода пароля второй раз, и продолжить выполнение скрипта с дальнейшим заданием к примеру запуска некой программы.
2. Или второе, если первый раз пароль введён не правильно, выводится сообщение о том что пароль не правильный и надо его ввести ещё раз, если пароль со второй попытки введён правильно, то идёт дальнейшее выполнение скрипта, если пароль второй раз введён не правильно, то работа скрипта прерывается, и консольное окошко закрывается.
Вот так кратенько и всё. :)

Foreigner 05-02-2016 13:01 2602799

Freddy1984, Т.е. три попытки?
Код:

@echo off
1>nul chcp 1251
setlocal

set "pass=fake"

:repeat
set /a cnt+=1
if %cnt% geq 4 exit
set /p pass="Введите пароль. Попытка %cnt% > "
if not "%pass%"=="111" (echo Неверный пароль & goto:repeat)

echo Дальнейшее выполнение


Freddy1984 05-02-2016 13:06 2602802

Foreigner Отлично! ваш код то что надо! так пойдёт...
теперь ультиматийно завершающий вопрос :)
а вместо отображения пароля при вводе что бы было пусто, либо звёздочки. так вообще возможно?? :)

Elven 05-02-2016 13:42 2602832

Назовите меня извращенцем, но я бы создал левого пользователя и запускал бы через runas. Там вам и запрос пароля, и скрытие вводимых символов, и отсутствие хранения пароля в открытом виде (ибо как не крути, но в теле батника - это в открытом виде.)

Freddy1984 05-02-2016 13:46 2602834

Цитата:

Цитата Elven
Назовите меня извращенцем »

нет, вы нормальный человек :)

Цитата:

Цитата Elven
но в теле батника - это в открытом виде »

а если зашифровать, то получается в закрытом? :)


Время: 01:56.

Время: 01:56.
© OSzone.net 2001-