主頁 > 知識庫 > 讓Mac OS X系統(tǒng)啟動時執(zhí)行腳本的方法

讓Mac OS X系統(tǒng)啟動時執(zhí)行腳本的方法

熱門標簽:長治市400企業(yè)電話申請費用 電話機器人近幾年收費標準 在抖音做地圖標注用手機標 網(wǎng)絡外呼系統(tǒng)怎么樣 廈門語音電銷機器人價格 溫州鹿城地圖標注找誰 南昌crm外呼系統(tǒng)價格 ai外呼系統(tǒng)怎樣掛機賺錢 北京電話機器人哪家便宜
公司購買了Zoho公司的資產(chǎn)管理軟件AssetExplorer,該資產(chǎn)管理軟件可以通過在客戶機電腦上安裝Agent客戶端軟件收集客戶機的硬件及軟件信息。公司有若干臺iMac電腦,運行的是Mac OS X 10.6的系統(tǒng),由于AssetExplorer只支持Windows版本的Agent,對于其他系統(tǒng)的計算機需要通過在客戶端執(zhí)行bash腳本文件的方式,收集客戶機的信息并上傳到服務器。這就要求客戶機的Mac OS X系統(tǒng)啟動的時候能夠自動執(zhí)行腳本程序,而且要基于系統(tǒng)服務層面,用戶無需登錄,腳本也能在后臺運行,最好腳本程序后臺還能做到固定時間自動運行。

我們可以利用Mac OS X內(nèi)置的一種稱為Launch Daemon / Agent的機制來實現(xiàn)系統(tǒng)啟動時自動執(zhí)行腳本程序。Mac OS X從10.4 開始,采用 launchd進程來管理整個操作系統(tǒng)的服務及進程。傳統(tǒng)的UNIX 會使用 /etc/rc.* 或其他的機制來管理開機時要啟動的啟動服務,而現(xiàn)在的Mac OS X則使用launchd來管理,它的啟動服務稱為Launch Daemon / Agents。利用Launch Daemon / Agent,我們就可以令腳本程序在系統(tǒng)啟動的時候在后臺運行了。

•Launch Daemon和Launch Agent的區(qū)別

  Launch Daemon和Launch Agent 是同一種東西在不同應用范圍的名稱。Launch Daemon是系統(tǒng)級別的服務,稱為daemon,Launch Agent是用戶級別的服務,稱為agent,前者在開機時會加載,后者在用戶登錄后才會加載。所以我們采用Launch Daemon的方式運行腳本。

•從AssetExolorer導出腳本文件

  選擇掃描→孤立工作站審計→通過腳本掃描工作站→Mac導出腳本文件ae_scan_mac.sh,并修改腳本文件中的hostName="服務器IP地址或域名地址",并檢查portNo一項是否正確。

•創(chuàng)建plist配置文件

  Launchd進程需要讀取一個xml格式的plist配置文件,創(chuàng)建該文件并將其放置在/System/Library/LaunchDaemons/ 或者/Library/LaunchDaemons/目錄下??稍赪indows下預先創(chuàng)建該文件,需要使用支持Unix格式的文本編輯器(比如UltraEdit)創(chuàng)建該文件。
  
其中plist文件格式及每個字段的含義:
ae_scan_mac.plist文件范例:

XML/HTML Code復制內(nèi)容到剪貼板
  1. ?xml version="1.0" encoding="UTF-8"?>    
  2. !DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"     
  3.     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">    
  4. plist version="1.0">    
  5. dict>    
  6.     key>Label/key>    
  7.         string>com.manageengine.ae_scan_mac/string>    
  8.     key>Program/key>    
  9.     string>ae_scan_mac.sh/string>    
  10.     key>RunAtLoad/key>    
  11.          true/>    
  12.     key>WorkingDirectory/key>    
  13.         string>/Library/LaunchDaemons//string>    
  14.     key>KeepAlive/key>     
  15.         false/>     
  16.     key>StartCalendarInterval/key>     
  17.     dict>           
  18.         key>Hour/key>     
  19.         integer>11/integer>     
  20.         key>Minute/key>    
  21.         integer>0/integer>     
  22.     /dict>     
  23. /dict>    
  24. /plist>  


其中的關(guān)鍵字解釋:

1)Label(必選)
該項服務的名稱。
2)Program(ProgramArgument是必選的,在沒有ProgramArgument的情況下,必須要包含Program關(guān)鍵字)
指定可執(zhí)行文件的路徑和名稱。
3)RunAtLoad(可選)
標識launchd在加載完該項服務之后立即啟動路徑指定的可執(zhí)行文件。默認值為false。設置為true即可實現(xiàn)開機運行腳本文件。
4)WorkingDirectory(可選)
運行可執(zhí)行文件之前,指定當前工作目錄的路徑。
5)KeepAlive(可選)
這個關(guān)鍵字可以用來控制是否讓可執(zhí)行文件持續(xù)運行,默認值為false,也就是說滿足具體條件之后才啟動。當設置值為ture時,表明無條件的開啟可執(zhí)行文件,并使之保持在整個系統(tǒng)運行周期內(nèi)。
6)StartCalendarInterval(可選)
該關(guān)鍵字可以用來設置定時執(zhí)行可執(zhí)行程序,可使用Month、Day、Hour、Minute等子關(guān)鍵字,它可以指定腳本在多少月、天、小時、分鐘、星期幾等時間上執(zhí)行,若缺少某個關(guān)鍵字則表示任意該時間點,類似于Unix的Crontab計劃任務的設置方式,比如在該例子中設置為每天11點鐘執(zhí)行腳本文件。
所有key關(guān)鍵字詳細使用說明可以在Mac OS X終端下使用命令man launchd.plist查詢。

•在客戶機部署配置文件和腳本文件

1) 首先為Mac OS X系統(tǒng)的當前的用戶設置一個密碼,在系統(tǒng)偏好設置→賬戶中設置。
  然后,可通過共享等方式將腳本文件ae_scan_mac.sh和plist文件ae_scan_mac.plist拷貝到本地硬盤的一個臨時目錄中,然后打開實用工具→終端,使用以下命令:
sudo mv ae_scan_mac.* /Library/LaunchDaemons
將這兩個文件移動到/Library/LaunchDaemons/目錄下。

2) 修改文件權(quán)限:
sudo chown root:wheel /Library/LaunchDaemons/ae_scan_mac.*
sudo chmod a+x /Library/LaunchDaemons/ae_scan_mac.sh
sudo chmod 644 /Library/LaunchDaemons/ae_scan_mac.plist



3) plist文件的編輯和檢查
可使用命令sudo vim ae_scan_mac.plist對文件進行修改。
檢查plist文件的語法:
plutil ae_scan_mac.plist
若返回OK則表示文件語法正確。

4) 啟動服務并載入plsit文件:
sudo launchctl load /Library/LaunchDaemons/ae_scan_mac.plist
或者重啟Mac電腦也可以。
要留意的是,每次修改完plist文件后必須使用以下命令重新載入plist文件又或者重啟電腦,plist的配置才會生效。
sudo launchctl unload /Library/LaunchDaemons/ae_scan_mac.plist
sudo launchctl load /Library/LaunchDaemons/ae_scan_mac.plist

接著,檢查服務的運行狀態(tài):
sudo launchctl list



5) 最后待腳本運行后,就能在AssetExplorer服務器上看到這臺客戶機的信息了,之后客戶機就會自動按照plist文件設置的時間或者重啟機器后將機器信息上傳到服務器。

兩個文件的部署有幾個地方需要注意的:

1)文件的權(quán)限必須正確,兩個文件所有者必須為root,腳本文件必須有執(zhí)行權(quán)限。
2)plist文件的語法必須正確,要留意配置中的程序工作目錄和運行參數(shù)不要錯。可執(zhí)行:sudo launchctl start /Library/LaunchDaemons/ae_scan_mac.plist
強制運行服務,或者直接運行一下腳本程序,測試一下腳本文件的運行是否正常。
3)每次plist文件修改后必須執(zhí)行l(wèi)aunchctl unload/load卸載并重新載入plist文件,才能使新的配置文件馬上生效。
  腳本程序和配置文件分別在多臺客戶機一次性部署后,AssetExplorer就可以自動收集到所有Mac電腦的硬件和軟件信息,即使機器配置更改了也無需手動添加,方便了公司的資產(chǎn)管理。Launchd進程的功能比較強大,Apple推薦并已使用該進程替代傳統(tǒng)的cron了,大家有興趣可以再研究一下。

原文為博主所著,并刊登于《網(wǎng)絡運維與管理》雜志2014.02.3.4期。

標簽:隴南 荊門 許昌 漯河 丹東 黃石 法律咨詢 武漢

巨人網(wǎng)絡通訊聲明:本文標題《讓Mac OS X系統(tǒng)啟動時執(zhí)行腳本的方法》,本文關(guān)鍵詞  讓,Mac,系統(tǒng),啟動,時,執(zhí)行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《讓Mac OS X系統(tǒng)啟動時執(zhí)行腳本的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于讓Mac OS X系統(tǒng)啟動時執(zhí)行腳本的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章