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虽然简单,但在网络测试和故障排查中非常有用!🔍

相关推荐
DemonAvenger9 分钟前
大规模Go网络应用的部署与监控
网络协议·架构·go
小毛驴85043 分钟前
WebSocket 在多线程环境下处理 Session并发
网络·websocket·网络协议
卑微的小鬼3 小时前
Cookie和Session是什么?有什么区别?
服务器·网络协议
Bonnie_12153 小时前
13-netty基础-手写rpc-消费方生成代理-05
网络·网络协议·rpc·jetty
Bonnie_12154 小时前
10-netty基础-手写rpc-定义协议头-02
网络·网络协议·rpc
hello 早上好4 小时前
RPC 解析
网络协议·rpc
DemonAvenger4 小时前
网络性能优化:Go编程视角
网络协议·架构·go
天天扭码16 小时前
很全面的前端面试题——计算机网络篇(上)
前端·网络协议·面试
Rverdoser17 小时前
网站、域名、IP在什么场景下需要备案
网络·网络协议·tcp/ip