编程网管
1. ‘求助’我是一名网管,学什么编程语言好
如果楼主以前没有编程的经验,
那么先学习C语言吧,这样会比较好,容易打好基础,
然后可以学习Java, C++,或者.NET等高级编程语言,
最后希望楼主刻苦,不懂就问,祝好运!
2. 网管要不要会编程
大网站的网管,其实也并不是一个全面手,若很全面,可能人家反而不会要你。有的精通UNIX,有的则精通WinDows,有的熟悉ASP,有的则熟悉JSP或是php等等。
而对于网吧的网管,一般就得具有全面的知识和动手能力,这是基本的。
不过合格的网管学的东西还是很多的 看看吧: 网络管理员的知识结构
仅仅是计算机相关专业毕业,离一名合格的网管还相距很远。在网络技术日新月异的今天,课本内容已显得非常落伍与陈旧。因此,应当广泛涉猎与网络管理相关的领域,完成最基本的知识积累。
●了解网络设计
拥有丰富的网络设计知识,熟悉网络布线规范和施工规范,了解交换机、路由器、服务器等网络设备,掌握局域网基本技术和相关技术,规划设计包含路由的局域网络和广域网络,为中小型网络提供完全的解决方案。
●掌握网络施工
掌握充分的网络基本知识,深入了解TCP/IP网络协议,独立完成路由器、交换机等网络设备的安装、连接、配置和操作,搭建多层交换的企业网络,实现网络互联和Internet连接。掌握网络软件工具的使用,迅速诊断、定位和排除网络故障,正确使用、保养和维护硬件设备。
●熟悉网络安全
设计并实施完整的网络安全解决方案,以降低损失和攻击风险。在Internet和局域网络中,路由器、交换机和应用程序,乃至管理不严格的安全设备,都可能成为遭受攻击的目标。网络必须全力以赴加强戒备,以防止来自黑客、外来者甚至心怀不满的员工对信息安全、信息完整性以及日常业务操作的威胁。
●熟悉网络操作系统
熟悉Windows和linux操作系统,具备使用高级的Windows和Linux平台,为企业提供成功的设计、实施和管理商业解决方案的能力。
●了解Web数据库
了解Web数据库的基本原理,能够围绕Web数据库系统开展实施与管理工作,实现对企业数据的综合应用。
网管的素质能力
一个真正的网管,应当对网络硬件和操作系统都有较为深入的了解。也就是说,作为网管,应当熟悉网络设备的性能、连接与配置,掌握网络服务的搭建、配置与管理,深入了解网络协议和网络安全,熟练使用网络诊断软件工具,及时排除网络故障。
●自学能力
网管应当拥有强烈的求知欲和非常强的自学能力。第一,网络知识和网络技术不断更新,需要继续学习的内容非常多。第二,学校课本知识大多过于陈旧,并且脱离于网络管理实际,许多知识都要从头学起。第三,网络设备和操作系统非常繁杂,各自拥有不同的优点,适用于不同的环境和需求,需要全面了解、重点掌握。
●英文阅读能力
由于绝大多数新的理论和技术都是英文资料,网络设备和管理软件说明书大多也是英文,所以,网管必须掌握大量的计算机专业词汇,从而能够流畅地阅读原版的白皮书和技术资料。提高阅读能力最简单的方法,就是先选择自己熟悉的技术,然后,登录到厂商的官方网站,阅读技术白皮书,从而了解技术文档的表述方式。遇到生词时,可以使用电子词典在线翻译。
●动手能力
作为网管,需要亲自动手的时候非常多,如网络设备的连接、网络服务的搭建、交换机和路由器的设置、综合布线的实施、服务器扩容与升级,等等。所以,网管必须拥有一双灵巧的手,具备很强的动手能力。当然,事先应认真阅读技术手册,并进行必要的理论准备。
●创造和应变能力
硬件设备、管理工具、应用软件所提供的直接功能往往是有限的,而网络需求却是无限的。利用有限的功能满足无限的需要,就要求网管具有较强的应变能力,利用现有的功能、手段和技术,创造性的实现各种复杂的功能,满足用户各种需求。以访问列表为例,利用对端口的限制,除了可以限制对网络服务的访问外,还可用于限制蠕虫病毒的传播。
●观察和分析判断能力
具有敏锐的观察能力和出色的分析判断能力。出错信息、日志记录、LED指示灯等,都会从不同侧面提示可能导致故障的原因。对故障现象观察的越细致、越全面,排除故障的机会也就越大。另外,通过经常、认真的观察,还可以及时排除潜在的网络隐患。网络是一个完整的系统,故障与原因关系复杂,既可能是一因多果,也可能是一果多因。所以,网管必须用全面、动态和联系的眼光分析问题,善于进行逻辑推理,从纷繁复杂的现象中发现事物的本质。
小 结
知识和能力是相辅相成的,知识是能力的基础,能力是知识的运用。因此,两者不可偏废。应当本着先网络理论,再实际操作的原则,在搞清楚基本原理的基础上,提高动手能力。建议利用VMWare虚拟机搭建网络实验环境,进行各种网络服务的搭建与配置实验。“兴趣是最好的老师。”只要您热爱网络管理这个职业,相信经过自己的努力,一定会迅速成长为一名合格的网管!
其实:我觉得做一个网吧网管最需要的是 1.热心,积极,服务 2.技术一般即可(初来乍到,何必强求技术上) 3.要有平常心,和善忘心理。被那些流氓客人为难的时候能快速忘记
3. 网络工程师/系统管理员是否需要学习编程
既然windows方面没问题,是不是要搞一下linux方面的系统,一些大型的应用都是架在linux服务器上的,作为网管更应该倾向于对linux系统的精通,什么网络配置,防火墙,一些必要的服务,比如apache,ftp,php都是要掌握的。对于linux,系统解析命令一般都是shell进行的,是否也要把shell学好,c或者c++语言学习一下也没有坏处,毕竟开发平台还是在linux和windows下进行的,但不是主要任务。网管更倾向于系统和网络,编程开发的事情就交给开发人员吧。
4. Python网络编程6-使用Pysnmp实现简单网管
简单网络管理协议SNMP(Simple Network Management Protocol)用于网络设备的管理。SNMP作为广泛应用于TCP/IP网络的网络管理标准协议,提供了统一的接口,从而实现了不同种类和厂商的网络设备之间的统一管理。
SNMP协议分为三个版本:SNMPv1、SNMPv2c和SNMPv3。
SNMP系统由网络管理系统NMS(Network Management System)、SNMP Agent、被管对象Management object和管理信息库MIB(Management Information Base)四部分组成。
SNMP查询是指NMS主动向SNMP Agent发送查询请求,如图1-3所示。SNMP Agent接收到查询请求后,通过MIB表完成相应指令,并将结果反馈给NMS。SNMP查询操作有三种:Get、GetNext和GetBulk。SNMPv1版本不支持GetBulk操作。
不同版本的SNMP查询操作的工作原理基本一致,唯一的区别是SNMPv3版本增加了身份验证和加密处理。下面以SNMPv2c版本的Get操作为例介绍SNMP查询操作的工作原理。假定NMS想要获取被管理设备MIB节点sysContact的值,使用可读团体名为public,过程如下所示:
SNMP设置是指NMS主动向SNMP Agent发送对设备进行Set操作的请求,如下图示。SNMP Agent接收到Set请求后,通过MIB表完成相应指令,并将结果反馈给NMS。
不同版本的SNMP Set操作的工作原理基本一致,唯一的区别是SNMPv3版本增加了身份验证和加密处理。下面以SNMPv3版本的Set操作为例介绍SNMP Set操作的工作原理。
假定NMS想要设置被管理设备MIB节点sysName的值为HUAWEI,过程如下所示:
SNMPv1和SNMPv2c的Set操作报文格式如下图所示。一般情况下,SNMPv3的Set操作信息是经过加密封装在SNMP PDU中,其格式与SNMPv2c的Set操作报文格式一致。
SNMP Traps是指SNMP Agent主动将设备产生的告警或事件上报给NMS,以便网络管理员及时了解设备当前运行的状态。
SNMP Agent上报SNMP Traps有两种方式:Trap和Inform。SNMPv1版本不支持Inform。Trap和Inform的区别在于,SNMP Agent通过Inform向NMS发送告警或事件后,NMS需要回复InformResponse进行确认。
在Ensp中搭建网络环境,在R2上启用SNMP作为SNMP agent,Linux主机作为NMS;为方便观察SNMP报文格式,在R2使用SNMP的版本为v2c。
通过下面的Python脚本获取R2的系统信息与当前的主机名
运行结果如下
在R2接口上抓包结果如下,Linux主机向R2的161端口发送SNMP get-request报文,可以看到SNMP使用的版本为v2c,设置的团体名为public,随机生成了一个request-id,变量绑定列表(Variable bindings),即要查询的OID,但Value为空;值得注意的是这些信息都是明文传输的,为了安全在实际环境中应使用SNMPv3。
通过下面的Python脚本获取R2的接口信息。
运行结果如下:
在R2接口抓包结果如下,getBuikRequest相比get-request设置了一个max-repetitions字段,表明最多执行get操作的次数。Variable bindings中请求的OID条目只有一条。
下面Python脚本用于设置R2的主机名为SNMPv2R2。
运行结果如下
在路由器上可以看到主机名有R2变为了SNMPv2R2。
get-response数据包内容与set-request中无异。
下面Python脚本用于接收,R2发送的Trap,并做简单解析。
先运行该脚本,之后再R2上手动将一个接口shutdown,结果如下:
接口上抓包结果如下,此时团体名用的是public,data部分表明是trap。
由于Ensp中的通用路由器认证算法只支持des56,而pysnmp不支持该算法,因此使用AR路由器配置SNMPv3。
使用下面Python脚本发送snmpv3 get报文获取设备系统信息。
抓包结果如下,首先发送get-resques进行SNMPv3认证请求,随机生成一个msgID,认证模式为USM,msgflgs中Reportable置1要求对方发送report,其他为置0,表示不进行加密与鉴权;另外安全参数,认证参数、加密参数都为空,此时不携带get请求数据。
路由器给NMS回复report,msgID与resquest一致,Msgflgs中各位都置0,同时回复使用的安全引擎,认证与加密参数为空,不进行认证与加密,因此能看到data中的数据。
AR1收到请求后进行回复,数据包中msgflags标志位中除reportable外其他位都置1,表示不需要回复,同时进行加密与鉴权。同样也可以看到认证用户为testuser,认证参数与加密参数都有填充,data部分也是同样加密。
参考:
什么是SNMP - 华为 (huawei.com)
AR100-S V300R003 MIB参考 - 华为 (huawei.com)
SNMP library for Python — SNMP library for Python 4.4 documentation (pysnmp.readthedocs.io)