Управување со именуван Tunnelblick профил од терминалот
Tunnelblick нуди connect, state и disconnect преку AppleScript. Повикајте го тој интерфејс, оставете ја апликацијата одговорна и дајте рок на секое чекање.
Скриптите на кои им треба активен VPN пред резервна копија често го стартуваат openvpn директно. Тоа го напушта профилот, DNS и обработката на рути што Tunnelblick веќе ги управува. Поддржаниот пат е сопствениот AppleScript интерфејс на Tunnelblick, кој прифаќа connect, state и disconnect барања за именувана конфигурација. Користете го и оставете ја апликацијата одговорна.
Разговарајте со апликацијата, не со openvpn
Tunnelblick го поседува OpenVPN профилот, изборот на мотор, скриптите и интеграцијата со DNS и рути. Одделна openvpn бинарна датотека е друг распоред на стартување, не заобиколен пат до истата врска.
Повикувањето на скрипт интерфејсот на апликацијата го одржува тоа сопствеништво недопрено и го прави секое барање проверливо.
Примерите овде претпоставуваат дека Tunnelblick е во Applications, работната конфигурација се вика HQ и командите се извршуваат во сесијата на најавениот Mac корисник. Сменете го името во точната конфигурација што ја имате.
Стартувајте точно еден именуван профил
Барањето connect го именува конфигурацијата. Тоа не е барање за поврзување со последно избраното.
Извршете го во корисничката сесија што ја поседува конфигурацијата:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Поминете ги вообичаените барања за најава. macOS може да праша дали на апликацијата што повикува ѝ е дозволено да управува со Tunnelblick; проверете која апликација и која цел пред да одобрите. Автоматизацијата што го прескокнува тој дијалог ја уништува неговата смисла.
Барањето connect се враќа пред тунелот да биде кренат
Водичот за скрипти на Tunnelblick е експлицитен: connect се враќа пред врската да заврши. Нултиот излезен статус значи дека барањето е прифатено, а не дека сообраќајот тече.
Прочитајте ја состојбата одделно:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED е резултат на состојбата на врската. Тоа сè уште не докажува дека приватниот ресурс што му е потребен на вашиот процес е достапен, затоа проверете го одделно пред да започнете зависна работа.
Другите контроли во скрипт интерфејсот покриваат пошироки дејства и не се потребни кога се менува само еден профил.
Чекајте со рок, потоа не успевајте
Бескрајното анкетирање е начинот на кој скриптата виси цела ноќ и го блокира следното извршување. Дајте му на чекањето рок, краток интервал и јасен исход на неуспех. Третирајте ја секоја состојба освен CONNECTED како неподготвена, вклучително и преодните. Запишете ја последната видена состојба за да се објасни неуспехот сам.
Ограничената јамка изгледа вака:
for i in $(seq 1 30); do
state=$(osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"')
if [ "$state" = "CONNECTED" ]; then exit 0; fi
sleep 1
done
echo "tunnel did not reach CONNECTED" >&2
exit 1Триесет секунди е пример, не универзален тајмаут. Изберете рок според патот за автентикација што профилот навистина го користи и чувајте го во записот на работниот тек.
Проверете состојба и прекинете по име
За да го запрете истиот профил, повикајте disconnect со истото име. Тоа го држи барањето тесно и ги остава другите конфигурации на мира.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Чувајте го името на профилот и контролорот заедно во записот на работниот тек, заедно со очекуваните проверки за автентикација и завршување. Токму тој запис ја прави командата проверлива шест месеци подоцна.
Однесувањето при стартување со компјутерот е друг режим. Користете ја документираната опција за стартување на Tunnelblick и поставувањето на акредитивите што таа го очекува. Команда извршена во најавена десктоп сесија и услуга што стартува со машината не делат контекст. Не претпоставувајте дека скрипта што работи додека сте најавени ќе работи и при подигање. Тестирајте го патот за стартување одделно, со истиот рок и евиденција.