Telnet 精简介绍

Telnet 精简介绍

基本概念

Telnet是一个网络协议和命令行工具,主要用于:

  • 端口连通性测试 (最常用)
  • 远程登录 (已不推荐,不安全)
  • 网络协议调试

基本语法

bash 复制代码
telnet [主机] [端口]

常用测试场景

1. 端口连通性测试

bash 复制代码
# 测试Web服务
telnet google.com 80
telnet google.com 443

# 测试SSH
telnet github.com 22

# 测试数据库
telnet localhost 3306    # MySQL
telnet localhost 5432    # PostgreSQL
telnet localhost 6379    # Redis

2. HTTP协议测试

bash 复制代码
telnet google.com 80
# 连接后输入:
GET / HTTP/1.1
Host: google.com
# 按两次回车

3. 邮件服务测试

bash 复制代码
# SMTP测试
telnet smtp.gmail.com 587
# 输入: EHLO test.com

# POP3测试  
telnet pop.gmail.com 110

退出方式

bash 复制代码
# 方法1: 在连接状态下
Ctrl + ]          # 进入telnet命令模式
quit              # 退出

# 方法2: 强制退出
Ctrl + C          # 直接断开

结果判断

  • 连接成功: 显示 "Connected to..."
  • 连接失败: 显示 "Connection refused" 或超时

在你的CLI工具中集成

python 复制代码
# 在现有代码最后添加

import subprocess
import socket
import time

class TelnetTester:
    """简单的Telnet测试器"""
    
    def test_port(self, host, port, timeout=5):
        """测试端口连通性"""
        try:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.settimeout(timeout)
            result = sock.connect_ex((host, port))
            sock.close()
            
            if result == 0:
                print(f"✅ {host}:{port} 连通")
                return True
            else:
                print(f"❌ {host}:{port} 不通")
                return False
        except Exception as e:
            print(f"❌ {host}:{port} 错误: {e}")
            return False

# 在main()函数中添加telnet命令支持
def enhanced_main():
    """增强版主函数,支持telnet测试"""
    parser = create_parser()
    
    # 添加telnet子命令
    subparsers = parser._subparsers._group_actions[0]
    telnet_parser = subparsers.add_parser("telnet", help="端口连通性测试")
    telnet_parser.add_argument("host", help="目标主机")
    telnet_parser.add_argument("port", type=int, help="目标端口")
    
    args = parser.parse_args()
    
    if not args.command:
        parser.print_help()
        sys.exit(1)
    
    if args.command == "telnet":
        tester = TelnetTester()
        tester.test_port(args.host, args.port)
        return
    
    # 原有的任务管理逻辑
    task_manager = TaskManager(args.data_file)
    
    try:
        if args.command == "add":
            task_manager.add_task(args.title, args.description, args.priority)
        elif args.command == "list":
            task_manager.list_tasks(show_completed=args.all)
        elif args.command == "complete":
            task_manager.complete_task(args.task_id)
        elif args.command == "delete":
            task_manager.delete_task(args.task_id)
        elif args.command == "search":
            task_manager.search_tasks(args.keyword)
        elif args.command == "stats":
            task_manager.stats()
        else:
            print(f"❌ 未知命令: {args.command}")
            parser.print_help()
            sys.exit(1)
            
    except KeyboardInterrupt:
        print("\n\n👋 再见!")
        sys.exit(0)
    except Exception as e:
        print(f"❌ 发生错误: {e}")
        sys.exit(1)

# 修改最后的执行部分
if __name__ == "__main__":
    # 检查是否启用telnet功能
    if "--with-telnet" in sys.argv:
        sys.argv.remove("--with-telnet")
        enhanced_main()
    else:
        main()

使用示例

bash 复制代码
# 基本telnet测试
telnet google.com 80
telnet github.com 22

# 使用你的CLI工具
python demo.py --with-telnet telnet google.com 80
python demo.py --with-telnet telnet localhost 3306

# 批量测试脚本
for port in 22 80 443; do
    timeout 3 telnet google.com $port </dev/null >/dev/null 2>&1 && echo "Port $port: 开放" || echo "Port $port: 关闭"
done

注意事项

  • ⚠️ 明文传输: 不要用于传输敏感信息
  • 🔒 推荐SSH: 远程登录使用SSH代替telnet
  • 🕐 设置超时: 避免长时间等待
  • 📝 记录日志: 连接尝试会被目标服务器记录

Telnet虽然简单,但在网络测试和故障排查中非常有用!🔍

相关推荐
gadiaola1 小时前
【计算机网络面试篇】HTTP
java·后端·网络协议·计算机网络·http·面试
罗汉松(山水白河)1 小时前
关于串口与UDP通讯的实验
单片机·嵌入式硬件·网络协议·udp·tcp·串口、
fei_sun3 小时前
【复习】计网每日一题1124---UDP首部检验和计算、检验和特殊含义
网络·网络协议·udp
2***57423 小时前
前端WebSocket案例
网络·websocket·网络协议
木易 士心4 小时前
WebSocket 与 MQTT 在即时通讯中的深度对比与架构选型指南
websocket·网络协议·架构
s090713620 小时前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp
hazy1k1 天前
ESP32基础-Socket通信 (TCP/UDP)
c语言·单片机·嵌入式硬件·网络协议·tcp/ip·udp·esp32
xinxinhenmeihao1 天前
爬虫为什么要用动态ip?动态IP在爬虫中起到哪些作用?
爬虫·网络协议·tcp/ip
特种加菲猫1 天前
用户数据报协议(UDP)详解
网络·网络协议·udp
cccyi71 天前
HTTP 协议详解:从基础到核心特性
网络协议·http·应用层