一种实现远程命令执行的方法及装置与流程

文档序号:11843342阅读:254来源:国知局
一种实现远程命令执行的方法及装置与流程

本发明涉及网络技术领域,尤其涉及一种实现远程命令执行的方法及装置。



背景技术:

网络服务器自动化运维中,当服务出现故障时,现有运维平台多使用Web(网页)远程管理或手动Shell(提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器)远程登录对服务进行管理。

随着运维体系的完善成熟,运维平台一般会提供:查看服务器资源使用情况及负载(内存,CPU(Central Processing Unit,中央处理器),磁盘读写,网络),查看服务或服务器日志,清理磁盘存储空间,重启故障服务,摘除故障服务器,重启故障服务器等功能。

大部分常规操作可以使用命令和界面处理的。当然如果是服务代码bug(漏洞)等问题还是需要远程Shell登陆去排查问题。

目前市面常见系统监控开源工具:Zabbix、Saltstack、Cacti、Nagios、Ganglian。这些工具多为远程性能监控和分布式命令执行。可以集群的管理服务器和服务,并且提供上面提到的性能监控警报等功能。Saltstack可以通过API(Application Programming Interface,应用程序编程接口)分布式调用用户自定义模块功能来执行一些常见事务。如对指定服务器的服务重启,查看日志等功能。

以上开源功能都是通过Web方式提供服务的,加上自定义模块实现了分布式服务器集群的管理、监控、环境配置的统一。

上述开源平台虽然强大,但是出现特殊故障的时候常规功能是不能发现问题的。届时还是需要远程登录Shell到服务器进行原因排查。由于远程Shell为了提高安全性,对用户终端是有很大的限制,而高安全服务器远程登录是需要证书和动态密钥来提高安全性,如果运维人员出行,则必须随身携带笔记本和上网设备才能实现远程故障排除。



技术实现要素:

本发明实施例提供一种实现远程命令执行的方法及装置,以避免运维人员远程登录Shell到服务器执行命令。

一方面,本发明实施例提供了一种实现远程命令执行的方法,所述方法包括:

利用实时通讯系统的远程控制公共账号接收客户端发送的远程控制消息;

对所述客户端的用户身份和所述客户端执行所述远程控制消息对应的远程控制命令的权限进行认证;

若判定所述客户端的用户身份为设定的白名单用户、且所述客户端具有执行所述远程控制消息对应的远程控制命令的权限,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令。

另一方面,本发明实施例提供了一种实现远程命令执行的装置,所述装置包括:

远程控制消息接收单元,用于利用实时通讯系统的远程控制公共账号接收客户端发送的远程控制消息;

身份权限认证单元,用于对所述客户端的用户身份和所述客户端执行所述远程控制消息对应的远程控制命令的权限进行认证;

执行单元,用于若判定所述客户端的用户身份为设定的白名单用户、且所述客户端具有执行所述远程控制消息对应的远程控制命令的权限,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令。

上述技术方案具有如下有益效果:避免了运维人员远程登录Shell到服务器执行命令,运维人员无需随身携带电脑等过多的专业设备,仅基于实时通讯即可实现直接对服务器远程执行命令。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一种实现远程命令执行的方法流程图;

图2为本发明实施例一种实现远程命令执行的装置结构示意图;

图3为本发明应用实例一种实现远程微博命令执行的系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,为本发明实施例一种实现远程命令执行的方法流程图,所述方法包括:

101、利用实时通讯系统的远程控制公共账号接收客户端发送的远程控制消息;

102、对所述客户端的用户身份和所述客户端执行所述远程控制消息对应的远程控制命令的权限进行认证;

103、若判定所述客户端的用户身份为设定的白名单用户、且所述客户端具有执行所述远程控制消息对应的远程控制命令的权限,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令。

优选地,所述方法还包括:利用所述实时通讯系统的故障通知公共账号向设定的白名单用户推送故障通知消息,其中携带故障原因、服务名称及服务器IP地址;以及所述白名单用户基于故障通知消息,通过客户端向所述远程控制公共账号发送相应的远程控制消息。

优选地,所述实时通讯系统为微博消息系统,所述客户端为微博客户端,所述远程控制消息和故障通知消息采用微博私信的方式发送。

优选地,所述远程控制消息对应的远程控制命令包括:调用运维平台的应用程序编程接口API命令、远程shell命令、异步任务下发命令;所述调用运维平台的API命令包括:服务器重启命令、服务器摘除命令、服务器的服务重启命令。

优选地,若所述远程控制消息对应的远程控制命令为远程shell命令,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令之前,还包括:通过动态密码向具有执行权限的客户端做设定时间授权;

若所述远程控制消息对应的远程控制命令为异步任务下发命令,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令之后,还包括:执行完毕后将执行结果返回给所述客户端。

对应于上述方法实施例,如图2所示,为本发明实施例一种实现远程命令执行的装置结构示意图,所述装置包括:

远程控制消息接收单元21,用于利用实时通讯系统的远程控制公共账号接收客户端发送的远程控制消息;

身份权限认证单元22,用于对所述客户端的用户身份和所述客户端执行所述远程控制消息对应的远程控制命令的权限进行认证;

执行单元23,用于若判定所述客户端的用户身份为设定的白名单用户且所述客户端具有执行所述远程控制消息对应的远程控制命令的权限,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令。

优选地,所述装置还包括:故障通知消息推送单元24,用于利用所述实时通讯系统的故障通知公共账号向设定的白名单用户推送故障通知消息,其中携带故障原因、服务名称及服务器IP地址;以及所述白名单用户基于故障通知消息,通过客户端向所述远程控制公共账号发送相应的远程控制消息。

优选地,所述实时通讯系统为微博消息系统,所述客户端为微博客户端,所述远程控制消息和故障通知消息采用微博私信的方式发送。

优选地,所述远程控制消息对应的远程控制命令包括:调用运维平台的应用程序编程接口API命令、远程shell命令、异步任务下发命令;所述调用运维平台的API命令包括:服务器重启命令、服务器摘除命令、服务器的服务重启命令。

优选地,所述装置还包括:

授权单元25,用于若所述远程控制消息对应的远程控制命令为远程shell命令,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令之前,还通过动态密码向具有执行权限的客户端做设定时间授权;

发送单元26,用于若所述远程控制消息对应的远程控制命令为异步任务下发命令,则对远程服务器执行预先封装的所述远程控制消息对应的远程控制命令之后,执行完毕后将执行结果返回给所述客户端。

本发明实施例上述技术方案具有如下有益效果:避免了运维人员远程登录Shell到服务器执行命令,运维人员无需随身携带电脑等过多的专业设备;IM(Instant Messaging,实时通讯)自带一套异地登陆等异常安全机制,虽然没有Shell安全但胜在简单方便,当碰到高危操作也可以配合动态密码key或短信身份认证;运维人员无需shell登陆每一台服务器执行命令,仅基于实时通讯即可实现直接对服务器远程执行命令;支持异步多任务,可以并行执行很多任务,且支持远程广播shell;执行完毕后会在消息内看到对应结果,也可以点击消息详情查看更详细的信息(html组织的),如果是异步任务会带任务编号对应之前命令。

以下举应用实例对本发明实施例上述技术方案进行详细说明:

本发明应用实例提供一个更简单方便的管理方式,通过微博消息功能上行命令交互实现指令控制远程服务器的服务重启,性能查看,任务的执行及故障机摘除等常见功能,通过授权流程后能够远程执行Shell权限命令等操作。使用户需要被授权后才可以使用如上功能。通过这个功能我们可以随身带一个手机或平板即可完成大部分临时故障处理。

本发明应用实例运维人员使用普通的微博客户端,需要关注两个微博公共账号:远程控制公共账号和故障通知公共账号,这两个公共账号在服务端已经设定好接受命令的用户标识(uid)白名单并可以在服务端指定用户可操作权限,其中:

故障通知公共账号:当远程服务器出现故障或异常时,会推送具体的故障通知消息,会看到故障原因、服务名称及服务器IP地址故障情况等信息(这些数据都是可以使用zabbix等以上介绍的开源来实现的)。远程服务器出现故障或异常分为很多种,如磁盘写入故障会在系统的错误日志内体现,系统重启会被扫描服务器状态的监视服务器发现。可以利用目前的系统监控功能收集所有相关日志来进行获取;具体实施中,通过在每台服务器上安装agent可以对本机的日志和性能指标进行监控。当监控到以上问题后会产生事件将这个消息发送给触发器通过故障通知公共账号进行通知。

远程控制公共账号:在白名单内的运维人员,可以通过关注远程控制公共账号上行命令来调用远程服务器已经封装好的功能,如执行以下命令:

查看指令帮助:cmd help

列出受管理服务器:cmd server list

重启服务器:cmd restart server 192.168.1.1“通知服务器故障需要重启”

查看日志:cmd tail 1000 192.168.1.1 logs/nginx/access.log

查看IO:cmd iostat 192.168.1.1

查看系统进程排行:cmd top 192.168.1.1

摘除服务器从反向代理:cmd delproxyserver 192.168.1.1 192.168.1.2 vhostname

异步任务:task:cmd rmoldlogs 192.168.1.1 servicename 7 day

服务器组命令:cmdgroup rmoldlogs frontwebserver servicename 7day

如图3所示,为本发明应用实例一种实现远程微博命令执行的系统结构示意图:通过微博客户端给微博消息系统上指定微博公共账号发送微博私信(远程控制消息),微博私信会从微博消息系统转发到消息处理服务,消息处理服务会对发送远程控制消息的微博客户端的用户身份和微博客户端执行远程控制消息对应的命令的权限进行认证。

若身份权限没有问题则可以调用权限内的功能,例如:调用运维平台的API(应用程序编程接口)命令、远程shell命令(此项功能需要权限极高需要使用动态密码做短期授权)、异步任务下发命令;所述调用运维平台的API命令包括:服务器重启命令、服务器摘除命令、服务器的服务重启命令。判定微博客户端有权限执行远程控制消息对应的命令,则通过动态密码做设定时间授权后,执行远程控制消息对应的命令,执行完毕后将执行结果返回给微博客户端。

本发明应用实例上述技术方案具有如下有益效果:避免了运维人员远程登录Shell到服务器执行命令,运维人员无需随身携带电脑等过多的专业设备;IM自带一套异地登陆等异常安全机制,虽然没有Shell安全但胜在简单方便,当碰到高危操作也可以配合动态密码key或短信身份认证;运维人员无需shell登陆每一台服务器执行命令,仅基于实时通讯即可实现直接对服务器远程执行命令;支持异步多任务,可以并行执行很多任务,且支持远程广播shell;执行完毕后会在消息内看到对应结果,也可以点击消息详情查看更详细的信息(html组织的),如果是异步任务会带任务编号对应之前命令。

应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。

在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。

为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。

上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。

本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。

本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。

本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。

在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1