Запись клиента telnet

Привет,

У меня есть устройство, которое выставляет интерфейс telnet, который можно войти в использование имени пользователя и пароля и затем управлять работой устройства.

Я должен записать программу C, которая скрывает аспект telnet от клиента и вместо этого предоставляет интерфейс пользователю для управления устройством.

Каков был бы хороший способ продолжиться. Я пытался писать простую программу сокета, но она останавливается при приглашении ко входу в систему. Мое предположение - то, что я не следую протоколу TCP.

Кто-либо делал попытку этого, есть ли библиотека с открытым исходным кодом там, чтобы сделать это?

Спасибо

Дополнение: В конечном счете я хочу выставить его через веб-API/веб-сервис. Платформой является Linux.

9
задан Dave Jarvis 26 March 2010 в 00:10
поделиться

8 ответов

Если Python является вариантом, вы можете использовать telnetlib .

Пример кода :

#!/usr/bin/env python
import getpass
import sys
import telnetlib

HOST = "localhost"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

tn.read_until("login: ")
tn.write(user + "\n")
if password:
    tn.read_until("Password: ")
    tn.write(password + "\n")

tn.write("ls\n")
tn.write("exit\n")

print tn.read_all()
10
ответ дан 4 December 2019 в 08:51
поделиться

Это может быть для вас полезным чтением.

2
ответ дан 4 December 2019 в 08:51
поделиться

Если приложение не является тривиальным, лучшей отправной точкой было бы выяснить, как вы собираетесь создать графический интерфейс. Это более серьезный вопрос, и он будет иметь большее влияние на ваш проект, чем то, как именно вы подключитесь к устройству через telnet. Вы сначала упоминаете C, но затем начинаете говорить о Python, что заставляет меня думать, что вы относительно гибки в этом вопросе.

После того, как вы выбрали язык / платформу, поищите библиотеку telnet - вы должны найти что-то разумное, уже реализованное.

1
ответ дан 4 December 2019 в 08:51
поделиться

Я действительно считаю Руководство Биджа по сетевому программированию хорошим введением в сетевое программирование на C.

2
ответ дан 4 December 2019 в 08:51
поделиться

Скачайте Putty исходный код. Изучите TELNET.C, бэкэнд Telnet для Putty.

2
ответ дан 4 December 2019 в 08:51
поделиться

Протокол telnet довольно прост ... вы просто создаете TCP-соединение и отправляете и получаете данные ASCII. Это почти все.

Все, что вам действительно нужно сделать, это создать программу, которая подключается через TCP, затем считывает символы из TCP-сокета и анализирует их для обновления графического интерфейса пользователя и / или записывает символы в сокет в ответ на действия пользователя, управляющие элементами управления в графический интерфейс.

Как вы это реализуете, во многом зависит от того, какое программное обеспечение вы используете для создания своего интерфейса. На стороне TCP достаточно простого цикла событий вокруг select ().

4
ответ дан 4 December 2019 в 08:51
поделиться

Хотя telnet - это почти просто сокет, привязанный к терминалу, это не совсем так. Я полагаю, что могут быть некоторые управляющие символы, которые передаются вскоре после установления соединения. Если ваше устройство посылает неожиданные управляющие данные, то это может сбить с толку вашу программу. Если вы еще этого не сделали, скачайте программу wireshark (или tshark, или tcpdump) и понаблюдайте за своим соединением. Wireshark (ранее ethereal) является кроссплатформенной программой и довольно проста в использовании для простых вещей. Фильтр с tcp.port == 23

3
ответ дан 4 December 2019 в 08:51
поделиться

Ознакомьтесь с исходным кодом здесь . Это очень помогло мне в понимании протокола Telnet.

0
ответ дан 4 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: