机群命令运行方法及系统与流程

文档序号:12491378阅读:181来源:国知局
机群命令运行方法及系统与流程

本发明涉及计算机技术领域,特别是涉及一种机群命令运行方法及系统。



背景技术:

通常在对大规模的Linux/Unix机群的命令运行中,要对多台机器实现相同的操作,如安装软件、拷贝文件、删除文件等,需要依次登录每台机器,然后执行相同的命令来完成这些操作。

传统的技术方案可参阅图4,其中Server 1、Server 2......Server n表示不同的Linux/Unix服务器,当需要对所有的服务器做相同的操作的时候,操作者需要依次登录Server 1、Server 2......Server n,然后执行相同的命令,以此来完成在所有服务器上完成相同的操作。而依次登录所有服务器完成相同的事情,需要耗费巨大的时间和精力,效率低下,尤其是在服务器数量较多的时候,难度更加大。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明的一个目的在于提出一种效率更高的机群命令运行方法。

根据本发明实施例的机群命令运行方法,应用于Linux/Unix系统中,所述方法包括:

获取机群中多台机器的IP及登录信息,并根据每台所述机器的IP及登录信息创建机器列表文件;

根据命令列表文件生成执行脚本,所述命令列表文件包括需要执行的命令;

将所述机器列表文件中的每台所述机器的IP及登录信息依次传递给所述执行脚本,并调用所述执行脚本对所述机器列表文件中的每台所述机器执行所述需要执行的命令。

根据本发明实施例的机群命令运行方法,首先获取机群中多台机器的IP及登录信息,然后根据命令列表文件生成执行脚本,在命令运行操作时,只需将每台机器的IP及登录信息依次传递给执行脚本,再调用执行脚本执行需要执行的命令即可,无需过多的人为操作,自动化程度高,可以同时对多台机器进行相同的命令运行,大大节省了维护多台服务器时的时间成本,提升了效率。

另外,根据本发明上述实施例的机群命令运行方法,还可以具有如下附加的技术特征:

进一步地,在本发明的一个实施例中,所述命令列表文件包括至少一个依序排列的命令行,且任一所述命令行均包括正则表达式和与所述正则表达式对应的需要执行的命令,所述调用所述执行脚本对所述机器列表文件中的每台所述机器执行所述需要执行的命令的步骤包括:

在所述机器列表文件中的每台所述机器中均调用所述执行脚本以获取上一个命令行中的需要执行的命令被执行后的输出信息;

在所述命令列表文件中的当前命令行中查找是否存在与所述输出信息对应的正则表达式;

若是,则执行与所述输出信息对应的正则表达式对应的需要执行的命令。

进一步地,在本发明的一个实施例中,所述根据命令列表文件生成执行脚本的步骤包括:

创建文件头代码块;

依次读取所述命令列表文件中的每个命令行,且每读取一个所述命令行,创建一个对应的代码块,直至所述命令列表文件中的所有命令行均被读取;

创建文件尾代码块。

进一步地,在本发明的一个实施例中,所述将所述机器列表文件中的每台所述机器的IP及登录信息依次传递给所述执行脚本,并调用所述执行脚本对所述机器列表文件中的每台所述机器执行所述需要执行的命令的步骤包括:

从所述机器列表文件中依次读取每台所述机器的IP及登录信息,且每读取一台所述机器的IP及登录信息,就将读取到的当前机器的IP及登录信息传递给所述执行脚本,并调用所述执行脚本对所述当前机器执行所述需要执行的命令。

进一步地,在本发明的一个实施例中,所述调用所述执行脚本对所述当前机器执行所述需要执行的命令的步骤之后,所述方法还包括:

当判断到所述执行脚本对所述当前机器执行所述需要执行的命令的执行结果错误时,终止所述当前机器的命令运行,并输出失败日志。

本发明的另一个目的在于提出一种效率更高的机群命令运行系统。

根据本发明实施例的机群命令运行系统,应用于Linux/Unix系统中,所述系统包括:

获取模块,用于获取机群中多台机器的IP及登录信息,并根据每台所述机器的IP及登录信息创建机器列表文件;

生成模块,用于根据命令列表文件生成执行脚本,所述命令列表文件包括需要执行的命令;

传递调用模块,用于将所述机器列表文件中的每台所述机器的IP及登录信息依次传递给所述执行脚本,并调用所述执行脚本对所述机器列表文件中的每台所述机器执行所述需要执行的命令。

另外,根据本发明上述实施例的机群命令运行系统,还可以具有如下附加的技术特征:

进一步地,在本发明的一个实施例中,所述命令列表文件包括至少一个依序排列的命令行,且任一所述命令行均包括正则表达式和与所述正则表达式对应的需要执行的命令,所述传递调用模块还用于:

在所述机器列表文件中的每台所述机器中均调用所述执行脚本以获取上一个命令行中的需要执行的命令被执行后的输出信息;

在所述命令列表文件中的当前命令行中查找是否存在与所述输出信息对应的正则表达式;

若是,则执行与所述输出信息对应的正则表达式对应的需要执行的命令。

进一步地,在本发明的一个实施例中,所述生成模块具体用于:

创建文件头代码块;

依次读取所述命令列表文件中的每个命令行,且每读取一个所述命令行,创建一个对应的代码块,直至所述命令列表文件中的所有命令行均被读取;

创建文件尾代码块。

进一步地,在本发明的一个实施例中,所述传递调用模块还用于:

从所述机器列表文件中依次读取每台所述机器的IP及登录信息,且每读取一台所述机器的IP及登录信息,就将读取到的当前机器的IP及登录信息传递给所述执行脚本,并调用所述执行脚本对所述当前机器执行所述需要执行的命令。

进一步地,在本发明的一个实施例中,所述系统还包括:

终止模块,用于在判断到所述执行脚本对所述当前机器执行所述需要执行的命令的执行结果错误时,终止所述当前机器的命令运行,并输出失败日志。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本发明一实施例的机群命令运行方法的流程图;

图2是图1中调用所述执行脚本对所述当前机器执行所述需要执行的命令的步骤详细的流程图;

图3是根据本发明另一实施例的机群命令运行系统的结构示意图;

图4是现有技术中机群命令运行的原理示意图。

具体实施方式

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

请参阅图1,本发明一实施例提出的机群命令运行方法,应用于Linux/Unix系统中,所述方法至少包括以下步骤:

S101,获取机群中多台机器的IP及登录信息,并根据每台所述机器的IP及登录信息创建机器列表文件;

其中,具体实施时,主要是对机器的服务器进行操作,获取需要命令运行的机器中每台服务器的IP地址和登录信息,登录信息具体包括用户名和密码,然后根据每台服务器的IP及登录信息创建机器列表文件host.list,机器列表文件host.list可以以“IP:通信协议:用户名:密码”的格式配置文件的一行内容,用于指明操作哪些机器,这些机器使用ssh/telnetz作为通信协议访问,访问的用户和密码等实现登录操作的内容。此外,机群中的所有服务器可以通过组件局域网的方式建立连接,以实现通过一台服务器同时对其它服务器进行命令运行。

S102,根据命令列表文件生成执行脚本,所述命令列表文件包括需要执行的命令;

其中,命令列表文件至少包括需要执行的命令,即命令运行的具体操作,如安装软件、拷贝文件、删除文件等,命令列表文件的格式例如是cmd.list。根据命令列表文件cmd.list生成执行脚本的方式可以有多种,例如采用expect这个可以支持tcl交互式语言的shell工具,首先编写一个可以自动生成expect脚本的工具expectcreator,然后expectcreator能够自动根据命令列表文件cmd.list生成一个能够实现命令的expect执行脚本expect_cmd_run.sh,具体的编程数据在此不作限定。

S103,将所述机器列表文件中的每台所述机器的IP及登录信息依次传递给所述执行脚本,并调用所述执行脚本对所述机器列表文件中的每台所述机器执行所述需要执行的命令。

其中,将所述机器列表文件中的每台机器的IP及登录信息依次传递给所述执行脚本也可以通过expectcreator实现,即expectcreator能够自动将机器列表文件host.list中的每台机器的IP及登录信息依次传递给执行脚本expect_cmd_run.sh,然后通过调用执行脚本expect_cmd_run.sh对机器列表文件host.list中的每台机器执行cmd.list中的需要执行的命令。可以理解的,具体实施时,只要在其中一台机器上进行操作,就可实现对机群中所有机器进行命令运行。

根据本发明实施例的机群命令运行方法,首先获取机群中多台机器的IP及登录信息,然后根据命令列表文件生成执行脚本,在命令运行操作时,只需将每台机器的IP及登录信息依次传递给执行脚本,再调用执行脚本执行需要执行的命令即可,无需过多的人为操作,自动化程度高,可以同时对多台机器进行相同的命令运行,大大节省了维护多台服务器时的时间成本,提升了效率。

其中,根据本发明的一个示例,所述命令列表文件cmd.list包括若干个命令行,且任一所述命令行均包括正则表达式和与所述正则表达式对应的需要执行的命令,例如,命令运行的过程包括安装软件、拷贝文件、删除文件这三个操作,则每个操作都可以对应一个命令行,执行了其中一个命令行中的需要执行的命令后,才会执行下一行命令行中的需要执行的命令。任意一行命令行可以采用以下表达方式“正则表达式1::需要执行的命令1,正则表达式2::需要执行的命令2…….正则表达式n::需要执行的命令n”,即每一个命令行中正则表达式和与需要执行的命令相对应,正则表达式和与所述正则表达式对应的需要执行的命令可以为多个,这是由于机群中每台机群因为自身的差异,执行命令后输出结果可能不同。

具体地,请参阅图2,S103中,所述调用所述执行脚本对所述当前机器执行所述需要执行的命令的步骤包括:

S1031,在所述机器列表文件中的每台所述机器中均调用所述执行脚本以获取上一个命令行中的需要执行的命令被执行后的输出信息;

其中,对每台机器的处理过程相同,均调用所述执行脚本以获取上一个命令行中的需要执行的命令被执行后的输出信息,对于命令列表文件cmd.list中第一个命令行,默认只有一个正则表达式和与之对应的一个需要执行的命令,且该正则表达式为登录服务器成功,即若登录服务器成功,则执行与登录服务器成功这条正则表达式对应的需要执行的命令,例如需要执行的命令为安装软件;若登录服务器不成功,则不再进行后续操作。从第二个命令行开始,会获取上一个命令行中的需要执行的命令被执行后的输出信息,例如第一个命令行中安装软件这个命令被执行后的结果为安装软件成功,则获取安装软件成功的输出结果。

S1032,在所述命令列表文件中的当前命令行中查找是否存在与所述输出信息对应的正则表达式;

其中,会在第二个命令行查找是否存在与安装软件成功这个结果对应的正则表达式。

S1033,若是,则执行与所述输出信息对应的正则表达式对应的需要执行的命令。

其中,若第二个命令行中存在与安装软件成功这个结果对应的正则表达式,例如第二命令行中有一个正则表达式为“软件安装成功”,与该正则表达式对应的需要执行的命令“文件重命名”,则会执行“文件重命名”这个需要执行的命令。

具体地,根据本发明的一个示例,S102中,根据命令列表文件生成执行脚本的步骤包括:

创建文件头代码块;

依次读取所述命令列表文件中的每个命令行,且每读取一个所述命令行,创建一个对应的代码块,直至所述命令列表文件中的所有命令行均被读取;

创建文件尾代码块。

本实施例以expect脚本为例进行说明,创建文件头代码块是指创建expect shell文件头代码块,具体包括脚本解析器声明、参数获取、变量声明等;然后创建登录expect shell代码块,开启对终端输出的“表达式获取”,接着依次读取所述命令列表文件中的每个命令行的内容,并创建对应的代码块,直至所述命令列表文件中的所有命令行均被读取;最后创建文件尾代码块,完成执行脚本的生成。

具体地,根据本发明的一个示例,S103中,所述将所述机器列表文件中的每台所述机器的IP及登录信息依次传递给所述执行脚本,并调用所述执行脚本对所述机器列表文件中的每台所述机器执行所述需要执行的命令的步骤具体指:

从所述机器列表文件中依次读取每台所述机器的IP及登录信息,且每读取一台所述机器的IP及登录信息,就将读取到的当前机器的IP及登录信息传递给所述执行脚本,并调用所述执行脚本对所述当前机器执行所述需要执行的命令。

例如,从机器列表文件host.list中依次读取机器1的IP及登录信息,就会将机器1的IP及登录信息传递给所述执行脚本,并调用所述执行脚本对所述当前机器执行所述需要执行的命令,从而进一步命令运行的效率。

此外,在调用所述执行脚本对所述当前机器执行所述需要执行的命令的步骤之后,还包括:

当判断到所述执行脚本对所述当前机器执行所述需要执行的命令的执行结果错误时,终止所述当前机器的命令运行,并输出失败日志。

可以理解的,若所述执行脚本对所述当前机器执行所述需要执行的命令的执行结果正确,则进一步判断机器列表文件host.list中是否还有未读取的机器,若有,则进行读取;若没有,则流程结束。

本实施例提出的机群命令运行方法还通过抓取命令执行时的终端输出内容,自动判断下一步该执行何种操作,对于不懂expect和shell语言的人,也可以直接利用本实施例的方法通过脚本生成工具expectcreator和执行脚本expect_cmd_run.sh轻松实现自动命令运行操作。

请参阅图3,基于同一发明构思,本发明另一实施例提出的机群命令运行系统,应用于Linux/Unix系统中,应用于白板软件中,所述系统包括:

获取模块,用于获取机群中多台机器的IP及登录信息,并根据每台所述机器的IP及登录信息创建机器列表文件;

生成模块,用于根据命令列表文件生成执行脚本,所述命令列表文件包括需要执行的命令;

传递调用模块,用于将所述机器列表文件中的每台所述机器的IP及登录信息依次传递给所述执行脚本,并调用所述执行脚本对所述机器列表文件中的每台所述机器执行所述需要执行的命令。

本实施例中,所述命令列表文件包括至少一个依序排列的命令行,且任一所述命令行均包括正则表达式和与所述正则表达式对应的需要执行的命令,所述传递调用模块还用于:

在所述机器列表文件中的每台所述机器中均调用所述执行脚本以获取上一个命令行中的需要执行的命令被执行后的输出信息;

在所述命令列表文件中的当前命令行中查找是否存在与所述输出信息对应的正则表达式;

若是,则执行与所述输出信息对应的正则表达式对应的需要执行的命令。

本实施例中,所述生成模块具体用于:

创建文件头代码块;

依次读取所述命令列表文件中的每个命令行,且每读取一个所述命令行,创建一个对应的代码块,直至所述命令列表文件中的所有命令行均被读取;

创建文件尾代码块。

本实施例中,所述传递调用模块还用于:

从所述机器列表文件中依次读取每台所述机器的IP及登录信息,且每读取一台所述机器的IP及登录信息,就将读取到的当前机器的IP及登录信息传递给所述执行脚本,并调用所述执行脚本对所述当前机器执行所述需要执行的命令。

本实施例中,所述系统还包括:

终止模块,用于判断到所述执行脚本对所述当前机器执行所述需要执行的命令的执行结果错误时,终止所述当前机器的命令运行,并输出失败日志。

本实施例提出的机群命令运行系统的实现原理和技术效果与本发明实施例中提出的机群命令运行方法相同,在此不予赘述。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

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