使用Telnet协议编程控制交换机

2018-11-26 09:33陈广
电脑知识与技术 2018年24期
关键词:字符串思科字符

陈广

摘要:通过Socket编程分析连接交换机后,发送接收的数据。研究使用Telnet协议编程远程控制华为及思科交换机的最终方法。

关键词:Telnet协议;交换机控制

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)24-0058-01

本校学生宿舍每日11时断网,第二天早上6时开网,周六周日及节假日24小时开网。之前网管中心派专人每天手动关闭及开启交换机,工作量大,而且很麻烦。于是想到是否可以写一个程序自动完成这些工作。

这个程序的难点在于如何网络编程远程控制交换机,控制交换机可使用Telnet及SNMP等协议。由于Telnet协议使用起来更为简单,所以最终选定Telnet协议进行编程控制。编程语言选定C#语言,编程工具选定Visual Studio 2017。我校交换机有两个品牌,华为及思科,所以需要分别进行分析。

1 协议分析

由于Telnet协议使用的是23号网络端口,本次直接使用Socket编程,手动向交换机 23 端口发送数据,然后接收交换机所发回的信息,接下来对接收到的数据进行分析,找出规律。最终实现编程控制。

1)思科交换机协议分析

当使用Socket向交换机发起连接请求后,收到的数据为:

255 251 1 255 251 3 255 253 24 255 253 31 13 10 13 10 85 115 101 114 32 65 99 99 101 115 115 32 86 101 114 105 102 105 99 97 116 105 111 110 13 10 13 10 80 97 115 115 119 111 114 100 58 32

其中,Telnet協议的每个指令以 255 开头,长度为3个字节。观察以上数据,可知前12个字节为4个Telnet指令,它的具体含义我们不必了解。之后的数据为显示信息:

User Access Verification

Password:

这表示需要输入密码,在输入正确密码后,收到的信息为:

13 10 83 119 105 116 99 104 62

转换为字符则为:Switch>

由于思科交换机允许双重密码,所以此处需要输入 enable

然后分5次分别收到101,110,97 98,108 101,13 10。译为:enable

然后再收到 80 97 115 115 119 111 114 100 58 32。译为:Password:

这里我们观察到,发送到交换机的指令会回发给电脑这是因为,Telnet协议会在服务端产生一个虚拟终端,终端上显示的任何信息都会回显给客户端。此次输入第二个密码就可以工作了。

2)华为交换机协议分析

发起连接请求后收到如下信息:

255 251 1 255 251 1 255 251 1 255 251 3 255 253 24 255 253 31 13

此为6个Telnet协议指令,然后继续收到:

13 10 13 10 76 111 103 105 110 32 97 117 116 104 101 110 116 105 99 97 116 105 111 110 13 10 13 10 13 10 80 97 115 115 119 111 114 100 58

译为:

Login authentication

Password:

输入密码后,就可以正常发送指令控制交换机了,之后的分析略过。

2 算法描述

根据协议的分析,我们最终找到规律,思科交换机在最后一个字符出现‘#符号后可以输入控制指令,并等待下一个‘#然后继续输入。华为交换机等待的是‘]字符。最终我们可以手动编写脚本单数行为发送的指令,双数行为等待的字符串或字符。然后程序读取这些脚本对交换机进行自动控制。在与服务器交互过程中需将交互内容存储为日志文件。

找出两种交换机的共同点并编程控制。这里列出客户端协议解析逻辑:

规则1:如果为Telnet指令则忽略

规则2:如果收到的信息不包含回车换行则忽略

规则3:存储接收到的字符串,直到出现所设定要接收的字符串,然后删除回显字符串后显示接收的消息,最后向服务器端发送存储好的指令。

3 结束语

使用Telnet协议对交换机进行控制非常方便,使用极少代码便可实现。但其密码以明文方式在网络中传输,这带来了一定的不安全性。如果对安全性有要求,请使用其他协议进行编程控制。

【通联编辑:代影】

猜你喜欢
字符串思科字符
字符代表几
一种USB接口字符液晶控制器设计
消失的殖民村庄和神秘字符
思科新一代防火墙帮助客户实现全数字化计划
一种新的基于对称性的字符串相似性处理算法
依据字符串匹配的中文分词模型研究
一种针对Java中字符串的内存管理方案