Назад | Перейти на главную страницу

Можно ли создать сценарий для telnet-клиента Windows?

Можно ли использовать клиент Windows Telnet для выполнения ряда команд в сценарии?

Если нет, то есть ли альтернативы?

Да. Проверить это нить.

Много лет назад я написал COM-сервер, позволяющий мне использовать telnet из VBScript. Если вам нужна копия (включая исходный код), я буду рад выложить ее где-нибудь в Интернете. Использую для удаленной перезагрузки роутеров.

Чтобы дать вам некоторое представление о том, что он делает, вот пример сценария (без проверки ошибок)

const SVR = "www.microsoft.com"
dim telnet, s, i

set telnet = CreateObject("Rhs.Telnet")
telnet.Startup()

telnet.Connect SVR, 80
telnet.Writeline "GET / HTTP/1.0"
telnet.Writeline "Host: www.microsoft.com"
telnet.Writeline "User-Agent: RhsTelnet"
telnet.Writeline "Accept: */*"
telnet.Writeline ""

do while telnet.Readline(s, 1000)
  wscript.echo s
loop

telnet.Disconnect()
telnet.Cleanup()

JR

Ссылка на COM-сервер: привет Лахлан попробуй http://www.ratsauce.co.uk/RouterCheck.zip

Это COM-сервер и скрипт для перезагрузки роутера Draytek. Сценарий RouterCheck.wsf проверяет, может ли он пропинговать пару тестовых хостов, поэтому вы, вероятно, захотите проигнорировать большую часть кода. Просто используйте функцию RebootRouter и игнорируйте все остальное. Это конец моей линии ADSL, поэтому загрузка может быть немного медленной.

Если кому-то нужен исходный код (Visual C ++ 5.0 с ATL), я могу разместить его на SourceForge.

Вы можете установить Perl и использовать Net :: Telnet, который позволяет отправлять и интерпретировать полученные данные.

ActivePerl, вероятно, самый быстрый способ начать работу с этим:

http://www.activestate.com/activeperl/

И Net :: Telnet задокументирован здесь:

http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm

Дальнейшие вопросы о том, как писать код с использованием Net :: Telnet, вероятно, относятся к StackOverflow. Вы также можете посмотреть на www.perlmonks.org примеры и советы.

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

Plink Howto Исполняемый файл Plink

Если вы не против коммерческого решения, есть бизнес-клиент telnet под названием TeSSH, который имеет богатый язык сценариев и может запускаться из командной строки. Он поддерживает написание сценариев на vbs, perl и lua. Это довольно недорого - 34,95 доллара. Вы также можете посетить Форумы поддержки TeSSH.

Я создал этот пакетный скрипт на основе предыдущий ответ:

@ECHO OFF
SET ME=from@example.com
SET TO=to@example.com
SET TF=%TEMP%\%~n0.vbs
(
 ECHO Set sh = WScript.CreateObject^("WScript.Shell"^)
 ECHO sh.SendKeys "HELO %COMPUTERNAME%~"
 ECHO sh.SendKeys "MAIL FROM: %ME%~"
 ECHO sh.SendKeys "RCPT TO: %TO%~"
 ECHO sh.SendKeys "DATA~"
 ECHO sh.SendKeys "From: %ME%~"
 ECHO sh.SendKeys "To: %TO%~"
 ECHO sh.SendKeys "Subject: Example subject...~"
 ECHO sh.SendKeys "~"
 ECHO sh.SendKeys "Contents...~"
 ECHO sh.SendKeys ".~"
 ECHO sh.SendKeys "QUIT~"
 ECHO WScript.Sleep 1000
 ECHO sh.SendKeys "~"
) > "%TF%"
START "" TELNET.EXE SMTPSERVER 25
CSCRIPT //NoLogo "%TF%"
DEL "%TF%"