Инструменты пользователя

Инструменты сайта


cloudflare_dyndns

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
cloudflare_dyndns [2025/10/01 19:23] – создано bonterkozcloudflare_dyndns [2025/11/06 14:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Автоматическое обновление домашнего IP-адреса Cloudflare DDNS ======
 +
 +
 <code> <code>
 +Проверка API-токена
 +curl.exe "https://api.cloudflare.com/client/v4/user/tokens/permission_groups" --request GET --header "Authorization: Bearer FyqTNMl5JiZf1q77v275VgtQpo2Uh4fqdnYisugL9wSReadZ/Q8YAM6jIK7rvLYO+xOTb85Bf3E="
 +
 cloudflare_dyndns.ps1 cloudflare_dyndns.ps1
  
 # Cloudflare DynDNS Script for Windows # Cloudflare DynDNS Script for Windows
 # Конфигурация # Конфигурация
-$ZoneID = "your_zone_id_here+$ZoneID = "JaYRnJAoKlHujNxXEBRWG1hkD/zJeWIXJ9VDnXxyOjIP094mt3u+ShPhIf5PF15R
-$ApiToken = "your_api_token_here+$ApiToken = "Gwl35a3UHXye2X0VsW9qVL5mpo+c6u/9ibKigEThwQFpAvxX4DdmHEJcLH5Z0qhUIjvMFoVPDUs=
-$RecordName = "home.yourdomain.com"+$RecordName = "k7rhM3VJApTpPAldQR0rrQx6Z/BrRpuB"
 $RecordType = "A" $RecordType = "A"
  
Строка 113: Строка 119:
 } }
 </code> </code>
 +
 +
 +====== cloudflare_dyndns.vbs ======
 +
 +<code>
 +
 +Set objShell = CreateObject("Wscript.Shell")
 +objShell.Run "powershell.exe -ExecutionPolicy Bypass -NonInteractive -File ""C:\Users\shs\Documents\cloudflare_dyndns.ps1""", 0, False
 +</code>
 +
 +
 +===== Автоматическое обновление домашнего IP-адреса каждые 15 минут =====
 +
 +<code>
 +homeip_add_task.ps1
 +
 +$TaskName = "Update Home IP Every 15 Minutes"
 +$ScriptPath = "C:\Users\shs\Documents\cloudflare_dyndns.vbs"  # Укажите полный путь к вашему скрипту
 +$LogPath = "c:\temp\cloudflare_dyndns-log.txt"  # Путь для лог-файла
 +
 +# Создание действия с параметрами для скрытого выполнения
 +$Action = New-ScheduledTaskAction `
 +    -Execute "wscript.exe" `
 +    -Argument "$ScriptPath"
 +
 +# Создание триггера (каждые 15 минут)
 +$Trigger = New-ScheduledTaskTrigger `
 +    -Once `
 +    -At (Get-Date) `
 +    -RepetitionInterval (New-TimeSpan -Minutes 15)
 +
 +# Настройки задачи - ВАЖНО: добавляем скрытое выполнение
 +$Settings = New-ScheduledTaskSettingsSet `
 +    -AllowStartIfOnBatteries `
 +    -DontStopIfGoingOnBatteries `
 +    -StartWhenAvailable `
 +    -RestartCount 3 `
 +    -RestartInterval (New-TimeSpan -Minutes 1) `
 +    -Hidden  # Это ключевой параметр!
 +
 +# Регистрация задачи
 +Register-ScheduledTask `
 +    -TaskName $TaskName `
 +    -Action $Action `
 +    -Trigger $Trigger `
 +    -Settings $Settings `
 +    -RunLevel Highest `
 +    -Description "Автоматическое обновление домашнего IP-адреса Cloudflare DDNS"
 +
 +Write-Host "Задача `"$TaskName`" успешно создана!" -ForegroundColor Green
 +</code>
 +
 +
 +
 +==== Проверка локального IP и запись его на FTP ====
 +
 +<code>
 +
 +# Список сервисов для получения IP (в порядке приоритета)
 +$ipServices = @(
 +    "http://ipinfo.io/ip",
 +    "http://checkip.amazonaws.com",
 +    "http://api.ipify.org"
 +)
 +
 +# Получение IP с резервными сервисами
 +$externalIP = $null
 +$usedService = ""
 +
 +foreach ($service in $ipServices) {
 +    try {
 +        Write-Host "Попытка получить IP с $service..." -ForegroundColor Yellow
 +        $response = Invoke-RestMethod -Uri $service -TimeoutSec 10
 +        $externalIP = $response.ToString().Trim()
 +        
 +        # Проверка что получен валидный IP
 +        if ($externalIP -match '^\d+\.\d+\.\d+\.\d+$') {
 +            $usedService = $service
 +            Write-Host "IP успешно получен с $usedService : $externalIP" -ForegroundColor Green
 +            break
 +        } else {
 +            Write-Host "Неверный формат ответа: $externalIP" -ForegroundColor Red
 +            $externalIP = $null
 +        }
 +    }
 +    catch {
 +        Write-Host "Ошибка при запросе к $service : $($_.Exception.Message)" -ForegroundColor Red
 +        $externalIP = $null
 +    }
 +}
 +
 +if (-not $externalIP) {
 +    Write-Host "Не удалось получить IP-адрес со всех сервисов" -ForegroundColor Red
 +    exit 1
 +}
 +
 +# Параметры FTP
 +$ftpServer = "ftp.amd123-ru.1gb.ru"
 +$ftpUser = "qItc+GdO3fJ3cBH6iAltziD6yoVoOMYV0o2XAHyZyZw="                    # Ваш логин для FTP
 +$ftpPass = "wJfF51As17bMVtj8sdY9a4LEcjjoSmPP"          # Ваш пароль для FTP
 +$remoteFile = "/home-ip.txt"           # Файл на сервере
 +
 +# Убедимся, что адрес FTP правильный
 +$ftpUri = "ftp://$ftpServer$remoteFile"
 +Write-Host "Попытка подключения к: $ftpUri"
 +
 +# Создание временного файла
 +$tempFile = [System.IO.Path]::GetTempFileName()
 +$externalIP | Out-File -FilePath $tempFile -Encoding ASCII
 +
 +try {
 +    # Создание FTP-запроса
 +    $ftpRequest = [System.Net.FtpWebRequest]::Create($ftpUri)
 +    $ftpRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
 +    $ftpRequest.Credentials = New-Object System.Net.NetworkCredential($ftpUser, $ftpPass)
 +    $ftpRequest.UseBinary = $true
 +    $ftpRequest.KeepAlive = $false
 +    $ftpRequest.UsePassive = $true  # Добавляем пассивный режим
 +
 +    # Чтение файла и отправка на FTP
 +    $fileContent = [System.IO.File]::ReadAllBytes($tempFile)
 +    $ftpRequestStream = $ftpRequest.GetRequestStream()
 +    $ftpRequestStream.Write($fileContent, 0, $fileContent.Length)
 +    $ftpRequestStream.Close()
 +
 +    Write-Host "IP-адрес успешно загружен на FTP: $externalIP" -ForegroundColor Green
 +    
 +    # Логирование успешной операции
 +    $logEntry = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - IP $externalIP обновлен через $usedService"
 +    $logEntry | Out-File "C:\temp\homeip-log.txt" -Append
 +}
 +catch {
 +    Write-Host "Ошибка при загрузке на FTP: $($_.Exception.Message)" -ForegroundColor Red
 +    
 +    # Дополнительная информация об ошибке
 +    if ($_.Exception.InnerException) {
 +        Write-Host "Внутренняя ошибка: $($_.Exception.InnerException.Message)" -ForegroundColor Yellow
 +    }
 +    
 +    # Логирование ошибки
 +    $errorEntry = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - Ошибка FTP: $($_.Exception.Message)"
 +    $errorEntry | Out-File "C:\temp\homeip-log.txt" -Append
 +}
 +finally {
 +    # Удаление временного файла
 +    if (Test-Path $tempFile) {
 +        Remove-Item $tempFile -Force
 +    }
 +}
 +
 +Write-Host "Скрипт завершил выполнение" -ForegroundColor Cyan
 +</code>
 +
 +==== homeip.vbs ====
  
 <code> <code>
-cloudflare_dyndns.bat+Set objShell = CreateObject("Wscript.Shell"
 +objShell.Run "powershell.exe -ExecutionPolicy Bypass -NonInteractive -File ""C:\Users\shs\Documents\homeip.ps1""", 0, False
  
-@echo off 
-cd /d "C:\path\to\script\" 
-powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File "cloudflare_dyndns.ps1" 
 </code> </code>
cloudflare_dyndns.1759335806.txt.gz · Последнее изменение: (внешнее изменение)

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki