Я создал скрипт ip-down в моей директории etc/ppp/. По сути, я пытаюсь убить определенные программы / серверы, когда VPN отключается, а затем отображать уведомление на другом компьютере через ssh. У меня есть настройки ключей SSH и следующая команда отлично работает в терминале, но не внутри скрипта:

ssh {userName}@{address} 'osascript -e "display notification \"The VPN has disconnected.\" with title \"Server\" sound name \"Pop\""'

Все остальное в скрипте работает. Мой полный сценарий ниже:

#!/bin/sh

killall someApp1
killall someApp2
killall someApp3
killall someApp4
ssh {userName}@{address} 'osascript -e "display notification \"The VPN has disconnected.\" with title \"Server\" sound name \"Pop\""'
vpn-connect &

Примечание: я пытался заблокировать весь торрент-трафик на en0 (ethernet на этом устройстве) с помощью pf.conf, но когда я блокировал, он не позволил мне подключиться к моему vpn. Я не был уверен, как это позволить. Я был в состоянии разрешить ssh, https, совместное использование экрана и т.д. Любая информация об этом тоже будет крутой

1 ответ1

0

Не ответ, а обходной путь.

Контекст: у меня есть старый Macbook, который я использую как безголовый Plex-сервер. Я бы хотел, чтобы он всегда был подключен к VPN. Я также хотел бы уведомления, когда он подключается и отключается.

Я закончил тем, что создал приложение обработки событий. Затем я использовал Apple Remote Events, чтобы вызвать его и передать аргументы. После того, как аргументы переданы и обработчик событий запущен, я говорю приложению завершить работу. Это удерживает его от простоя в фоновом режиме. Наконец, я скрыл свое уведомление от дока, отредактировав список. Причина, по которой я создал приложение-обработчик, а не просто использовал Finder для отображения уведомлений, заключается в том, что я хотел иметь настраиваемый значок для своего уведомления.

Код для помощника по уведомлениям (обработчик событий):

on run
    idle
end run

on idle argv
    try
        eHandler(item 1 of argv, item 2 of argv, item 3 of argv)
    end try
end idle

on eHandler(message, title, soundName)
    set theMessage to message as string
    set theTitle to title as string
    set theSoundName to the soundName as string
    display notification theMessage with title theTitle sound name theSoundName
end eHandler

скрипт ip-down:

#!/bin/sh

# kill applications 
killall someApp1  
killall someApp2
killall someApp3     
killall someApp4

# Open Notification Helper
osascript <<EOF
set remoteMachine to "eppc://{userName}:{password}@{address}"
tell application "Finder" of machine remoteMachine
    open ("/Applications/Notification Helper.app" as POSIX file)
end tell
EOF

# Sends Notification Helper arguments
osascript <<EOF
tell application "Notification Helper" of machine "eppc://{userName}:{password}@{address}"
    TestHandler("The VPN has been disconnected.", "Media Server", "Pop")
    quit
end tell
EOF

# Calls applescript which reconnects my VPN. 
# The & Stops script from waiting to end
vpn-connect &

Для тех, кто не знает, ip-down скрипт попадает в каталог /etc /ppp / и запускается при отключении VPN. Вы также можете создать скрипт ip-up, который запускается при подключении к VPN. Мой ip-up просто включает все мои сервисы и затем отправляет мне уведомление, сообщающее мне, что VPN является резервной копией.

Комментарии, предложения приветствуются. Все еще интересно понять, почему это будет работать, поскольку у меня есть другой скрипт, который уведомляет меня, когда x происходит из другой программы через ssh. Также все еще очень заинтересован в pf.conf. Синтаксис для меня очень сбивает с толку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .