launchd: запуск скрипта при вводе местоположения

вопрос: есть ли способ настроить LaunchAgent на запуск (и сохранение) скрипта при вводе определенного местоположения?

пример: при переключении на расположение "офис" я хочу, чтобы вызвать LaunchAgent, который запускает сценарий, который открывает туннель SSH, что мне нужно.

11
задан Hennes
28.02.2023 8:48 Количество просмотров материала 2662
Распечатать страницу

1 ответ

Mac OS X обновляет файл в /Library/Preferences/SystemConfiguration/ под названием preferences.plist. Он обновляет ключ под названием CurrentSet к UUID текущего местоположения (каждому местоположению присваивается UUID при его создании.) Вы можете определить название этого места, глядя на UserDefinedName ключ в словаре с тем же именем, что и UUID.

Пример:

#! /bin/bash

# Proof of Concept Script to check if the location changed.

CURRENT_LOCATION=`/usr/libexec/PlistBuddy -c "Print :CurrentSet" /Library/Preferences/SystemConfiguration/preferences.plist | sed 's/\/Sets\///'`
CURRENT_LOCATION_NAME=`/usr/libexec/PlistBuddy -c "Print :Sets:$CURRENT_LOCATION:UserDefinedName" /Library/Preferences/SystemConfiguration/preferences.plist`

# If location is the one we want:
# Logger puts the message into syslog

if [ $CURRENT_LOCATION_NAME == "Office" ]; then
    logger "`date` => In the Office"

    #Commands to set up SSH Tunnel among others

else
# If the location is not the one we want: Undo whatever we have done.
    logger "`date` => Out of Office"

    #Commands here for when you leave the office location
fi

пример LaunchAgent для запуска выше сценария при изменении местоположения:

<?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>local.IDENTIFIER_HERE.SOMETHING</string>
    <key>OnDemand</key>
    <true/>
    <key>Program</key>
    <string>/PATH/TO/SCRIPT</string>
    <key>WatchPaths</key>
    <array>
        <string>/Library/Preferences/SystemConfiguration/preferences.plist</string>
    </array>
</dict>
</plist>

введите путь к скрипт, дать ему идентификатор и сохранить его с тем же именем (напр. local.lajuette.location должен быть файл с именем local.lajuette.location.plist). Скопируйте этот файл в ~/Library/LaunchAgents и работать launchctl load ~/Library/LaunchAgents/name.of.plist.here.plist. С помощью примеров файлов Откройте консоль.app и проверьте строку:" Дата => в офисе "или" дата => вне офиса " соответственно.

вы можете проверить: как я могу получить скрипт для запуска каждый день на Mac OS X для получения дополнительной информации о том, как загрузить и запустить скрипт с помощью launchd, если вы не уверены.

2
отвечен Chealion 2023-03-01 16:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх