编写telnet客户端

时间:2010-03-25 21:37:48

标签: python c telnet

HI,

我有一个暴露telnet接口的设备,您可以使用用户名和密码登录,然后操纵设备的工作。

我必须编写一个C程序,它隐藏了客户端的telnet方面,而是为用户提供了一个控制设备的接口。

进行什么是好方法。我尝试编写一个简单的套接字程序,但它在登录提示符处停止。我的猜测是我没有遵循TCP协议。

有没有人尝试过这个,是否有一个开源库可以做到这一点?

由于

增加: 最终我希望通过web api / webservice公开它。该平台是linux。

9 个答案:

答案 0 :(得分:10)

如果Python是一个选项,您可以使用telnetlib

Code example

#!/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()

答案 1 :(得分:4)

telnet的协议非常简单......你只需创建一个TCP连接,然后发送和接收ASCII数据。这就是它。

所以你真正需要做的就是创建一个通过TCP连接的程序,然后从TCP套接字读取字符并解析它以更新GUI,和/或将字符写入套接字以响应用户操作控件GUI。

如何实现这取决于您用于构建界面的软件。在TCP方面,select()周围的简单事件循环就足够了。

答案 2 :(得分:3)

虽然telnet几乎只是一个连接到终端的套接字,但它并不完全。我相信在建立连接后很快就会有一些控制字符通过。如果您的设备发送了一些意外的控制数据,那么可能会使您的程序混乱。 如果您还没有,请下载wireshark(或tshark或tcpdump)并监控您的连接。 Wireshark(以前称为ethereal)是跨平台的,非常容易用于简单的东西。使用tcp.port == 23过滤

答案 3 :(得分:2)

This可能对您有用。

答案 4 :(得分:2)

下载Putty源代码。检查TELNET.C,Putty的Telnet后端。

答案 5 :(得分:2)

答案 6 :(得分:1)

除非应用程序是微不足道的,否则更好的出发点是弄清楚如何创建GUI。这是一个更大的问题,对您的项目产生的影响要大于您远程访问设备的方式。你首先提到C,但后来开始谈论Python,这让我相信你在这个问题上相对灵活。

一旦你在语言/平台上设置,然后寻找一个telnet库 - 你应该找到已经实现的合理的东西。

答案 7 :(得分:0)

查看源代码here。在理解Telnet协议时,它帮助我解决了许多。

答案 8 :(得分:0)

查看telnet客户端中的选项:在任意侦听套接字上,点击escape]进入客户端。

telnet> help
telnet> set ?
相关问题