IT运维​ | 基于Windows下自动化运维脚本Autoit

| 2020-04-03 14:04:28    标签:

从打破鸡蛋这个故事中我们能学到什么

 

大多数管理者的困境

 

 

作为一名专业的教练,我经常会被问到:

教练,我的团队沟通不畅该怎么办?

教练,我的团队执行力不强要如何处理?

教练,我的团队里没有人才可用要如何做呢?

教练,我的团队士气很低怎样激励他们呢?

教练,我的团队经常达不成目标能给些建议吗?

教练,我的团队没有凝聚力有什么好的方法吗?

教练,我的团队没有能量,我要怎么给他们赋能呢?

……

 

教练与企业管理者的对话:

 


每当这个时候,我都会问这些企业的负责人,

 

一个鸡蛋如果从外给予压力,最终会怎什么呢?

他们有的说,会形成碎鸡蛋,也有人说,打破了可以做成炒鸡蛋,还有人说,可以用鸡蛋清敷在脸上做面膜,人类的想象力总是让人出乎意料……

我又问到,

 

那如果从里面给到动力,最后破壳而出,又会发生什么呢?

 

 

所有人的回答几乎都是一样的,一只有着生命力的小鸡.

我又问了一个问题,

 

我说假如你可以让你的员工具备破壳而出的生命力,你觉得企业会发生什么呢?

他们说,那简直太棒了,每个人都能自发地去做事,而且带着激情和动力,整个企业一定朝气蓬勃,充满斗志,但是,教练,我怎么做才能让他们具备这样的生命力呢?

 

我说,这是一个好问题,你觉得母鸡是怎么做的呢?

他们说,母鸡每天都会坐在鸡蛋上,哪都不去玩,全身心投入,给到鸡蛋持续的关怀和温度,并且坚持21天,直到小鸡可以从蛋壳中走出来.

 

 

那母鸡孵化小鸡这个过程给到你什么启发呢?

 

他们说,我也需要给到自己团队这样的关怀和支持,用心去孵化他们内在的动力,帮助他们释放出潜能,为他们创造适合他们成长的环境和土壤,以及给予更多的阳光和水,我相信他们一定能由内而外的活出有能量的状态,到那时无论什么困难和挑战都会迎刃而解.

 

每个人都是自己生命中的天才

 

他们分享完我就直接鼓掌,我一直都认为,每个人都是自己生命中的天才,而且我也是这样去践行的,无论是多大的企业家,还是最普通的员工都可以活出自己内在的智慧,并且解决生命中的困境.

马斯洛也曾说过类似的话,他说“人并不是被浇铸或塑造成人的,而是依靠自身实现潜能的,环境对人的成长象土壤、阳光和水对于植物一样,只能促进潜能的现实化。”

 

生命生长需要时间

 

无论是打破一个鸡蛋,还是一花一世界,万物皆具潜能,只是我们只盯在相上,只盯在结果上,却没有为结果投入更多的时间和耐心,即使我们今天看到的太阳的光芒,也不是今天太阳发出来的.

根据科学家的计算,从太阳发出光到地球需要8分20秒左右的时间,这就意味着,当我们生命中出现了至暗时刻,不用着急,也不用慌张,因为太阳光在路上,给它一点时间,至暗终会迎来光明.

以下文章由IT外包服务商北京艾锑无限科技发展公司整理



IT运维 | 基于Windows下自动化运维脚本Autoit

 

一、运维需求分析:

IT运维自动化中的操作,比如服务器安装部署,应急操作,服务切换等偏操作类的服务器维护工作,归到最底层就是一个个脚本按既定的流程,通过代理(或无代理的SSH方式)远程调用执行。同时,为了提高使用效率提供流程编排,丰富操作可视化,再通常CMDB关联监控,流程审批等工具实现工具间的互联互通,形成管理上的闭环。对于最底层的脚本,目前可供我们选择的有很多,比如常用的python,shell,bat。在实际实践中,windows操作系统下的自动化运维比linux更麻烦一些。因为在linux下的日常系统运维操作的就是一些命令的组合,通过python或shell可以比较快的实现。而Windows系统维护则不同,我们的习惯是鼠标在前端工具上操作,这不是python等脚本语言所不擅长的,如果要用python等脚本实现,需要运维人员在思维进行转变,将前端的界面操作转换转化为后台可运行的脚本语言实现。另外,当遇到一些不支持二次开发的商业软件,上面的转换就会变得无解。比如:

- 每天需要在一个现有的C/S软件上进行开关操作,但这个软件工具又不提供任何接口;

- 要在几十台机器上给病毒软件打个补丁,但软件厂家只提供一个在软件菜单上点击按钮的方式来实现升级;

上面两种情况,有几个特点:

  • windows操作系统上的软件操作;

  • 这个软件不提供调用接口或调用接口的成本高;

  • 主要是通过鼠标在多个界面上来回切换,键盘输入的操作;

在一些IT外包公司的工程师使用autoit脚本语言解决这些问题,autoit脚本是一种在WINDOWS下模拟手工操作的脚本语言,可以作为需要在WINDWOS界上进行操作的自动化,比如:

  • 运行 Windows 及 DOS 下的可执行文件

  • 模拟键击动作(支持大多数的键盘布局)

  • 模拟鼠标移动和点击动作。

  • 对窗口进行移动、调整大小和其它操作。

  • 直接与窗口的“控件“交互(设置/获取 文字、移动、关闭,等等)

  • 配合剪贴板进行剪切/粘贴文本操作

  • 另外,它还附有大量获取数据的宏

                                             

二、语言概况:

1、一些基本的语法:

语法有很多,具体可以到网上下载一个帮助文档,下面只摘常用的几点:

1)条件if … then ….else….endif

If $var > 10 Then

    MsgBox(0, "示例", $var & " 果真大于 10!^_^")

Else

    MsgBox(0, "示例", $var & " 居然小于 10!?-_-!")

EndIf

2)条件select

$var = 30

Select

     Case $var > 1 AND $var <= 10

         MsgBox(0, "示例", "$var 大于 1")

     Case $var > 10 AND $var <= 20

         MsgBox(0, "示例", "$var 大于 10")

     Case $var > 20 AND $var <= 30

         MsgBox(0, "示例", "$var 大于 20")

     Case $var > 30 AND $var <= 40

         MsgBox(0, "示例", "$var 大于 30")

     Case $var > 40

         MsgBox(0, "示例", "$var 大于 40")

EndSelect

3)FOR

For $i = 5 to 1 Step -1

    MsgBox(0, "倒数", $i)

Next

MsgBox(0,"", "循环结束")

4)While...WEnd

While $i<3

   MsgBox(0,"example",$i)

   $i = $i + 1

WEnd

MsgBox(0,"", "循环结束")

5)Do...Until

Do

    MsgBox(0, "目前变量 $i 的值是: ", $i)

    $i = $i + 1

Until $i = 10

6) 函数

$val = 10 

For $i = 1 To 10

     $doubled = MyDouble($val)

     MsgBox(0, "", $val & " 的两倍是 " & $doubled)

     $val = $doubled

Next

Exit

Func MyDouble($value)

     $value = $value * 2

     Return $value

EndFunc

7) 注释

单行: ;

多行:

#comments-start

...

...

#comments-end

注:缩写代替:#cs 和 #ce。

8) 嵌入文件

#include

 

9)参数:

AutoIt3.exe myscript.au3 参数1 "这是一个字符串型参数"

$CmdLine[0] 等价于... 2

$CmdLine[1] 等价于... 参数1

$CmdLine[2] 等价于...这是一个字符串型参数

@ScriptName 等价于... myscript.au3

$CmdLineRaw,它保存着完整的未被拆分的命令行语句,等价于...myscript.au3 参数1 "这是一个字符串型参数"

 

2、常用的一些方法

1)SEND(对指定窗口发送键盘命令时会用到)

'^':表示告知 AutoIt 要发送一个 CONTROL 键击动作,因此语句 Send("^!a") 的意思是发送按键 "CTRL+ALT+a"。以下是一些常用的键盘按键:

Send 命令(无标志参数)

键击结果

{!}

!

{#}

#

{+}

+

{^}

^

{{}

{

{}}

}

{SPACE}

空格

{ENTER}

主键盘区的 回车键

{ALT}

ALT

{BACKSPACE} 或 {BS}

退格

{DELETE} 或 {DEL}

删除(DELETE)

{UP}

向上箭头

{DOWN}

向下箭头

{LEFT}

向左箭头

{RIGHT}

向右箭头

{HOME}

HOME

{END}

END

{ESCAPE} 或 {ESC}

ESC键

{INSERT} 或 {INS}

INS(Insert)

{PGUP}

PageUp

{PGDN}

PageDown

{F1} - {F12}

功能键

{TAB}

TAB

{PRINTSCREEN}

Print Screen key

{LWIN}

左徽标键

{RWIN}

右徽标键

{NUMLOCK on}

NUMLOCK   (on/off/toggle)(开/关/切换)

{CAPSLOCK off}

CAPSLOCK   (on/off/toggle)(开/关/切换)

{SCROLLLOCK   toggle}

SCROLLLOCK   (on/off/toggle)(开/关/切换)

{CTRLBREAK}

Ctrl+Break

{PAUSE}

PAUSE

{NUMPAD0} -   {NUMPAD9}

数字键盘上的 数字键

{NUMPADMULT}

数字键盘上的 乘号

{NUMPADADD}

数字键盘上的 加号

{NUMPADSUB}

数字键盘上的 减号

{NUMPADDIV}

数字键盘上的 除号

{NUMPADDOT}

数字键盘上的 点号

{NUMPADENTER}

数字键盘上的 回车键

{APPSKEY}

Windows 应用程序键

{LALT}

左 ALT 键

{RALT}

右 ALT 键

{LCTRL}

左 CTRL 键

{RCTRL}

右 CTRL 键

{LSHIFT}

左 Shift 键

{RSHIFT}

右 Shift 键

{SLEEP}

系统休眠(SLEEP)键

{ALTDOWN}

按住 ALT 键直到发送 {ALTUP} 为止

{SHIFTDOWN}

按住 SHIFT 键直到发送 {SHIFTUP} 为止

{CTRLDOWN}

按住 CTRL 键直到发送 {CTRLUP} 为止

{LWINDOWN}

按住左徽标键直到发送 {LWINUP} 为止

{RWINDOWN}

按住右徽标键直到发送 {RWINUP} 为止

{ASC nnnn}

发送 ALT+nnnn 组合键

 

2、鼠标MouseClick

; 在当前位置执行一次双击

MouseClick("left")

MouseClick("left")

; 在位置 0,500 双击

MouseClick("left", 0, 500, 2)

 

3、RUN

运行外部程序。

Run ( "文件名" [, "工作目录" [, 标志]] )

Run("Notepad.exe", "", @SW_MAXIMIZE)

4、ProcessClose

结束某个进程。

ProcessClose ( "进程名" )

ProcessClose("notepad.exe")

 ; 返回记事本程序的 PID,若未发现该进程则返回值为 0。

$PID = ProcessExists("notepad.exe")

If $PID Then ProcessClose($PID)

ProcessExists

注:ProcessExists ( "进程名" )的用法:

进程名是指可执行文件的名称(无需给出完整路径),例如:"notepad.exe" 或 "winword.exe"

PID 是标识进程的唯一的数值。

为使 ProcessExists 函数能在 Windows NT 4.0 下工作,系统还需要一个 DLL 文件(PSAPI.DLL,已包含在 AutoIt 的安装目录下)。

每隔 250 毫秒左右进程将被检测一次。 

示例

If ProcessExists("notepad.exe") Then

    MsgBox(0, "示例", "记事本运行中。")

EndIf

5、WinWaitActive

暂停脚本的执行直至指定窗口被激活(成为可活动状态)为止。

WinWaitActive ( "窗口标题", ["窗口文本"], [超时时间] )

参数

 

窗口标题

目标窗口标题。

窗口文本

[可选参数] 目标窗口文本。

超时时间

[可选参数] 以秒为单位。

返回值

成功:

返回值为1。

失败:

返回值为0,说明已超时。


;等待窗口 "无标题" 出现并激活

WinWaitActive("无标题")

;同上,但指定了等待时间为 5 秒

WinWaitActive("无标题", "", 5)

 

6、MsgBox

通常用在调试当中

MsgBox(0, "标题", "内容")

 

上面几个命令用上,就能做一些简单的操作了,实际使用过程中,如果遇到一些操作可以查一下帮助文档。下面这些是我作了一些汇总的函数,可以找到了函数再去找帮助文档比较快

 

三、软件安装:

autoit3安装后会有以下几个子工具:

主要看这个工具:

AutoIt3.exe

AutoIt 的主程序,脚本文件 仅需 它即可得以解释运行!

AU3Info.exe

AutoIt窗口信息工具,用来获取WINDOWS工具的窗口的信息,比如:

AutoIt.chm

帮助文件。

script

编辑工具

AU3Info.exe这个工具很重要,它能获取:

  • 窗口标题(Window titles)

  • 窗口上的文本文字(Text)(包括可见部分和不可见部分)

  • 窗口的大小和坐标位置

  • 状态栏的内容

  • 鼠标指针的坐标位置

  • 鼠标指针所指象素的颜色值

  • 鼠标经过的 控件(Control)的相关信息