Зря пугали не юзать Qt и С++ и Telnet.
Все достаточно просто и куча готового кода существует. И подключать сторонние либы - никто не мешает.
Удалось разобраться с готовым классом и примером телнет клиента.
http://code.google.com/p/qtelnetperso/source/browse/trunk/v2/libs/solutions/qttelnet-2.1-opensource/Удалось обойтись без костылей типа
GUI-фронтэнд, устанавливаемый на win-клиентах может через сокеты (через самописный протокол) посылать команды Console-фронтэнду, устанавливаемому на сервере.
И не нужен сервер для бэкенда.
Все в рамках одной программы, которую можно скомпилить на разные целевые платформы.
Удалось "локализовать" вышеуказаный пример - для своих нужд, вырезать лишнее, и заставить компилироваться и работать.
("из коробки" - сразу не компилился - нюансы с анахронизмами : )
Неделю потратил уже на простые вещи.
Уже привык к Qt Creator.
Потиху привыкаю к синтаксису С++, к особенностям ООП,
параметрам в .pro фале и прочим хитростям и тонкостям.
Читаю книжки...: )
Долго не получалось скомпилить пример.
Потом удалось скомпилить. Но долго не получалось авторизоваться на "телнет-сервере" - начал изучать дамп трафика - очень помогло.
На данный момент в интерактивном режиме работает простейший телнет клиент.
Теперь буду распаралеливать и автоматизировать без интерактива - выполнять шаблоны команд на N свичах (по списку из файла (позже из БД брать).
Короче - постепенно вникаю в тему )
Пока что от ООП и C++ немного едет башня - все-таки сломали мне мозг паскалем и процедурным программированием )))
P.S. На данный момент есть нюансы некритичные
- при компиляции (возникает 2 Warning). (При этом все работает, но раздражает)
Makefile.Debug:105: предупреждение: overriding commands for target `debug/moc_qttelnet.cpp'
Makefile.Debug:102: предупреждение: ignoring old commands for target `debug/moc_qttelnet.cpp'
При этом в книжке прочитал, что теперь не нужно в конце файла инклюдить moc файл. Но без инклюда совсем не компилиться...
так что оставил #include "main.moc"
и #include "qttelnet.moc" в соответстующих файлах.
Вот на базе чего я все делаю:
http://code.google.com/p/qtelnetperso/source/browse/trunk/v2/libs/solutions/qttelnet-2.1-opensource/Если кому не лень поковырять - посмотрите...
- еще валит "мусор" (спец. символы) от телнет-сервера. Это никак не мешает, и даже реализована функция stripCR - которая с помощью RegExp типа должна резать (.remove) этот мусор, но похоже не режет...
private:
QString stripCR(const QString &msg)
{
QString nmsg(msg);
nmsg.remove('\r');
nmsg.remove(QRegExp("\033\\[[0-9;]*[A-Za-z]")); // Also remove terminal control codes
return nmsg;
}
и используется в слоте (который активируется от сигнала получения данных с серва - добавлется строка в элемент textEdit)
private slots:
void telnetMessage(const QString &msg)
{
textEdit->append(stripCR(msg));
//textEdit->append(msg); без stripCR работает так же как и со stripCR - не режет символ \033 (<- backspace ?) который очень часто "вылазит"
}