IT之道-艾锑知道

您当前位置: 主页 > 资讯动态 > IT知识库 >

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


2020-04-02 17:22 作者:艾锑无限 浏览量:
从打破鸡蛋这个故事中我们能学到什么
 
大多数管理者的困境
 
https://wx1.sinaimg.cn/large/44bf5e1aly4gdd635clxwj20x90k5mza.jpg
 
作为一名专业的教练,我经常会被问到:
教练,我的团队沟通不畅该怎么办?
教练,我的团队执行力不强要如何处理?
教练,我的团队里没有人才可用要如何做呢?
教练,我的团队士气很低怎样激励他们呢?
教练,我的团队经常达不成目标能给些建议吗?
教练,我的团队没有凝聚力有什么好的方法吗?
教练,我的团队没有能量,我要怎么给他们赋能呢?
……
 
教练与企业管理者的对话:
 
https://wx1.sinaimg.cn/large/44bf5e1aly4gdd635pjyij218x0tz4qq.jpg

每当这个时候,我都会问这些企业的负责人,
 
一个鸡蛋如果从外给予压力,最终会怎什么呢?
他们有的说,会形成碎鸡蛋,也有人说,打破了可以做成炒鸡蛋,还有人说,可以用鸡蛋清敷在脸上做面膜,人类的想象力总是让人出乎意料……
我又问到,
 
那如果从里面给到动力,最后破壳而出,又会发生什么呢?
 
https://wx4.sinaimg.cn/large/44bf5e1aly4gdd635dozzj20go0c3443.jpg
 
所有人的回答几乎都是一样的,一只有着生命力的小鸡.
我又问了一个问题,
 
我说假如你可以让你的员工具备破壳而出的生命力,你觉得企业会发生什么呢?
他们说,那简直太棒了,每个人都能自发地去做事,而且带着激情和动力,整个企业一定朝气蓬勃,充满斗志,但是,教练,我怎么做才能让他们具备这样的生命力呢?
 
我说,这是一个好问题,你觉得母鸡是怎么做的呢?
他们说,母鸡每天都会坐在鸡蛋上,哪都不去玩,全身心投入,给到鸡蛋持续的关怀和温度,并且坚持21天,直到小鸡可以从蛋壳中走出来.
 
https://wx4.sinaimg.cn/large/44bf5e1aly4gdd635b36jj20u00mitc2.jpg
 
那母鸡孵化小鸡这个过程给到你什么启发呢?
 
他们说,我也需要给到自己团队这样的关怀和支持,用心去孵化他们内在的动力,帮助他们释放出潜能,为他们创造适合他们成长的环境和土壤,以及给予更多的阳光和水,我相信他们一定能由内而外的活出有能量的状态,到那时无论什么困难和挑战都会迎刃而解.
 
每个人都是自己生命中的天才
https://wx2.sinaimg.cn/large/44bf5e1aly4gdd6358zffj20rs0kcgna.jpg
 
他们分享完我就直接鼓掌,我一直都认为,每个人都是自己生命中的天才,而且我也是这样去践行的,无论是多大的企业家,还是最普通的员工都可以活出自己内在的智慧,并且解决生命中的困境.
马斯洛也曾说过类似的话,他说“人并不是被浇铸或塑造成人的,而是依靠自身实现潜能的,环境对人的成长象土壤、阳光和水对于植物一样,只能促进潜能的现实化。”
 
生命生长需要时间
https://wx1.sinaimg.cn/large/44bf5e1aly4gdd635aaiej218g0p0jta.jpg


无论是打破一个鸡蛋,还是一花一世界,万物皆具潜能,只是我们只盯在相上,只盯在结果上,却没有为结果投入更多的时间和耐心,即使我们今天看到的太阳的光芒,也不是今天太阳发出来的.
根据科学家的计算,从太阳发出光到地球需要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)的相关信息
 

相关文章

IT外包服务
二维码 关闭