CN110968491B - 一种运维作业方法及系统 - Google Patents

一种运维作业方法及系统 Download PDF

Info

Publication number
CN110968491B
CN110968491B CN201911212517.6A CN201911212517A CN110968491B CN 110968491 B CN110968491 B CN 110968491B CN 201911212517 A CN201911212517 A CN 201911212517A CN 110968491 B CN110968491 B CN 110968491B
Authority
CN
China
Prior art keywords
script
server
middleware
platform
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911212517.6A
Other languages
English (en)
Other versions
CN110968491A (zh
Inventor
钟建华
周理
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Lingshiji Information Technology Co ltd
Original Assignee
Guangzhou Lingshiji Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Lingshiji Information Technology Co ltd filed Critical Guangzhou Lingshiji Information Technology Co ltd
Priority to CN201911212517.6A priority Critical patent/CN110968491B/zh
Publication of CN110968491A publication Critical patent/CN110968491A/zh
Application granted granted Critical
Publication of CN110968491B publication Critical patent/CN110968491B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种运维作业方法及系统,方法包括:作业平台获取运维人员从作业列表中点击的待执行的作业脚本,并将所述待执行的作业脚本发送给ansible中间件;所述ansible中间件将所述作业脚本发送至对应的服务器;所述服务器接收所述作业脚本后,执行所述作业脚本,并向ansible中间件返回服务器作业信息以及作业结果;所述ansible中间件将所述服务器作业信息发送至redis中间件进行缓存以及将所述作业结果返回至作业平台;所述作业平台根据本地预存的服务器信息对所述作业结果进行存储,以使得作业结果与服务器信息实现自动关联。

Description

一种运维作业方法及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种运维作业方法及系统。
背景技术
随着公司业务的发展,业务越来越多,所用到的服务器也随着越来越多。服务器多就会给运维人员的日常工作带来很多重复而繁琐运维任务,加大运维人员的工作量。
目前,运维人员一般用shell或其它工具登录到各个服务器,把事先写好的shell脚本或python脚本用工具一个一个的上传到各个服务器上,再一个一个的在各个服务器上执行,并把需要的输出结果一个一个的收集起来。
这种方式存在如下缺点:
1.运维人员要一个一个登录服务器、上传文件、执行、收集数据,造成很多重复的工作,浪费运维人员的时间。
2.运维人员一个一个的操作,可能会导致某个服务器漏操作,造成人为的失误。
3.手工上传的脚本文件在各服务器上可能会乱放,造成脚本文件混乱和执行脚本时可能执行错脚本。
4.没有一个统一的地方记录脚本执行日志,不能追溯某个人在什么时间用哪个脚本对哪些服务器执行什么操作和输出什么结果。
发明内容
针对上述问题,本发明的目的在于提供一种运维作业方法及系统,能够使得作业平台自动获取服务器信息,并通过作业平台授权管理作业脚本,批量执行作业脚本并自动收集作业脚本输出的数据。
本发明实施例提供了一种运维作业方法,包括:
作业平台获取运维人员从作业列表中点击的待执行的作业脚本,并将所述待执行的作业脚本发送给ansible中间件;
所述ansible中间件将所述作业脚本发送至对应的服务器;
所述服务器接收所述作业脚本后,执行所述作业脚本,并向ansible中间件返回服务器作业信息以及作业结果;
所述ansible中间件将所述服务器作业信息发送至redis中间件进行缓存以及将所述作业结果返回至作业平台;
所述作业平台根据本地预存的服务器信息对所述作业结果进行存储,以使得作业结果与服务器信息实现自动关联。
优选地,还包括:
所述服务器在初始化时,通过调用作业平台的API向作业平台传输参数;其中,所述参数至少包括服务器的IP;
所述作业平台根据所述参数向ansible中间件发起获取服务器信息的请求;
所述ansible中间件根据所述请求从服务器获取服务器信息,并将该所述服务器信息缓存至redis中间件以及向所述作业平台发送通知;
所述作业平台根据所述通知从所述redis中间件获取服务器信息进行保存。
优选地,还包括:
作业平台获取当前登录的运维人员的账号,并根据所述运维人员的账号向运维人员的作业列表配置对应权限的作业脚本;其中,管理员授权给运维人员对应的作业脚本的查看、修改、删除、执行的权限,如果运维人员如果没有对应的权限,在作业列表中无法执行对应的作业脚本。
优选地,在点击要执行的作业脚本后,会进入作业脚本操作界面,作业脚本操作界面有作业脚本的详细信息、执行记录、可操作功能;
在点击执行作业脚本后,会跳转到作业执行界面,作业执行界面包括供选择的服务器;
在选择服务器后,显示后台正在执行的业务操作信息。
优选地,在进入作业脚本操作界面后,还包括对作业脚本填入参数的操作。
本发明实施例还提供了一种运维作业系统,包括作业平台、ansible中间件、redis中间件以及至少一个拥有执行作业的服务器;其中,
所述作业平台,用于获取运维人员从作业列表中点击的待执行的作业脚本,并将所述待执行的作业脚本发送给ansible中间件;
所述ansible中间件,用于将所述作业脚本发送至对应的服务器;
所述服务器,用于接收所述作业脚本后,执行所述作业脚本,并向ansible中间件返回服务器作业信息以及作业结果;
所述ansible中间件,用于将所述服务器作业信息发送至redis中间件进行缓存以及将所述作业结果返回至作业平台;
所述作业平台,还用于根据本地预存的服务器信息对所述作业结果进行存储,以使得作业结果与服务器信息实现自动关联。
优选地,所述服务器,还用于在初始化时,通过调用作业平台的API向作业平台传输参数;其中,所述参数至少包括服务器的IP;
所述作业平台,还用于根据所述参数向ansible中间件发起获取服务器信息的请求;
所述ansible中间件,还用于根据所述请求从服务器获取服务器信息,并将该所述服务器信息缓存至redis中间件以及向所述作业平台发送通知;
所述作业平台,还用于根据所述通知从所述redis中间件获取服务器信息进行保存。
优选地,所述作业平台,还用于获取当前登录的运维人员的账号,并根据所述运维人员的账号向运维人员的作业列表配置对应权限的作业脚本;其中,管理员授权给运维人员对应的作业脚本的查看、修改、删除、执行的权限,如果运维人员如果没有对应的权限,在作业列表中无法执行对应的作业脚本。
优选地,在点击要执行的作业脚本后,会进入作业脚本操作界面,作业脚本操作界面有作业脚本的详细信息、执行记录、可操作功能;
在点击执行作业脚本后,会跳转到作业执行界面,作业执行界面包括供选择的服务器;
在选择服务器后,显示后台正在执行的业务操作信息。
优选地,在进入作业脚本操作界面后,还包括对作业脚本填入参数的操作。
上述一个实施例中,作业脚本的操作以及作业结果的接收保存都是基于作业平台实现的,因此可以实现作业脚本的批量执行以及作业结果的批量接收。此外,由于作业平台还存储有相关的服务器信息,因此可以统一记录脚本执行日志,能追溯某个人在什么时间用那个作业脚本对哪些服务器执行什么操作和输出什么结果。即基于本实施例,能够减少运维人员做重复工作造成人力资源的浪费,减少运维人员出错的机率,增加作业脚本对服务器的安全操作。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的运维作业方法的一种流程示意图。
图2是本发明第一实施例提供的运维作业方法的另一种流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明第一实施例提供了一种运维作业方法,包括:
S101,作业平台获取运维人员从作业列表中点击的待执行的作业脚本,并将所述待执行的作业脚本发送给ansible中间件。
在本实施例中,运维人员在登录作业平台后可以查看作业列表内的作业脚本,并对有权限的作业脚本进行操作。其中,管理员拥有所有作业脚本操作的最高权限,管理员可以将作业脚本授权给对应的运维人员,只有有权限的运维人员才可以在其作业列表中对作业脚本进行操作(例如查看、修改、删除、执行),这样实现了运维人员可以管理各自的作业脚本。而且,运维人员在执行作业脚本前会先发起执行流程,待管理员审核通过后才能执行对应的作业脚本。
在本实施例中,运维人员点击要执行的作业脚本,进入作业脚本操作界面,界面有作业脚本的详细信息、执行记录、可操作功能。然后运维人员点击执行,会跳转到作业执行界面。在作业执行界面,运维人员可以根据实际需要填入作业脚本的参数,如果没有需要填入的参数也可不填。然后运维人员选择执行作业的服务器后,点击开始执行。
S102,所述ansible中间件将所述作业脚本发送至对应的服务器。
S103,所述服务器接收所述作业脚本后,执行所述作业脚本,并向ansible中间件返回服务器作业信息以及作业结果。
S104,所述ansible中间件将所述服务器作业信息发送至redis中间件进行缓存以及将所述作业结果返回至作业平台。
S105,所述作业平台根据本地预存的服务器信息对所述作业结果进行存储,以使得作业结果与服务器信息实现自动关联。
在本实施例中,所述作业平台首先需要实现服务器信息的自动收集。
具体地,如图2所示,所述服务器在初始化时,会执行初始化脚本,通过调用作业平台的API向作业平台传输参数;其中,所述参数至少包括服务器的IP,此外还可以包括用户以及端口等。所述作业平台根据所述参数向ansible中间件发起获取服务器信息的请求;所述ansible中间件根据所述请求从服务器获取服务器信息,并将该所述服务器信息缓存至redis中间件以及向所述作业平台发送通知,所述作业平台在接收到所述通知后,可从所述redis中间件获取服务器信息进行保存,如此即实现了作业平台自动获取服务器信息。
在本实施例中,所述作业平台在获得服务器的作业结果后,可根据本地保存的服务器信息对作业结果进行收集存储。
上述实施例中,作业脚本的操作以及作业结果的接收保存都是基于作业平台实现的,因此可以实现作业脚本的批量执行以及作业结果的批量接收。此外,由于作业平台还存储有相关的服务器信息,因此可以统一记录脚本执行日志,能追溯某个人在什么时间用那个作业脚本对哪些服务器执行什么操作和输出什么结果。即基于本实施例,能够减少运维人员做重复工作造成人力资源的浪费,减少运维人员出错的机率,增加作业脚本对服务器的安全操作。
本发明第二实施例还提供了一种运维作业系统,包括作业平台、ansible中间件、redis中间件以及至少一个拥有执行作业的服务器;其中,
所述作业平台,用于获取运维人员从作业列表中点击的待执行的作业脚本,并将所述待执行的作业脚本发送给ansible中间件;
所述ansible中间件,用于将所述作业脚本发送至对应的服务器;
所述服务器,用于接收所述作业脚本后,执行所述作业脚本,并向ansible中间件返回服务器作业信息以及作业结果;
所述ansible中间件,用于将所述服务器作业信息发送至redis中间件进行缓存以及将所述作业结果返回至作业平台;
所述作业平台,还用于根据本地预存的服务器信息对所述作业结果进行存储,以使得作业结果与服务器信息实现自动关联。
优选地,
所述服务器,还用于在初始化时,通过调用作业平台的API向作业平台传输参数;其中,所述参数至少包括服务器的IP;
所述作业平台,还用于根据所述参数向ansible中间件发起获取服务器信息的请求;
所述ansible中间件,还用于根据所述请求从服务器获取服务器信息,并将该所述服务器信息缓存至redis中间件以及向所述作业平台发送通知;
所述作业平台,还用于根据所述通知从所述redis中间件获取服务器信息进行保存。
优选地,所述作业平台,还用于获取当前登录的运维人员的账号,并根据所述运维人员的账号向运维人员的作业列表配置对应权限的作业脚本;其中,管理员授权给运维人员对应的作业脚本的查看、修改、删除、执行的权限,如果运维人员如果没有对应的权限,在作业列表中无法执行对应的作业脚本。
优选地,在点击要执行的作业脚本后,会进入作业脚本操作界面,作业脚本操作界面有作业脚本的详细信息、执行记录、可操作功能;
在点击执行作业脚本后,会跳转到作业执行界面,作业执行界面包括供选择的服务器;
在选择服务器后,显示后台正在执行的业务操作信息。
优选地,在进入作业脚本操作界面后,还包括对作业脚本填入参数的操作。
本实施例中,作业脚本的操作以及作业结果的接收保存都是基于作业平台实现的,因此可以实现作业脚本的批量执行以及作业结果的批量接收。此外,由于作业平台还存储有相关的服务器信息,因此可以统一记录脚本执行日志,能追溯某个人在什么时间用那个作业脚本对哪些服务器执行什么操作和输出什么结果。即基于本实施例,能够减少运维人员做重复工作造成人力资源的浪费,减少运维人员出错的机率,增加作业脚本对服务器的安全操作。
需说明的是,以上所描述的实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (8)

1.一种运维作业方法,其特征在于,包括:
作业平台获取运维人员从作业列表中点击的待执行的作业脚本,并将所述待执行的作业脚本发送给ansible中间件;
所述ansible中间件将所述作业脚本发送至对应的服务器;
所述服务器接收所述作业脚本后,执行所述作业脚本,并向ansible中间件返回服务器作业信息以及作业结果;
所述ansible中间件将所述服务器作业信息发送至redis中间件进行缓存以及将所述作业结果返回至作业平台;
所述作业平台根据本地预存的服务器信息对所述作业结果进行存储;其中,还包括:
所述服务器在初始化时,通过调用作业平台的API向作业平台传输参数;其中,所述参数至少包括服务器的IP;
所述作业平台根据所述参数向ansible中间件发起获取服务器信息的请求;
所述ansible中间件根据所述请求从服务器获取服务器信息,并将该所述服务器信息缓存至redis中间件以及向所述作业平台发送通知;
所述作业平台根据所述通知从所述redis中间件获取服务器信息进行保存。
2.根据权利要求1所述的运维作业方法,其特征在于,还包括:
作业平台获取当前登录的运维人员的账号,并根据所述运维人员的账号向运维人员的作业列表配置对应权限的作业脚本;其中,管理员授权给运维人员对应的作业脚本的查看、修改、删除、执行的权限,如果运维人员如果没有对应的权限,在作业列表中无法执行对应的作业脚本。
3.根据权利要求1所述的运维作业方法,其特征在于,在点击要执行的作业脚本后,会进入作业脚本操作界面,作业脚本操作界面有作业脚本的详细信息、执行记录、可操作功能;
在点击执行作业脚本后,会跳转到作业执行界面,作业执行界面包括供选择的服务器;
在选择服务器后,显示后台正在执行的业务操作信息。
4.根据权利要求3所述的运维作业方法,其特征在于,在进入作业脚本操作界面后,还包括对作业脚本填入参数的操作。
5.一种运维作业系统,其特征在于,包括作业平台、ansible中间件、redis中间件以及至少一个拥有执行作业的服务器;其中,
所述作业平台,用于获取运维人员从作业列表中点击的待执行的作业脚本,并将所述待执行的作业脚本发送给ansible中间件;
所述ansible中间件,用于将所述作业脚本发送至对应的服务器;
所述服务器,用于接收所述作业脚本后,执行所述作业脚本,并向ansible中间件返回服务器作业信息以及作业结果;
所述ansible中间件,用于将所述服务器作业信息发送至redis中间件进行缓存以及将所述作业结果返回至作业平台;
所述作业平台,还用于根据本地预存的服务器信息对所述作业结果进行存储;其中,
所述服务器,还用于在初始化时,通过调用作业平台的API向作业平台传输参数;其中,所述参数至少包括服务器的IP;
所述作业平台,还用于根据所述参数向ansible中间件发起获取服务器信息的请求;
所述ansible中间件,还用于根据所述请求从服务器获取服务器信息,并将该所述服务器信息缓存至redis中间件以及向所述作业平台发送通知;
所述作业平台,还用于根据所述通知从所述redis中间件获取服务器信息进行保存。
6.根据权利要求5所述的运维作业系统,其特征在于,
所述作业平台,还用于获取当前登录的运维人员的账号,并根据所述运维人员的账号向运维人员的作业列表配置对应权限的作业脚本;其中,管理员授权给运维人员对应的作业脚本的查看、修改、删除、执行的权限,如果运维人员如果没有对应的权限,在作业列表中无法执行对应的作业脚本。
7.根据权利要求5所述的运维作业系统,其特征在于,在点击要执行的作业脚本后,会进入作业脚本操作界面,作业脚本操作界面有作业脚本的详细信息、执行记录、可操作功能;
在点击执行作业脚本后,会跳转到作业执行界面,作业执行界面包括供选择的服务器;
在选择服务器后,显示后台正在执行的业务操作信息。
8.根据权利要求7所述的运维作业系统,其特征在于,在进入作业脚本操作界面后,还包括对作业脚本填入参数的操作。
CN201911212517.6A 2019-11-28 2019-11-28 一种运维作业方法及系统 Active CN110968491B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911212517.6A CN110968491B (zh) 2019-11-28 2019-11-28 一种运维作业方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911212517.6A CN110968491B (zh) 2019-11-28 2019-11-28 一种运维作业方法及系统

Publications (2)

Publication Number Publication Date
CN110968491A CN110968491A (zh) 2020-04-07
CN110968491B true CN110968491B (zh) 2021-08-03

Family

ID=70032493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911212517.6A Active CN110968491B (zh) 2019-11-28 2019-11-28 一种运维作业方法及系统

Country Status (1)

Country Link
CN (1) CN110968491B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114625539B (zh) * 2022-03-22 2024-04-05 中国平安人寿保险股份有限公司 脚本工具执行方法、装置、电子设备集群及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185737A (zh) * 2011-05-10 2011-09-14 中兴通讯股份有限公司 一种自动获取设备信息的方法及系统
CN110276594A (zh) * 2019-06-21 2019-09-24 深圳前海微众银行股份有限公司 一种基于Ansible的银行业务运维系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106055486A (zh) * 2016-08-19 2016-10-26 浪潮(北京)电子信息产业有限公司 一种分布式文件系统的自动化运维方法及平台
CN110309043A (zh) * 2018-03-20 2019-10-08 勤智数码科技股份有限公司 一种用于it系统的分布式自动化运维方法和平台

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185737A (zh) * 2011-05-10 2011-09-14 中兴通讯股份有限公司 一种自动获取设备信息的方法及系统
CN110276594A (zh) * 2019-06-21 2019-09-24 深圳前海微众银行股份有限公司 一种基于Ansible的银行业务运维系统及方法

Also Published As

Publication number Publication date
CN110968491A (zh) 2020-04-07

Similar Documents

Publication Publication Date Title
CN109889381B (zh) 基于堡垒机的自动化配置管理方法及装置
US10445335B2 (en) Computing environment connectivity system
EP3617961A1 (en) Intelligent adaptor service in unified automation platforms for robotic process automation
EP2661014A1 (en) Polling sub-system and polling method for communication network system and communication apparatus
US11392873B2 (en) Systems and methods for simulating orders and workflows in an order entry and management system to test order scenarios
CN109660426B (zh) 监控方法及系统、计算机可读介质和电子设备
WO2019051948A1 (zh) 监控数据的处理方法、设备、服务器及存储介质
CN109246201B (zh) 云资源交付方法、处理器以及存储介质
CN111177112A (zh) 基于运维管理系统的数据库阻断方法、装置及电子设备
CN110245020B (zh) 基于多个取证设备的手机内容取证方法和系统
CN104536890A (zh) 测试系统、方法和装置
CN111130922A (zh) 一种机载信息安全自动化测试方法及测试平台
CN104991821A (zh) 批量处理监控任务的方法及装置
US8862939B2 (en) Network system and management server
CN103200022B (zh) 一种数据下载异常处理方法、设备及系统
CN109542647B (zh) 信息发送管理方法及装置、电子设备、存储介质
CN110968491B (zh) 一种运维作业方法及系统
US20190384691A1 (en) Methods for providing an enterprise synthetic monitoring framework
US20240289249A1 (en) Method and system for testing automation in marketplace
CN111464350A (zh) 一种管理异构品牌网络设备的方法及系统
WO2016091141A1 (zh) 信息采集方法及装置
US9542171B2 (en) Managing an application modification process
CN111694671B (zh) 大数据组件管理方法、装置、服务器、电子设备及系统
CN115543491A (zh) 微服务处理方法和装置
CN113032054A (zh) 一种服务执行方法、装置、存储介质及电子装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant