Обновить 99-tailscale-resume.sh

В Сценарии 2 вместо проверки if [ -f /run/tailscale-suspended ] теперь стоит if ! tailscale status &>/dev/null. Теперь скрипт не просто восстанавливает соединение после сна, а принудительно поднимет Tailscale при переключении на любую сеть (Wi-Fi, провод, мобильный хотспот), если он был выключен, исключая только сеть AirPort
This commit is contained in:
2026-09-18 07:33:12 +00:00
parent de39a1074d
commit 4d45bed275
+7 -3
View File
@@ -1,4 +1,7 @@
#!/bin/bash #!/bin/bash
exec &> /tmp/tailscale-resume.log
set -x
INTERFACE="$1" INTERFACE="$1"
ACTION="$2" ACTION="$2"
@@ -16,6 +19,7 @@ send_notification() {
ACTIVE_USER=$(id -nu "$USER_ID" 2>/dev/null) ACTIVE_USER=$(id -nu "$USER_ID" 2>/dev/null)
if [ -n "$ACTIVE_USER" ]; then if [ -n "$ACTIVE_USER" ]; then
# Задержка для готовности DBus
sleep 1 sleep 1
systemd-run --machine="${ACTIVE_USER}@.host" --user \ systemd-run --machine="${ACTIVE_USER}@.host" --user \
notify-send -i "$icon" "$title" "$message" notify-send -i "$icon" "$title" "$message"
@@ -27,7 +31,7 @@ if [ "$ACTION" = "up" ]; then
CURRENT_SSID=$(nmcli -t -f active,ssid dev wifi 2>/dev/null | grep '^yes:' | cut -d: -f2) CURRENT_SSID=$(nmcli -t -f active,ssid dev wifi 2>/dev/null | grep '^yes:' | cut -d: -f2)
# Сценарий 1: Сеть AirPort -> Отключение Tailscale # Сценарий 1: Сеть AirPort -> Принудительное отключение
if [ "$CURRENT_SSID" = "AirPort" ]; then if [ "$CURRENT_SSID" = "AirPort" ]; then
if tailscale status &>/dev/null || [ -f /run/tailscale-suspended ]; then if tailscale status &>/dev/null || [ -f /run/tailscale-suspended ]; then
tailscale down tailscale down
@@ -37,14 +41,14 @@ if [ "$ACTION" = "up" ]; then
exit 0 exit 0
fi fi
# Сценарий 2: Любая другая сеть -> Гарантированное подключение # Сценарий 2: Любая другая сеть -> Автоматическое подключение
if ! tailscale status &>/dev/null; then if ! tailscale status &>/dev/null; then
if tailscale up; then if tailscale up; then
rm -f /run/tailscale-suspended rm -f /run/tailscale-suspended
send_notification "network-vpn" "Tailscale" "Автоматически подключен" send_notification "network-vpn" "Tailscale" "Автоматически подключен"
fi fi
else else
# Если VPN уже был активен, просто убираем маркер сна # Если Tailscale уже был активен, просто очищаем маркер сна
rm -f /run/tailscale-suspended rm -f /run/tailscale-suspended
fi fi
fi fi