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