miyagi-backup.sh aktualisiert
dyndns route fix
This commit is contained in:
+43
-22
@@ -628,40 +628,61 @@ wait() {
|
||||
fi
|
||||
}
|
||||
set_dynamic_route() {
|
||||
local ddns_hostname="$SOURCEHOST"
|
||||
local target="$SOURCEHOST"
|
||||
local gateway="$DDNS_GATEWAY"
|
||||
local dns_server="$DDNS_SERVER"
|
||||
local current_ip
|
||||
|
||||
if [[ -z "$ddns_hostname" || -z "$gateway" ]]; then
|
||||
if [[ -z "$target" || -z "$gateway" ]]; then
|
||||
log "Fehler: SOURCEHOST oder DDNS_GATEWAY nicht gesetzt"
|
||||
return 1
|
||||
fi
|
||||
|
||||
log "Setze temporäre Route zu DNS-Server $dns_server via $gateway..."
|
||||
if ! ip route | grep -q "^$dns_server"; then
|
||||
ip route add "$dns_server" via "$gateway" \
|
||||
&& log "Route zu $dns_server via $gateway gesetzt" \
|
||||
|| log "Fehler beim Setzen der DNS-Route"
|
||||
# Ist SOURCEHOST bereits eine IPv4- oder IPv6-Adresse?
|
||||
if [[ "$target" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ || "$target" == *:* ]]; then
|
||||
current_ip="$target"
|
||||
log "SOURCEHOST ist bereits eine IP-Adresse: $current_ip"
|
||||
else
|
||||
log "Route zu $dns_server bereits vorhanden"
|
||||
log "Setze temporäre Route zu DNS-Server $dns_server via $gateway..."
|
||||
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
ip route | grep -q "^$dns_server" || \
|
||||
ip route add "$dns_server" via "$gateway"
|
||||
;;
|
||||
FreeBSD)
|
||||
route -n get "$dns_server" >/dev/null 2>&1 || \
|
||||
route add -host "$dns_server" "$gateway"
|
||||
;;
|
||||
esac
|
||||
|
||||
log "Löse IP von $target über DNS $dns_server..."
|
||||
current_ip=$(dig +short @"$dns_server" "$target" | awk 'NF {print; exit}')
|
||||
|
||||
if [[ -z "$current_ip" ]]; then
|
||||
log "Fehler: Konnte IP für $target nicht auflösen"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
log "Löse IP von $ddns_hostname über DNS $dns_server..."
|
||||
CURRENT_IP=$(dig +short @"$dns_server" "$ddns_hostname")
|
||||
log "Ermittelte IP: $current_ip – setze Route via $gateway..."
|
||||
|
||||
if [[ -z "$CURRENT_IP" ]]; then
|
||||
log "Fehler: Konnte IP für $ddns_hostname nicht auflösen"
|
||||
return 1
|
||||
fi
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
ip route | grep -q "^$current_ip" || \
|
||||
ip route add "$current_ip" via "$gateway"
|
||||
;;
|
||||
FreeBSD)
|
||||
route -n get "$current_ip" >/dev/null 2>&1 || \
|
||||
route add -host "$current_ip" "$gateway"
|
||||
;;
|
||||
*)
|
||||
log "Nicht unterstütztes Betriebssystem: $(uname -s)"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
log "Ermittelte IP: $CURRENT_IP – setze Route via $gateway..."
|
||||
if ! ip route | grep -q "^$CURRENT_IP"; then
|
||||
ip route add "$CURRENT_IP" via "$gateway" \
|
||||
&& log "Route erfolgreich gesetzt: $CURRENT_IP via $gateway" \
|
||||
|| log "Fehler beim Setzen der Route zu $CURRENT_IP"
|
||||
else
|
||||
log "Route zu $CURRENT_IP bereits vorhanden"
|
||||
fi
|
||||
log "Route erfolgreich gesetzt: $current_ip via $gateway"
|
||||
}
|
||||
# Main execution:
|
||||
if [[ $# -eq 0 ]]; then
|
||||
|
||||
Reference in New Issue
Block a user