Я все еще изучаю сети и терминологию, которая с ними связана; так что, если я оговорюсь, не стесняйтесь меня поправлять.
В настоящее время мой модем / маршрутизатор напрямую подключен к моему Mac через кабель Ethernet, и у меня есть VPN-маршрутизатор, подключенный к моему модему маршрутизатора, к которому я подключен на своем Mac через Wi-Fi. Когда оба соединения работают одновременно, я установил Ethernet в качестве основного, поскольку я не хочу, чтобы весь мой трафик проходил через VPN без необходимости. Однако, когда я хочу получить доступ к локальной сети VPN, я должен установить свой Wi-Fi в качестве основного, что может быть утомительно, если я просто хочу быстро получить доступ к чему-либо. Чтобы упростить эту задачу, у меня есть bash-скрипт, который добавит статические маршруты в мою таблицу маршрутизации, чтобы исправить это. Я также написал файл .plist в надежде автоматически запускать этот скрипт каждый раз, когда я перезагружаю свой компьютер. Я считаю, что код правильный как в сценарии bash, так и в файле plist, но я не думаю, что сценарий bash будет выполняться должным образом из-за необходимости привилегий sudo. Я читал, что пытаться обойти это не рекомендуется, поэтому мне было интересно, есть ли альтернатива или способ запросить у меня пароль при входе в систему и запустить скрипт и позволить процессу автоматизации позаботиться обо всем остальном. .
Мой скрипт bash выглядит так и хранится на моем рабочем столе:
#!/bin/bash
USERNAME=$1
if [ $USERNAME == 'XXX' ]
then
route -n add 192.168.x.x/24 192.168.x.x
route -n add 192.168.x.x/24 192.168.x.x
route -n add 192.168.x.x/24 192.168.x.x
elif [ $USERNAME == 'YYY']
then
route -n add 192.168.x.x/24 192.168.x.x
route -n add 192.168.x.x/24 192.168.x.x
route -n add 192.168.x.x/24 192.168.x.x
fi
Мой файл .plist выглядит так и хранится в папке /Users/x/Library/LaunchAgents:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.routes</string>
<key>Program</key>
<string>/Users/x/Desktop/Routes.sh</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Прямо сейчас этот процесс не работает; то ли это из-за ошибки в моем коде, то ли из-за проблемы с привилегиями, я не уверен. Когда я запускаю скрипт bash непосредственно из CLI с привилегиями sudo, он работает правильно. Любая помощь приветствуется. Спасибо.
~/Desktop/Routes.sh
на/Users/Austin/Desktop/Routes.sh
(или заменитеAustin
любым своим именем для входа). - person rob mayoff   schedule 10.03.2017