Можно ли использовать клиент 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.
Если вы не против коммерческого решения, есть бизнес-клиент 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%"