• C++实现telnet动态调试模块:将日志输出到telnet终端,通过telnet终端调用自定义注册的函数


    telnet动态调试模块:将日志输出到telnet终端,通过telnet终端调用自定义注册的函数

    仓库代码: https://gitee.com/liudegui/telnet-print

    • 依赖gcc5.4、boost1.65以上;
    • 保证可执行程序和配置文件在同一文件夹,使用示例见test_app文件夹;
    • 配置文件:
    [telnet-server]
    
    ; telnet-server服务器地址
    server_port = 2500
    ; 认证用户名     
    username = test
    ; 认证密码
    passwd = abc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 内置测试命令help-查看帮助exit-退出终端all-显示所有命令

    • 如注册函数为

      void test1(std::string param1)
      {
          // ...
      }
      class CTest {
      public:
          void test2(std::string param1, std::string param2)
          {
              // ...
          }
      };
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      CTest otest;
      void regFuncs()
      {
          TelnetServer::regist->attach<std::string>("t1", test1);
          TelnetServer::regist->attach<std::string, std::string>("t2", &CTest::test2, otest);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      可在telnet中键入如下输入打印

      t1 abc
      t1(abc)
      t2 abc 123
      t2(abc, 123)
      
      • 1
      • 2
      • 3
      • 4

    原理

    Telnet协议是TCP/IP协议族中的一员,属于应用层协议,远程登录是指用户使用Telnet命令,使自己的计算机暂时成为远程 主机的一个仿真 终端的过程。它只负责把用户输入的每个字符传递给 主机,再将主机输出的每个信息 回显在 屏幕上。如下图是一个简单的过程。

    在这里插入图片描述

    ​ Telnet服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet协议来工作。那么,什么是Telnet协议?它都具备哪些特点呢?

    Telnet是位于OSI模型的第7层—应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。

    ​ **作用:**Telnet提供远程登录功能,使得用户在本地主机上运行Telnet客户端,就可登录到远端的Telnet服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作. 这样就可以在本地远程操作和控制服务器。

    工作过程

    使用Telnet协议进行 远程登录时需要满足以下条件:在本地计算机上必须装有包含Telnet协议的客户程序;必须知道远程 主机的Ip地址或 域名;必须知道登录标识与口令。

    Telnet远程登录服务分为以下4个过程:
    1)本地与远程 主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程 主机的Ip地址或 域名;
    2)将 本地终端上输入的用户名和口令及以后输入的任何命令或字符以 NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从 本地主机向远程主机发送一个IP数据包;
    3)将远程 主机输出的 NVT格式的数据转化为本地所接受的格式送回 本地终端,包括输入命令 回显和命令执行结果;
    4)最后, 本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。

    缺点:
    ​ Telnet协议是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,如果我们要使用远程登录,使用前应在远端服务器上检查并设置允许Telnet服务的功能,或者可以选择具有加密功能的SSH程序。

    程序结构

    在这里插入图片描述

    如上为程序的主要模块

    程序的功能为

    • TelnetSession: telent的主要业务模块,一个登录请求对应一个TelnetSession对象;
    • SessionManager: 管理所有的TelnetSession对象;
    • TelnetServerImpl:tcp链路管理模块;
    • TelnetServer: 程序对外模块,提供start和stop接口,以及telPrint打印接口。

    参考文章

    网络编程之Telnet简单远程登录协议
    Telnet协议详解(远程登陆协议)

  • 相关阅读:
    Linux系统firewalld防火墙的应用实操(禁止屏蔽海外国外IP访问)
    Web Woeker和Shared Worker的使用以及案例
    ELFK集群部署与Logstash的过滤模块
    Windows基本命令学习
    【字符串】【将字符数组转为字符串】Leetcode 122 路径加密
    php怎么检测字符串是否只含数字
    Web jQuery—选择器、样式和效果
    【深度梯度投影网络:遥感图像】
    华为设备配置BFD多跳检测
    GTW验厂是什么?GTW验厂评级分类
  • 原文地址:https://blog.csdn.net/stallion5632/article/details/125527783