Subir archivos a "/"
This commit is contained in:
83
set-fortivpn-dns.sh
Normal file
83
set-fortivpn-dns.sh
Normal file
@ -0,0 +1,83 @@
|
||||
#!/bin/bash
|
||||
|
||||
# === Configuración ===
|
||||
VPN_NAME="FortiClient VPN"
|
||||
DNS1="10.7.120.30"
|
||||
DNS2="10.7.120.31"
|
||||
RESOLVER_FILE="/etc/resolver/ttech.inet"
|
||||
DNS_BACKUP_FILE="$HOME/.fortivpn_dns_backup"
|
||||
NOTIFIER="/opt/homebrew/bin/terminal-notifier" # Ajusta según tu sistema
|
||||
|
||||
# === Protección anti-ejecución múltiple ===
|
||||
LOCK_FILE="/tmp/set-fortivpn-dns.lock"
|
||||
LOCK_TIMEOUT=10 # segundos
|
||||
|
||||
if [ -f "$LOCK_FILE" ]; then
|
||||
last_run=$(stat -f "%m" "$LOCK_FILE")
|
||||
now=$(date +%s)
|
||||
if (( now - last_run < LOCK_TIMEOUT )); then
|
||||
echo "$(date): Script ejecutado recientemente. Saliendo." >> /tmp/fortivpn-dns.log
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
touch "$LOCK_FILE"
|
||||
|
||||
# === Función para notificaciones ===
|
||||
function notify() {
|
||||
TITLE="$1"
|
||||
MESSAGE="$2"
|
||||
USER=$(stat -f "%Su" /dev/console)
|
||||
sudo -u "$USER" "$NOTIFIER" -title "$TITLE" -message "$MESSAGE"
|
||||
}
|
||||
|
||||
# === Detectar estado de la VPN ===
|
||||
STATUS=$(scutil --nc status "$VPN_NAME" | head -n 1)
|
||||
echo $STATUS
|
||||
|
||||
if [[ "$STATUS" == "Connected" ]]; then
|
||||
if [[ -f "$RESOLVER_FILE" ]]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
echo "$(date): VPN conectada." >> /tmp/fortivpn-dns.log
|
||||
|
||||
# Guardar DNS originales si no están guardados
|
||||
if [[ ! -f "$DNS_BACKUP_FILE" ]]; then
|
||||
networksetup -getdnsservers "$VPN_NAME" > "$DNS_BACKUP_FILE"
|
||||
fi
|
||||
|
||||
# Aplicar nuevos DNS
|
||||
networksetup -setdnsservers "$VPN_NAME" $DNS1 $DNS2
|
||||
|
||||
# Crear resolver para ttech.inet
|
||||
if [[ ! -f "$RESOLVER_FILE" ]]; then
|
||||
sudo /bin/mkdir -p /etc/resolver
|
||||
echo "nameserver $DNS1" | sudo /usr/bin/tee "$RESOLVER_FILE" > /dev/null
|
||||
echo "nameserver $DNS2" | sudo /usr/bin/tee -a "$RESOLVER_FILE" > /dev/null
|
||||
fi
|
||||
|
||||
notify "✅ VPN Conectada" "DNS configurado y resolver ttech.inet creado"
|
||||
|
||||
else
|
||||
echo "$(date): VPN desconectada." >> /tmp/fortivpn-dns.log
|
||||
|
||||
# Restaurar DNS originales
|
||||
if [[ -f "$DNS_BACKUP_FILE" ]]; then
|
||||
ORIGINAL_DNS=$(cat "$DNS_BACKUP_FILE")
|
||||
if [[ "$ORIGINAL_DNS" == "There aren't any DNS Servers set on"* ]]; then
|
||||
networksetup -setdnsservers "$VPN_NAME" "Empty"
|
||||
else
|
||||
networksetup -setdnsservers "$VPN_NAME" $ORIGINAL_DNS
|
||||
fi
|
||||
rm "$DNS_BACKUP_FILE"
|
||||
fi
|
||||
|
||||
# Eliminar resolver
|
||||
if [[ -f "$RESOLVER_FILE" ]]; then
|
||||
sudo /bin/rm -f "$RESOLVER_FILE"
|
||||
notify "🔌 VPN Desconectada" "DNS restaurado y resolver eliminado"
|
||||
fi
|
||||
|
||||
#notify "🔌 VPN Desconectada" "DNS restaurado y resolver eliminado"
|
||||
fi
|
||||
Reference in New Issue
Block a user