IT運(yùn)維 | 基于Windows下自動(dòng)化運(yùn)維腳本Autoit
2020-04-02 17:22 作者:艾銻無(wú)限 瀏覽量:
從打破雞蛋這個(gè)故事中我們能學(xué)到什么
大多數(shù)管理者的困境
作為一名專(zhuān)業(yè)的教練,我經(jīng)常會(huì)被問(wèn)到:
教練,我的團(tuán)隊(duì)溝通不暢該怎么辦?
教練,我的團(tuán)隊(duì)執(zhí)行力不強(qiáng)要如何處理?
教練,我的團(tuán)隊(duì)里沒(méi)有人才可用要如何做呢?
教練,我的團(tuán)隊(duì)士氣很低怎樣激勵(lì)他們呢?
教練,我的團(tuán)隊(duì)經(jīng)常達(dá)不成目標(biāo)能給些建議嗎?
教練,我的團(tuán)隊(duì)沒(méi)有凝聚力有什么好的方法嗎?
教練,我的團(tuán)隊(duì)沒(méi)有能量,我要怎么給他們賦能呢?
……
教練與企業(yè)管理者的對(duì)話:
每當(dāng)這個(gè)時(shí)候,我都會(huì)問(wèn)這些企業(yè)的負(fù)責(zé)人,
一個(gè)雞蛋如果從外給予壓力,最終會(huì)怎什么呢?
他們有的說(shuō),會(huì)形成碎雞蛋,也有人說(shuō),打破了可以做成炒雞蛋,還有人說(shuō),可以用雞蛋清敷在臉上做面膜,人類(lèi)的想象力總是讓人出乎意料……
我又問(wèn)到,
那如果從里面給到動(dòng)力,最后破殼而出,又會(huì)發(fā)生什么呢?
所有人的回答幾乎都是一樣的,一只有著生命力的小雞.
我又問(wèn)了一個(gè)問(wèn)題,
我說(shuō)假如你可以讓你的員工具備破殼而出的生命力,你覺(jué)得企業(yè)會(huì)發(fā)生什么呢?
他們說(shuō),那簡(jiǎn)直太棒了,每個(gè)人都能自發(fā)地去做事,而且?guī)еで楹蛣?dòng)力,整個(gè)企業(yè)一定朝氣蓬勃,充滿斗志,但是,教練,我怎么做才能讓他們具備這樣的生命力呢?
我說(shuō),這是一個(gè)好問(wèn)題,你覺(jué)得母雞是怎么做的呢?
他們說(shuō),母雞每天都會(huì)坐在雞蛋上,哪都不去玩,全身心投入,給到雞蛋持續(xù)的關(guān)懷和溫度,并且堅(jiān)持21天,直到小雞可以從蛋殼中走出來(lái).
那母雞孵化小雞這個(gè)過(guò)程給到你什么啟發(fā)呢?
他們說(shuō),我也需要給到自己團(tuán)隊(duì)這樣的關(guān)懷和支持,用心去孵化他們內(nèi)在的動(dòng)力,幫助他們釋放出潛能,為他們創(chuàng)造適合他們成長(zhǎng)的環(huán)境和土壤,以及給予更多的陽(yáng)光和水,我相信他們一定能由內(nèi)而外的活出有能量的狀態(tài),到那時(shí)無(wú)論什么困難和挑戰(zhàn)都會(huì)迎刃而解.
每個(gè)人都是自己生命中的天才
他們分享完我就直接鼓掌,我一直都認(rèn)為,每個(gè)人都是自己生命中的天才,而且我也是這樣去踐行的,無(wú)論是多大的企業(yè)家,還是最普通的員工都可以活出自己內(nèi)在的智慧,并且解決生命中的困境.
馬斯洛也曾說(shuō)過(guò)類(lèi)似的話,他說(shuō)“人并不是被澆鑄或塑造成人的,而是依靠自身實(shí)現(xiàn)潛能的,環(huán)境對(duì)人的成長(zhǎng)象土壤、陽(yáng)光和水對(duì)于植物一樣,只能促進(jìn)潛能的現(xiàn)實(shí)化。”
生命生長(zhǎng)需要時(shí)間
無(wú)論是打破一個(gè)雞蛋,還是一花一世界,萬(wàn)物皆具潛能,只是我們只盯在相上,只盯在結(jié)果上,卻沒(méi)有為結(jié)果投入更多的時(shí)間和耐心,即使我們今天看到的太陽(yáng)的光芒,也不是今天太陽(yáng)發(fā)出來(lái)的.
根據(jù)科學(xué)家的計(jì)算,從太陽(yáng)發(fā)出光到地球需要8分20秒左右的時(shí)間,這就意味著,當(dāng)我們生命中出現(xiàn)了至暗時(shí)刻,不用著急,也不用慌張,因?yàn)樘?yáng)光在路上,給它一點(diǎn)時(shí)間,至暗終會(huì)迎來(lái)光明.
以下文章由IT外包服務(wù)商北京艾銻無(wú)限科技發(fā)展公司整理
IT運(yùn)維 | 基于Windows下自動(dòng)化運(yùn)維腳本Autoit
一、運(yùn)維需求分析:
IT運(yùn)維自動(dòng)化中的操作,比如
服務(wù)器安裝部署,應(yīng)急操作,服務(wù)切換等偏操作類(lèi)的
服務(wù)器維護(hù)工作,歸到最底層就是一個(gè)個(gè)腳本按既定的流程,通過(guò)代理(或無(wú)代理的SSH方式)遠(yuǎn)程調(diào)用執(zhí)行。同時(shí),為了提高使用效率提供流程編排,豐富操作可視化,再通常CMDB關(guān)聯(lián)監(jiān)控,流程審批等工具實(shí)現(xiàn)工具間的互聯(lián)互通,形成管理上的閉環(huán)。對(duì)于最底層的腳本,目前可供我們選擇的有很多,比如常用的python,shell,bat。在實(shí)際實(shí)踐中,windows操作系統(tǒng)下的
自動(dòng)化運(yùn)維比linux更麻煩一些。因?yàn)樵趌inux下的日常
系統(tǒng)運(yùn)維操作的就是一些命令的組合,通過(guò)python或shell可以比較快的實(shí)現(xiàn)。而Windows
系統(tǒng)維護(hù)則不同,我們的習(xí)慣是鼠標(biāo)在前端工具上操作,這不是python等腳本語(yǔ)言所不擅長(zhǎng)的,如果要用python等腳本實(shí)現(xiàn),需要運(yùn)維人員在思維進(jìn)行轉(zhuǎn)變,將前端的界面操作轉(zhuǎn)換轉(zhuǎn)化為后臺(tái)可運(yùn)行的腳本語(yǔ)言實(shí)現(xiàn)。另外,當(dāng)遇到一些不支持二次開(kāi)發(fā)的商業(yè)軟件,上面的轉(zhuǎn)換就會(huì)變得無(wú)解。比如:
- 每天需要在一個(gè)現(xiàn)有的C/S軟件上進(jìn)行開(kāi)關(guān)操作,但這個(gè)軟件工具又不提供任何接口;
- 要在幾十臺(tái)機(jī)器上給病毒軟件打個(gè)補(bǔ)丁,但軟件廠家只提供一個(gè)在軟件菜單上點(diǎn)擊按鈕的方式來(lái)實(shí)現(xiàn)升級(jí);
上面兩種情況,有幾個(gè)特點(diǎn):
-
windows操作系統(tǒng)上的軟件操作;
-
這個(gè)軟件不提供調(diào)用接口或調(diào)用接口的成本高;
-
主要是通過(guò)鼠標(biāo)在多個(gè)界面上來(lái)回切換,鍵盤(pán)輸入的操作;
在一些
IT外包公司的工程師使用autoit腳本語(yǔ)言解決這些問(wèn)題,autoit腳本是一種在WINDOWS下模擬手工操作的腳本語(yǔ)言,可以作為需要在WINDWOS界上進(jìn)行操作的自動(dòng)化,比如:
-
運(yùn)行 Windows 及 DOS 下的可執(zhí)行文件
-
模擬鍵擊動(dòng)作(支持大多數(shù)的鍵盤(pán)布局)
-
模擬鼠標(biāo)移動(dòng)和點(diǎn)擊動(dòng)作。
-
對(duì)窗口進(jìn)行移動(dòng)、調(diào)整大小和其它操作。
-
直接與窗口的“控件“交互(設(shè)置/獲取 文字、移動(dòng)、關(guān)閉,等等)
-
配合剪貼板進(jìn)行剪切/粘貼文本操作
-
另外,它還附有大量獲取數(shù)據(jù)的宏
二、語(yǔ)言概況:
1、一些基本的語(yǔ)法:
語(yǔ)法有很多,具體可以到網(wǎng)上下載一個(gè)幫助文檔,下面只摘常用的幾點(diǎn):
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, "倒數(shù)", $i)
Next
MsgBox(0,"", "循環(huán)結(jié)束")
4)While...WEnd
While $i<3
MsgBox(0,"example",$i)
$i = $i + 1
WEnd
MsgBox(0,"", "循環(huán)結(jié)束")
5)Do...Until
Do
MsgBox(0, "目前變量 $i 的值是: ", $i)
$i = $i + 1
Until $i = 10
6) 函數(shù)
$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
注:縮寫(xiě)代替:#cs 和 #ce。
8) 嵌入文件
#include
9)參數(shù):
AutoIt3.exe myscript.au3 參數(shù)1 "這是一個(gè)字符串型參數(shù)"
$CmdLine[0] 等價(jià)于... 2
$CmdLine[1] 等價(jià)于... 參數(shù)1
$CmdLine[2] 等價(jià)于...這是一個(gè)字符串型參數(shù)
@ScriptName 等價(jià)于... myscript.au3
$CmdLineRaw,它保存著完整的未被拆分的命令行語(yǔ)句,等價(jià)于...myscript.au3 參數(shù)1 "這是一個(gè)字符串型參數(shù)"
2、常用的一些方法
1)SEND(對(duì)指定窗口發(fā)送鍵盤(pán)命令時(shí)會(huì)用到)
'^':表示告知 AutoIt 要發(fā)送一個(gè) CONTROL 鍵擊動(dòng)作,因此語(yǔ)句 Send("^!a") 的意思是發(fā)送按鍵 "CTRL+ALT+a"。以下是一些常用的鍵盤(pán)按鍵:
Send 命令(無(wú)標(biāo)志參數(shù)) |
鍵擊結(jié)果 |
{!} |
! |
{#} |
# |
{+} |
+ |
{^} |
^ |
{{} |
{ |
{}} |
} |
{SPACE} |
空格 |
{ENTER} |
主鍵盤(pán)區(qū)的 回車(chē)鍵 |
{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} |
左徽標(biāo)鍵 |
{RWIN} |
右徽標(biāo)鍵 |
{NUMLOCK on} |
NUMLOCK (on/off/toggle)(開(kāi)/關(guān)/切換) |
{CAPSLOCK off} |
CAPSLOCK (on/off/toggle)(開(kāi)/關(guān)/切換) |
{SCROLLLOCK toggle} |
SCROLLLOCK (on/off/toggle)(開(kāi)/關(guān)/切換) |
{CTRLBREAK} |
Ctrl+Break |
{PAUSE} |
PAUSE |
{NUMPAD0} - {NUMPAD9} |
數(shù)字鍵盤(pán)上的 數(shù)字鍵 |
{NUMPADMULT} |
數(shù)字鍵盤(pán)上的 乘號(hào) |
{NUMPADADD} |
數(shù)字鍵盤(pán)上的 加號(hào) |
{NUMPADSUB} |
數(shù)字鍵盤(pán)上的 減號(hào) |
{NUMPADDIV} |
數(shù)字鍵盤(pán)上的 除號(hào) |
{NUMPADDOT} |
數(shù)字鍵盤(pán)上的 點(diǎn)號(hào) |
{NUMPADENTER} |
數(shù)字鍵盤(pán)上的 回車(chē)鍵 |
{APPSKEY} |
Windows 應(yīng)用程序鍵 |
{LALT} |
左 ALT 鍵 |
{RALT} |
右 ALT 鍵 |
{LCTRL} |
左 CTRL 鍵 |
{RCTRL} |
右 CTRL 鍵 |
{LSHIFT} |
左 Shift 鍵 |
{RSHIFT} |
右 Shift 鍵 |
{SLEEP} |
系統(tǒng)休眠(SLEEP)鍵 |
{ALTDOWN} |
按住 ALT 鍵直到發(fā)送 {ALTUP} 為止 |
{SHIFTDOWN} |
按住 SHIFT 鍵直到發(fā)送 {SHIFTUP} 為止 |
{CTRLDOWN} |
按住 CTRL 鍵直到發(fā)送 {CTRLUP} 為止 |
{LWINDOWN} |
按住左徽標(biāo)鍵直到發(fā)送 {LWINUP} 為止 |
{RWINDOWN} |
按住右徽標(biāo)鍵直到發(fā)送 {RWINUP} 為止 |
{ASC nnnn} |
發(fā)送 ALT+nnnn 組合鍵 |
2、鼠標(biāo)MouseClick
; 在當(dāng)前位置執(zhí)行一次雙擊
MouseClick("left")
MouseClick("left")
; 在位置 0,500 雙擊
MouseClick("left", 0, 500, 2)
3、RUN
運(yùn)行外部程序。
Run ( "文件名" [, "工作目錄" [, 標(biāo)志]] )
Run("Notepad.exe", "", @SW_MAXIMIZE)
4、ProcessClose
結(jié)束某個(gè)進(jìn)程。
ProcessClose ( "進(jìn)程名" )
ProcessClose("notepad.exe")
; 返回記事本程序的 PID,若未發(fā)現(xiàn)該進(jìn)程則返回值為 0。
$PID = ProcessExists("notepad.exe")
If $PID Then ProcessClose($PID)
ProcessExists
注:ProcessExists ( "進(jìn)程名" )的用法:
進(jìn)程名是指可執(zhí)行文件的名稱(chēng)(無(wú)需給出完整路徑),例如:"notepad.exe" 或 "winword.exe"
PID 是標(biāo)識(shí)進(jìn)程的唯一的數(shù)值。
為使 ProcessExists 函數(shù)能在 Windows NT 4.0 下工作,系統(tǒng)還需要一個(gè) DLL 文件(PSAPI.DLL,已包含在 AutoIt 的安裝目錄下)。
每隔 250 毫秒左右進(jìn)程將被檢測(cè)一次。
示例
If ProcessExists("notepad.exe") Then
MsgBox(0, "示例", "記事本運(yùn)行中。")
EndIf
5、WinWaitActive
暫停腳本的執(zhí)行直至指定窗口被激活(成為可活動(dòng)狀態(tài))為止。
WinWaitActive ( "窗口標(biāo)題", ["窗口文本"], [超時(shí)時(shí)間] )
參數(shù)
窗口標(biāo)題 |
目標(biāo)窗口標(biāo)題。 |
窗口文本 |
[可選參數(shù)] 目標(biāo)窗口文本。 |
超時(shí)時(shí)間 |
[可選參數(shù)] 以秒為單位。 |
返回值
成功: |
返回值為1。 |
失敗: |
返回值為0,說(shuō)明已超時(shí)。 |
;等待窗口 "無(wú)標(biāo)題" 出現(xiàn)并激活
WinWaitActive("無(wú)標(biāo)題")
;同上,但指定了等待時(shí)間為 5 秒
WinWaitActive("無(wú)標(biāo)題", "", 5)
6、MsgBox
通常用在調(diào)試當(dāng)中
MsgBox(0, "標(biāo)題", "內(nèi)容")
上面幾個(gè)命令用上,就能做一些簡(jiǎn)單的操作了,實(shí)際使用過(guò)程中,如果遇到一些操作可以查一下幫助文檔。下面這些是我作了一些匯總的函數(shù),可以找到了函數(shù)再去找?guī)椭臋n比較快
三、軟件安裝:
autoit3安裝后會(huì)有以下幾個(gè)子工具:
主要看這個(gè)工具:
AutoIt3.exe |
AutoIt 的主程序,腳本文件 僅需 它即可得以解釋運(yùn)行! |
AU3Info.exe |
AutoIt窗口信息工具,用來(lái)獲取WINDOWS工具的窗口的信息,比如: |
AutoIt.chm |
幫助文件。 |
script |
編輯工具 |
AU3Info.exe這個(gè)工具很重要,它能獲取:
-
窗口標(biāo)題(Window titles)
-
窗口上的文本文字(Text)(包括可見(jiàn)部分和不可見(jiàn)部分)
-
窗口的大小和坐標(biāo)位置
-
狀態(tài)欄的內(nèi)容
-
鼠標(biāo)指針的坐標(biāo)位置
-
鼠標(biāo)指針?biāo)赶笏氐念伾?/li>
-
鼠標(biāo)經(jīng)過(guò)的 控件(Control)的相關(guān)信息