我正在设置一个txt /日志文件,该文件将存储来自system_profiler SPInstallHistoryDataType
的信息,这些信息与“安全更新”和“ macOS 10.xx更新”以及安装日期相匹配,因此我可以将该信息推送到我们的MDM解决方案。
当我跑步时
system_profiler SPInstallHistoryDataType | grep "Security"
我只得到
Security Update 2017-001:
Security Update 2018-001:
Security Update 2018-001:
仅运行system_profiler SPInstallHistoryDataType
时,您将获得类似于
Output of system_profiler SPInstallHistoryDataType
macOS 10.14.3 Update
Source: Apple
Install Date: 2/3/19, 3:11 PM
GarageBand
Version: 10.1.3
Source: Apple
Install Date: 1/31/19, 4:48 PM
Google Drive File Stream:
Source: 3rd Party
Install Date: 3/3/19, 11:30 AM
我正在尝试获得
Security Update 2017-001,2018-02-31 18:11
macOS 10.14.3 Update,2019-02-03 15:11
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
这可能可以优化很多,但是您可以使用:
system_profiler SPInstallHistoryDataType | grep -A 4 "macOS\|Security" | grep "macOS\|Security\|Install Date" | tr '\n' ' ' | sed -e 's/[AP]M/&\
/g' | sed -e 's/Install Date://g' | tr -s ' '
要稍微说明一下,请对'macOS'和'Security'进行grep表示,并允许以下4行返回。
然后,您通过grep将其通过管道传递给“ macOS”,“安全性”和“安装日期”,因此您只会得到第一行和带有日期的行。
然后将其通过tr(翻译)进行传递,并将所有换行符转换为空格。
然后您寻找AM和PM,并在其后添加换行符(在这种情况下,我似乎无法使用sed的'a'[append]命令,因此该命令中间有一个实际的换行符)
然后再次通过sed将其删除,以删除“安装日期:”
最后,您再次通过tr将其通过管道传递,以将多个空格变成单个空格,以使其更具可读性。
输出如下:
macOS High Sierra 10.13.4 Update: 4/6/18, 12:03 PM
Security Update 2018-001: 5/11/18, 2:59 PM
Security Update 2018-001: 5/11/18, 3:04 PM
macOS High Sierra 10.13.5 Update: 6/20/18, 10:32 AM
如果要更改日期格式,您将需要做更多的工作。但这至少可以帮助您入门。
答案 1 :(得分:0)
安全更新中有多少条附加行或信息(例如) 3和/或更少,请放置-C3选项
$ system_profiler SPInstallHistoryDataType | grep -EC3 "^\s*(Security|macOS)\b"
macOS 10.14.3 Update
Source: Apple
Install Date: 2/3/19, 3:11 PM