Как распечатать название программы и дату установки из system_profiler в macOS? - PullRequest
0 голосов
/ 10 апреля 2019

Я настраиваю txt / log-файл, в котором будет храниться информация из 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 вы получите вывод, похожий на

Вывод 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

Любая помощь будет оценена, спасибо!

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Сколько дополнительных строк или информации из Обновления безопасности, если это, например, 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
0 голосов
/ 10 апреля 2019

Вероятно, это можно немного оптимизировать, но вы можете использовать:

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 ' '

Чтобы разобраться в этом немного, вы grep для 'macOS' и 'Security' и позволяете вернуться следующим 4 строкам.

Затем вы передаете это через grep для 'macOS', 'Security' и 'Install Date', так что вы получите только первую строку и строку с датой.

Затем вы передаете его через tr (translate) и превращаете все символы новой строки в пробелы.

Затем вы ищете 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

Вам нужно будет сделать больше работы, если вы хотите изменить формат даты. Но, по крайней мере, это может помочь вам начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...