Python3终端环境下如何使用telnet进行网络连接

看一些关于爬虫的资料上说 telnet 是 PYTHON 自带的,且默认端口是 6023。我在 PYTHTON3 的终端模式下输入命令:telnet localhost 6023,结果报错如下,请问是怎么回事呢?谢谢!

无法将“ telnet ”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后重试。
所在位置 行:1 字符: 7
+ telnet <<<< localhost 6023
+ CategoryInfo : ObjectNotFound: (telnet:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Python3终端环境下如何使用telnet进行网络连接


18 回复

不知道从哪里开始吐槽。。。


在Python3中,你可以用内置的telnetlib模块来建立Telnet连接。下面是一个完整的示例代码,演示如何连接到服务器、发送命令并读取响应:

import telnetlib
import getpass

# 服务器地址和端口
HOST = "example.com"
PORT = 23  # Telnet默认端口

# 创建Telnet对象并连接
try:
    tn = telnetlib.Telnet(HOST, PORT, timeout=10)
    print(f"已连接到 {HOST}:{PORT}")
    
    # 如果需要登录,先读取登录提示
    tn.read_until(b"login: ", timeout=5)
    tn.write(b"username\n")  # 发送用户名
    
    tn.read_until(b"Password: ", timeout=5)
    tn.write(b"password\n")  # 发送密码
    
    # 等待登录完成
    tn.read_until(b"$ ", timeout=5)  # 等待命令提示符
    
    # 发送命令
    tn.write(b"ls -la\n")
    
    # 读取命令输出
    output = tn.read_until(b"$ ", timeout=5)
    print("命令输出:")
    print(output.decode('utf-8'))
    
    # 关闭连接
    tn.write(b"exit\n")
    tn.close()
    
except ConnectionRefusedError:
    print("连接被拒绝,请检查服务器地址和端口")
except TimeoutError:
    print("连接超时")
except Exception as e:
    print(f"连接错误: {e}")

如果你需要更安全的交互,可以用getpass模块隐藏密码输入:

import telnetlib
import getpass

HOST = input("输入服务器地址: ")
username = input("用户名: ")
password = getpass.getpass("密码: ")

tn = telnetlib.Telnet(HOST)
tn.read_until(b"login: ")
tn.write(username.encode('ascii') + b"\n")
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")

# ... 后续操作

注意几个关键点:

  1. read_until()会一直读取直到遇到指定字符串
  2. 所有发送的数据都需要是字节类型(用b"".encode()
  3. 超时参数可以防止程序无限期等待
  4. 记得最后要关闭连接

如果只是简单测试连接,可以更简洁:

import telnetlib

with telnetlib.Telnet("example.com", 23, timeout=5) as tn:
    tn.interact()  # 进入交互模式,可以手动输入命令

telnetlib就行。

还请不吝赐教啊!我知道 TELNET 是系统自带的服务,但是我不知道为何这条命令无法执行?

windows 功能里面启用 telnet 客户端
这跟 python3 一点关系都没有…

直接在 windows 命令行用

telnet 操作系统自带的命令,而且已经严重过时了,最好别用。

telnet 服务已经启动了,发现 23 端口可以连,但是 PYTHON 的默认端口 6023 却连不上

之所以用 TELNET 是因为在学 SCRAPY 的时候,发现有些测试内存使用情况的操作是在 TELNET 下执行的

连不上说明没启动

telnet 服务默认关闭,需要到程序与功能里打开

不知道从哪里开始吐槽。。。

你 理解有偏差了啦。scray 提供了一个 telnet 服务,默认开在 6023 端口。

你需要的是,运行操作系统提供的 telnet 程序,连接到运行了 scray 程序的机器上的 6023 端口。

不知道从哪里开始吐槽 +1

我是不是走错片场了

需要客户端的话可以在命令行里试试 python -m telnetlib [host [port]]

我用 23 端口时,会出现 login 提示符让输入用户,这说明服务是启动的吧,大家就从我没有启动 6023 端口开始吐槽吧,请问如何启动这个端口呢?

端口打开了并监听着才能连接,你用命令查看下 scrapy 脚本运行前后系统打开的端口

你还是先写个 tcp 服务端和客户端交互的代码吧

回到顶部