Как я могу использовать клиент Telnet командной строки для открытия необработанного соединения - например, PuTTY?

8

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

Это доступно как «сырой режим» в PuTTy, и мне нужна та же функциональность в Linux.

Эдем
источник
Я добавил, что мне нужен клиент командной строки telnet (поэтому Putty в Linux у меня не работает).
Eden
Я подключаюсь к продукту MOXA, который является TCP-сервером для удаленного подключения к последовательному порту (унаследованного продукта). Он должен быть необработанным, чтобы все нажатия клавиш отправлялись как есть.
Eden
В основном мне нужна функциональность, похожая на telnet, но без протокола. Я также попробовал netcat (предложенный выше), но это не сработало - он находится в режиме редактирования строки и нажатия клавиш, такие как ^ C, не передаются.
Eden
Как еще один указатель, посмотрите socat, он гораздо более функциональный, чем netcat; Может быть, вы можете использовать это.
Sr -

Ответы:

11

Используйте netcat, он предоставляет необработанные сокеты командной строки, очень удобную утилиту, я часто использую ее для перемещения данных между серверами, когда шифрование не требуется, например:

Сервер1

# nc -l -p 1234 | zcat | mysql -u root databaseName

Сервер2

# mysqldump -u root databaseName | gzip | nc Server1 1234
Джеффри
источник
Это потрясающий совет! Однако, когда я попробовал это между двумя терминальными окнами на MacOS, первая строка ошибалась. Моя справочная страница по nc говорит, что использование -p с -l является ошибкой. Это работало как чемпион, когда я пропустил -p
RufusVS
5

С риском звучания глупости, почему бы просто не использовать PuTTY? Если вам уже нравится эта функциональность, просто запустите ее. PuTTY доступен для Linux или Windows

Как уже указывалось в комментариях, telnet не является необработанным - он ожидает соблюдения определенных протоколов.

Рори Олсоп
источник
1
+1 Рори. Телнет не сырой. Используйте «set options» в telnet> приглашении, и вы увидите протоколы в действии.
Стивен Куан
Режим шпатлевки "RAW" на самом деле не является RAW. Когда вы нажимаете Enter, он отправляет CR / LF.
Eddyq
2

Вы можете использовать telnet для подключения к любому порту при условии, что что-то прослушивает этот порт и не блокируется брандмауэром.

telnet alt1.aspmx.l.google.com 25
telnet google.com 80

Все будет работать нормально. Однако вы должны знать, какой протокол используется другим концом соединения, иначе это бессмысленно.

Обратите внимание, что telnet отправляет пакеты в незашифрованном виде.

Сардатрион - против злоупотребления SE
источник
5
Осторожно: телнет кажется «сырым», но это не так. Уже есть некоторый уровень протокола, даже если он ограничен. Чего ты здесь пытаешься достичь?
Ouki
@ Ouki, протокол TELNET довольно сложный, конечно. Программа telnet ' обычно возвращается в необработанный режим работы, если не подключается к серверу TELNET.
vonbrand
0

Очень старый, но я обнаружил, что это работает для устройства MOXA:

stty raw && nc <ip> 23 && stty sane
SMP
источник
0

Все еще актуален после всех этих лет.

Это прекрасно работает ~/.bash_aliases, открывая moxaоболочку на вкладке без локального эха: (параметр - номер порта moxa)

function moxat(){
  mate-terminal --tab --title="moxa1 $1" -e "bash -c 'stty raw -echo && \ 
  nc <ip> $1 && stty sane'" 
}
OMR
источник
-1

Используйте эту точную строку:

sudo socat tcp-l:2023,reuseaddr,fork exec:/bin/login,pty,setsid,setpgid,stderr,ctty

Это позволит вам соединиться с необработанным сокетом от Moxa и получить приглашение командной строки на хост-компьютере. Оттуда вы можете по желанию Telnet или SSH к любой системе.

Pyrofer
источник