Как я могу открыть окно cmd и передать жестко закодированные значения, используя командный файл? - PullRequest
1 голос
/ 14 июня 2011

Я нашел много решений, которые близки к тому, что я хочу, но не совсем так, и мне не повезло.

Я пытаюсь создать сценарий, который можно использовать для автоматизации аутентификации брандмауэра.Я делаю это вручную в минуту, открывая окно cmd и пытаясь подключиться к устройству / компьютеру за брандмауэром.После короткой паузы мне предлагается ввести имя пользователя и пароль.

Есть ли способ написать командный файл, который откроет окно cmd и предоставит эти два значения?

В настоящее время это выглядит так:

C:> telnet device (I type this in to prompt authentication)
(short pause)
-- Firewall Authentication --
Username: (asks for input which I provide then press enter)
Password: (same as username)
-- Authentication Successful --

Спасибо за любую помощь в этом.Если вам нужно больше подробностей, пожалуйста, прокомментируйте:)

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Вы можете сделать небольшой VBScript для его sendkeys. Допустим, если появляется запрос, и он сначала фокусируется на имени пользователя, а затем, если вы можете сделать одну вкладку и ее пароль, и вам разрешено использовать клавишу RETURN для отправки учетных данных, вы можете добавить это в пакетный скрипт. :

CSCRIPT //NoLogo //B "C:\Folder\sendkeys.vbs"
PING 1.1.1.1 -n 1 -w 11000 >NUL

Затем создайте файл (в этом примере) с именем sendkeys.vbs, скажем, с помощью Блокнота и добавьте следующие строки кода:

set wshShell = WScript.CreateObject("WSCript.shell")

wscript.sleep 5000
wshShell.sendkeys "type username here"
wscript.sleep 1000
wshShell.sendkeys "{ENTER}"
wscript.sleep 3000 
wshShell.sendkeys "type password here"
wscript.sleep 1000
wshShell.sendkeys "{ENTER}"
WScript.Quit

Я делаю это для автоматической отправки писем в Thunderbird через командную строку.

0 голосов
/ 14 июня 2011

Боюсь, вы не можете этого сделать, потому что telnet - это исполняемый файл, поэтому обработка ввода (имя пользователя и пароль) является лишь внутренней логикой этой программы.

Это было бы возможно, только если telnet поддерживает имя пользователя и пароль в качестве аргументов командной строки.


Но существует какой-то хитрый обходной путь. Попросите вашего друга, программиста, написать простую программу, которая

  1. Принимает имя пользователя и пароль в качестве аргументов командной строки
  2. Запускает telnet.exe с перенаправленным консольным вводом / выводом
  3. Отслеживает изменения в выводе консоли (ожидает ввода пользователя)
  4. Имитирует ввод имени пользователя и пароля
  5. Возвращает тот же код ошибки, который делает telnet
...