Atualizar ddns_update_winco.sh
This commit is contained in:
parent
7458455226
commit
15825fb0d0
@ -1,16 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Configurações
|
# Configurações
|
||||||
# Credenciais do DDNS (substitua pelos seus dados)
|
# Array associativo com hostname e suas credenciais
|
||||||
DDNS_USERNAME="seu_usuario"
|
# Formato: "hostname:usuario:senha"
|
||||||
DDNS_PASSWORD="sua_senha"
|
DDNS_CONFIGS=(
|
||||||
|
"subdominio1.ddns.com.br:usuario1:senha1"
|
||||||
# Lista de hostnames para atualizar (adicione quantos precisar)
|
"subdominio2.ddns.com.br:usuario2:senha2"
|
||||||
HOSTNAMES=(
|
"subdominio3.ddns.com.br:usuario3:senha3"
|
||||||
"subdominio1.ddns.com.br"
|
|
||||||
"subdominio2.ddns.com.br"
|
|
||||||
"subdominio3.ddns.com.br"
|
|
||||||
# Adicione mais conforme necessário
|
# Adicione mais conforme necessário
|
||||||
|
# "meudominio.ddns.com.br:meuusuario:minhasenha"
|
||||||
)
|
)
|
||||||
DDNS_URL="http://members.ddns.com.br/nic/update"
|
DDNS_URL="http://members.ddns.com.br/nic/update"
|
||||||
LOG_FILE="/tmp/ddns_update.log"
|
LOG_FILE="/tmp/ddns_update.log"
|
||||||
@ -47,17 +45,39 @@ get_public_ip() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Função para extrair dados da configuração
|
||||||
|
parse_config() {
|
||||||
|
local config="$1"
|
||||||
|
local field="$2"
|
||||||
|
|
||||||
|
# Separa hostname:usuario:senha
|
||||||
|
local hostname=$(echo "$config" | cut -d':' -f1)
|
||||||
|
local username=$(echo "$config" | cut -d':' -f2)
|
||||||
|
local password=$(echo "$config" | cut -d':' -f3-)
|
||||||
|
|
||||||
|
case "$field" in
|
||||||
|
"hostname") echo "$hostname" ;;
|
||||||
|
"username") echo "$username" ;;
|
||||||
|
"password") echo "$password" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
# Função para atualizar DDNS
|
# Função para atualizar DDNS
|
||||||
update_ddns() {
|
update_ddns() {
|
||||||
local current_ip="$1"
|
local current_ip="$1"
|
||||||
local hostname="$2"
|
local config="$2"
|
||||||
|
|
||||||
|
local hostname=$(parse_config "$config" "hostname")
|
||||||
|
local username=$(parse_config "$config" "username")
|
||||||
|
local password=$(parse_config "$config" "password")
|
||||||
|
|
||||||
local update_url="${DDNS_URL}?hostname=${hostname}&myip=${current_ip}"
|
local update_url="${DDNS_URL}?hostname=${hostname}&myip=${current_ip}"
|
||||||
|
|
||||||
log_message "Atualizando DDNS para $hostname com IP: $current_ip"
|
log_message "Atualizando DDNS para $hostname com IP: $current_ip (usuário: $username)"
|
||||||
|
|
||||||
# Faz a requisição de atualização com autenticação HTTP Basic
|
# Faz a requisição de atualização com autenticação HTTP Basic
|
||||||
local response=$(curl -s --connect-timeout 15 --max-time 30 \
|
local response=$(curl -s --connect-timeout 15 --max-time 30 \
|
||||||
--user "${DDNS_USERNAME}:${DDNS_PASSWORD}" \
|
--user "${username}:${password}" \
|
||||||
"$update_url")
|
"$update_url")
|
||||||
local curl_exit_code=$?
|
local curl_exit_code=$?
|
||||||
|
|
||||||
@ -74,19 +94,32 @@ update_ddns() {
|
|||||||
main() {
|
main() {
|
||||||
log_message "=== Iniciando verificação de IP público ==="
|
log_message "=== Iniciando verificação de IP público ==="
|
||||||
|
|
||||||
# Verifica se as credenciais estão configuradas
|
# Verifica se há configurações
|
||||||
if [ "$DDNS_USERNAME" = "seu_usuario" ] || [ "$DDNS_PASSWORD" = "sua_senha" ]; then
|
if [ ${#DDNS_CONFIGS[@]} -eq 0 ]; then
|
||||||
log_message "ERRO: Credenciais não configuradas! Edite DDNS_USERNAME e DDNS_PASSWORD"
|
log_message "ERRO: Nenhuma configuração definida no array DDNS_CONFIGS"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Verifica se há hostnames configurados
|
# Valida se as configurações não são os exemplos padrão
|
||||||
if [ ${#HOSTNAMES[@]} -eq 0 ]; then
|
local has_default=false
|
||||||
log_message "ERRO: Nenhum hostname configurado na lista HOSTNAMES"
|
for config in "${DDNS_CONFIGS[@]}"; do
|
||||||
|
if [[ "$config" =~ ^subdominio[123]\.ddns\.com\.br:usuario[123]:senha[123]$ ]]; then
|
||||||
|
has_default=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$has_default" = true ]; then
|
||||||
|
log_message "ERRO: Configurações padrão detectadas! Configure seus domínios e credenciais reais"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_message "Hostnames configurados: ${HOSTNAMES[*]}"
|
# Lista os domínios configurados
|
||||||
|
local hostnames=()
|
||||||
|
for config in "${DDNS_CONFIGS[@]}"; do
|
||||||
|
hostnames+=($(parse_config "$config" "hostname"))
|
||||||
|
done
|
||||||
|
log_message "Domínios configurados: ${hostnames[*]}"
|
||||||
|
|
||||||
# Obtém o IP público atual
|
# Obtém o IP público atual
|
||||||
current_ip=$(get_public_ip)
|
current_ip=$(get_public_ip)
|
||||||
@ -116,10 +149,10 @@ main() {
|
|||||||
local success_count=0
|
local success_count=0
|
||||||
local fail_count=0
|
local fail_count=0
|
||||||
|
|
||||||
# Atualiza cada hostname
|
# Atualiza cada domínio com suas credenciais
|
||||||
log_message "--- Iniciando atualizações ---"
|
log_message "--- Iniciando atualizações ---"
|
||||||
for hostname in "${HOSTNAMES[@]}"; do
|
for config in "${DDNS_CONFIGS[@]}"; do
|
||||||
if update_ddns "$current_ip" "$hostname"; then
|
if update_ddns "$current_ip" "$config"; then
|
||||||
((success_count++))
|
((success_count++))
|
||||||
else
|
else
|
||||||
((fail_count++))
|
((fail_count++))
|
||||||
|
Loading…
Reference in New Issue
Block a user