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

时间:2022-06-02 14:26:42 

这篇文章主要介绍了让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文件范例:

XML/HTML Code复制内容到剪贴板

  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.     

  6.     

  7.     

  8.     

  9.     

  10.     

  11.     

  12.      

  13.      

  14.      

  15.      

  16.     

  17.      

  18.     


其中的关键字解释:

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

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

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

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

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了,大家有兴趣可以再研究一下。

原文为博主所著,并刊登于《网络运维与管理》杂志2014.02.3.4期。

标签:Mac,系统启动,执行脚本
0
投稿

猜你喜欢

  • U盘FAT32/NTFS/exFAT格式有什么用?文件系统类型区别介绍

    2022-05-18 12:16:15
  • Win10系统电脑如何退出磁贴桌面?Win10退出系统磁贴桌面的方法

    2023-08-19 20:06:09
  • u盘启动盘怎么制作

    2022-03-02 02:51:34
  • Windows 8.1 2014 Update新界面体验

    2023-10-04 20:57:26
  • Excel如何自动求平均值的方法

    2023-10-09 03:34:52
  • 如何用Word2003来制作中国棋图

    2023-12-07 19:01:49
  • iOS 13.1 正式版更新了什么内容?iOS 13.1 正式版更新汇总

    2023-09-25 18:39:10
  • win10哪个版本好

    2023-11-09 17:18:01
  • wps演示文稿内存太大怎么办

    2023-08-26 21:21:12
  • Win7电脑有杂音怎么办?Win7电脑有杂音的解决方法

    2023-12-12 23:24:20
  • excel2003取消只读模式的教程

    2023-05-30 01:52:11
  • 如何在wps文字中调整表格

    2022-09-04 13:24:28
  • 如何在Word中用插入符号功能快速输入生僻字

    2023-06-18 15:41:52
  • Windows 全能远程终端神器 MobaXterm 使用实例教程

    2022-12-27 16:16:43
  • excel怎么将多张工作表明细数据到汇总表

    2022-03-18 01:15:52
  • vista下如何调整左右声道音量大小(简单方法)

    2023-05-31 18:14:44
  • Word如何设置与Excel表格内容同步更新

    2023-06-21 12:04:55
  • 如何从Word 2016中的现有格式文本创建样式?

    2022-08-04 05:28:50
  • Win8系统以管理员身份进入cmd解决疑难问题

    2023-11-11 13:00:16
  • Excel中快速求和的方法 求和的快捷键

    2023-08-03 06:04:32
  • asp之家 电脑教程 m.aspxhome.com