![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Есть задача зайти телнетом на девайс, отправить команду, получить ответ, разпарсить его и извлечь нужную информацию. С двумя типами свичей процес проходит без проблем. Начал делать третий и наткнулся на проблему - не проходит пароль.
код Код:
TN:=TTelnetSend.Create; TN.TargetHost:=ipswitch; TN.TargetPort:=cTelnetProtocol; TN.Timeout:=5000; TN.TermType:='dumb'; TN.Login; TN.WaitFor('UserName:'); TN.Send(SwitchLogin+CRLF); TN.WaitFor('PassWord:'); TN.Send(SwitchPassword+CRLF); TN.WaitFor(waitfor); TN.Send(Format('sh fdb port %d'+CRLF,[port])); TN.WaitFor(waitfor); TN.Send('logout'+CRLF); Memo1.Lines.Text := TN.SessionLog; TN.SessionLog Код:
**** скип **** All rights reserved.'#$A#$D'UserName:admin'#$A#$D'PassWord:**********'#$A#$D'Fail!'#$A#$D'UserName:' так оно выглядит в обычном телнет клиенте Код:
UserName:admin PassWord:******** DES-3200-18:4#sh fdb port 6 Command: show fdb port 6 судя по всему мой клиент отсылает с пассвордом два лишних символа. длина пассворда 8 символов. С другими типами девайсов код работает без проблем. Будут ли у кого соображения по теме? Спасибо |
#2
|
||||
|
||||
![]() Возможно символы переноса строки $D $A
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
![]() Проблема решена. нюансы телнета. здесь я не спец.
![]() может кому то пригодится. во первых логин и пароль надо отсылать посимвольно. для логина надо ждать ответа . ответ - отосланая буква. для пароля надо ждать ответа * плюс перед отсылкой логина надо ждать определенный набор символов, а не только то что видно визуально. расковырял wiresharkom после "UserName:" еще идет набор символов , заканчивается комбинацией FF FE 27. работающий код Код:
TN.WaitFor('UserName:'); TN.WaitFor(#255#254#39); for i:=1 to Length(SwitchLogin) do begin TN.Send(SwitchLogin[i]); TN.WaitFor(SwitchLogin[i]); end; TN.Send(CRLF); TN.WaitFor('PassWord:'); for i:=1 to Length(SwitchPassword) do begin TN.Send(SwitchPassword[i]); TN.WaitFor('*'); end; TN.Send(CRLF); TN.WaitFor(waitfor); пока это всплыло только для длинка. с другими моделями таких траблов не возникало. возможно это решается проще. если есть рецепт - буду благодарен |