Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.08.2012, 12:47
mkoretskiy mkoretskiy вне форума
Прохожий
 
Регистрация: 03.08.2012
Сообщения: 4
Репутация: 10
По умолчанию Synapse telnet client

Есть задача зайти телнетом на девайс, отправить команду, получить ответ, разпарсить его и извлечь нужную информацию. С двумя типами свичей процес проходит без проблем. Начал делать третий и наткнулся на проблему - не проходит пароль.

код

Код:
    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  
Старый 03.08.2012, 13:14
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Возможно символы переноса строки $D $A
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 03.08.2012, 16:09
mkoretskiy mkoretskiy вне форума
Прохожий
 
Регистрация: 03.08.2012
Сообщения: 4
Репутация: 10
По умолчанию

Проблема решена. нюансы телнета. здесь я не спец.

может кому то пригодится.
во первых логин и пароль надо отсылать посимвольно.
для логина надо ждать ответа . ответ - отосланая буква.
для пароля надо ждать ответа *
плюс перед отсылкой логина надо ждать определенный набор символов, а не только то что видно визуально. расковырял 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); 

пока это всплыло только для длинка. с другими моделями таких траблов не возникало.

возможно это решается проще. если есть рецепт - буду благодарен
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:20.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025