让Mac OS X系统启动时执行脚本

公司购买了Zoho公司的资产管理软件
AssetExplorer,该资产管理软件可以通过在客户机电脑上安装Agent客户端软件收集客户机的硬件及软件信息。公司有若干台iMac电脑,运
行的是Mac OS X
10.6的系统,由于AssetExplorer只支持Windows版本的Agent,对于其他系统的计算机需要通过在客户端执行bash脚本文件的方
式,收集客户机的信息并上传到服务器。这就要求客户机的Mac OS
X系统启动的时候能够自动执行脚本程序,而且要基于系统服务层面,用户无需登录,脚本也能在后台运行,最好脚本程序后台还能做到固定时间自动运行。

我们可以利用Mac OS X内置的一种称为Launch Daemon / Agent的机制来实现系统启动时自动执行脚本程序。Mac OS
X从10.4 开始,采用 launchd进程来管理整个操作系统的服务及进程。传统的UNIX 会使用 /etc/rc.*
或其他的机制来管理开机时要启动的启动服务,而现在的Mac OS X则使用launchd来管理,它的启动服务称为Launch Daemon /
Agents。利用Launch Daemon / Agent,我们就可以令脚本程序在系统启动的时候在后台运行了。

  • Launch Daemon和Launch Agent的区别

 
 Launch Daemon和Launch Agent 是同一种东西在不同应用范围的名称。Launch
Daemon是系统级别的服务,称为daemon,Launch
Agent是用户级别的服务,称为agent,前者在开机时会加载,后者在用户登录后才会加载。所以我们采用Launch Daemon的方式运行脚本。

  • 从AssetExolorer导出脚本文件

  选择扫描→孤立工作站审计→通过脚本扫描工作站→Mac导出脚本文件ae_scan_mac.sh,并修改脚本文件中的hostName="服务器IP地址或域名地址",并检查portNo一项是否正确。

  • 创建plist配置文件

 
 Launchd进程需要读取一个xml格式的plist配置文件,创建该文件并将其放置在/System/Library/LaunchDaemons
/
或者/Library/LaunchDaemons/目录下。可在Windows下预先创建该文件,需要使用支持Unix格式的文本编辑器(比如
UltraEdit)创建该文件。

  

其中plist文件格式及每个字段的含义:

ae_scan_mac.plist文件范例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 

    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

    <key>Label</key>

        <string>com.manageengine.ae_scan_mac</string>

    <key>Program</key>

    <string>ae_scan_mac.sh</string>

    <key>RunAtLoad</key>

         <true/>

    <key>WorkingDirectory</key>

        <string>/Library/LaunchDaemons/</string>

    <key>KeepAlive</key

        <false/> 

    <key>StartCalendarInterval</key

    <dict>       

        <key>Hour</key

        <integer>11</integer

        <key>Minute</key>

        <integer>0</integer

    </dict

</dict>

</plist>

其中的关键字解释:

1)Label(必选)

该项服务的名称。

2)Program(ProgramArgument是必选的,在没有ProgramArgument的情况下,必须要包含Program关键字)

指定可执行文件的路径和名称。

3)RunAtLoad(可选)

标识launchd在加载完该项服务之后立即启动路径指定的可执行文件。默认值为false。设置为true即可实现开机运行脚本文件。

4)WorkingDirectory(可选)

运行可执行文件之前,指定当前工作目录的路径。

5)KeepAlive(可选)

这个关键字可以用来控制是否让可执行文件持续运行,默认值为false,也就是说满足具体条件之后才启动。当设置值为ture时,表明无条件的开启可执行文件,并使之保持在整个系统运行周期内。

6)StartCalendarInterval(可选)


关键字可以用来设置定时执行可执行程序,可使用Month、Day、Hour、Minute等子关键字,它可以指定脚本在多少月、天、小时、分钟、星期几
等时间上执行,若缺少某个关键字则表示任意该时间点,类似于Unix的Crontab计划任务的设置方式,比如在该例子中设置为每天11点钟执行脚本文
件。

所有key关键字详细使用说明可以在Mac OS X终端下使用命令man launchd.plist查询。

  • 在客户机部署配置文件和脚本文件

1) 首先为Mac OS X系统的当前的用户设置一个密码,在系统偏好设置→账户中设置。

  然后,可通过共享等方式将脚本文件ae_scan_mac.sh和plist文件ae_scan_mac.plist拷贝到本地硬盘的一个临时目录中,然后打开实用工具→终端,使用以下命令:

sudo mv ae_scan_mac.* /Library/LaunchDaemons

将这两个文件移动到/Library/LaunchDaemons/目录下。

2) 修改文件权限:

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

接着,检查服务的运行状态:

sudo launchctl list

5) 最后待脚本运行后,就能在AssetExplorer服务器上看到这台客户机的信息了,之后客户机就会自动按照plist文件设置的时间或者重启机器后将机器信息上传到服务器。

两个文件的部署有几个地方需要注意的:

1)文件的权限必须正确,两个文件所有者必须为root,脚本文件必须有执行权限。

2)plist文件的语法必须正确,要留意配置中的程序工作目录和运行参数不要错。可执行:sudo launchctl start /Library/LaunchDaemons/ae_scan_mac.plist

强制运行服务,或者直接运行一下脚本程序,测试一下脚本文件的运行是否正常。

3)每次plist文件修改后必须执行launchctl unload/load卸载并重新载入plist文件,才能使新的配置文件马上生效。

 
 脚本程序和配置文件分别在多台客户机一次性部署后,AssetExplorer就可以自动收集到所有Mac电脑的硬件和软件信息,即使机器配置更改了也
无需手动添加,方便了公司的资产管理。Launchd进程的功能比较强大,Apple推荐并已使用该进程替代传统的cron了,大家有兴趣可以再研究一
下。

时间: 2024-08-26 23:55:00

让Mac OS X系统启动时执行脚本的相关文章

Mac OS SSH/SFTP的Python脚本

以前在windows系统下面使用xshell来管理阿里云上的服务器,winscp来上传网站的资料,由于winscp使用的私钥必须是.ppk格式,而xshell使用普通的私钥,每次都要用putty工具来转换,很麻烦.后来使用xftp来替代winscp,xftp和xshell使用同样的私钥,这套组合在windows平台上面管理服务器非常方便,推荐使用. 然而Mac OS上面,没有这个套工具,由于Terminal可以直接使用sftp和ssh命令,用来管理阿里云服务器也很不错.但是,管理多态服务器非常麻

Mac OS生成随机密码的Python脚本

很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意以下几点: 我们的密码字符主要从0-9/A-Z/a-z这些字符中随机获取.为了避免显示混淆,我们去除字符中的数字0和字母o以及数字1和字母l. 命令不带参数的情况默认产生16个字符的随机密码 命令可以带一个参数,表明需要产生的随机密码的长度 要把密码打印到Terminal上,同时需要把随机密码发送到剪切板,方便粘贴使用 把命令放置到系统系统路径下面,方便直接使用命令. 代码

Keepalived主备切换时执行脚本

定义通知脚本: notify_master <STRING>|<QUOTED-STRING>:当前节点成为主节点时触发的脚本 notify_backup <STRING>|<QUOTED-STRING>:当前节点转为备节点时触发的脚本 notify_fault <STRING>|<QUOTED-STRING>:当前节点转为"失败"状态时触发的脚本 notify <STRING>|<QUOTED-S

Mac OS X 10.10 执行 Eclipse 提示须要安装 Java

于 OS X 的 Java 2014-001 Download "适用于 OS X 的 Java 2014-001"改进了安装过程,并会代替之前全部版本号的"适用于 OS X 的 Java". 本软件包会安装 Java 6.它与"适用于 OS X 的 Java 2013-005"中的版本号同样. 在尚未安装"适用于 OS X 的 Java 2012-006"或更高版本号的系统上.本更新会停用 Java SE 6 applet

VMware10.0安装Mac os x系统时提示与hyper-v冲突解决方法

解决方法: 1.打开控制面板. 2.进入程序模块. 3.进入程序和功能. 4.点击启用或关闭Windows功能. 5.把hyper-v选项取消. 6.点击确定. 这样就ok了.

Mac OS X

Mac OS X 除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验一下使用Mac来开发.NET Core应用,在这之前我们照例先得构建我们的开发环境. 一.安装开发环境 和Windows一样,如果我们下午在Mac上进行.NET Core应用的开发,我们只需要安装 .NET Core SDK和相应的IDE就可以了.对于前者,我们可以直接从微软官方站

.NET Core多平台开发体验[2]: Mac OS X

除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验一下使用Mac来开发.NET Core应用,在这之前我们照例先得构建我们的开发环境. 一.安装开发环境 和Windows一样,如果我们下午在Mac上进行.NET Core应用的开发,我们只需要安装 .NET Core SDK和相应的IDE就可以了.对于前者,我们可以直接从微软官方站点(https:/

install Mac OS on Vmware

本文将用详尽的图文介绍如何在虚拟机中安装运行Mac OS X,只要严格地按照本教程一步步操作,即使不了解苹果电脑的读者,也能顺利地安装并运行Mac OS X. 一.准备工作 VMWare 12 Pro百度云:http://pan.baidu.com/s/1hrSuPZe 密码:7qz3360云盘:https://yunpan.cn/c67BiTFmzxpVs 访问密码 21cc Unlocker补丁工具百度云:http://pan.baidu.com/s/1pLLBnf1 密码:pcuu360云

VMWare安装Mac OS X

原文作者?谷月K?2016.08.16 18:55 字数3473 随着iPhone.iPad.Mac等苹果产品越来越火爆,越来越多的初学者想要了解和尝试苹果平台,包括苹果操作系统Mac OS X.苹果演示软件Keynote.苹果开发工具Xcode等.然而,苹果电脑价格昂贵,并不是每个人都可以承受. 因此,在Windows下安装虚拟机软件VMWare,再在虚拟机里安装苹果操作系统Mac OS X,就成了一种成本低廉的选择,使初学者可以不必支付巨额开销购置苹果电脑. 本文将用详尽的图文介绍如何在虚拟