cloudflare_dyndns
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| cloudflare_dyndns [2025/10/01 19:56] – bonterkoz | cloudflare_dyndns [2025/11/06 14:21] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Автоматическое обновление домашнего IP-адреса Cloudflare DDNS ====== | ||
| + | |||
| + | |||
| < | < | ||
| Проверка API-токена | Проверка API-токена | ||
| Строка 7: | Строка 10: | ||
| # Cloudflare DynDNS Script for Windows | # Cloudflare DynDNS Script for Windows | ||
| # Конфигурация | # Конфигурация | ||
| - | $ZoneID = "ezvpLi0aD6mkQRaDc84SFuKbwp78PxvoAwBmKJwQSXMIktXhswigkjc0BEuvdS0Q" | + | $ZoneID = "JaYRnJAoKlHujNxXEBRWG1hkD/ |
| - | $ApiToken = "ezvpLi0aD6mh+kdo84IL1gG8u1s+WdJ+q+Jxm8E+rae1RSAuidi8pNi98cgC5SI13y8UGLqW29U=" | + | $ApiToken = "Gwl35a3UHXye2X0VsW9qVL5mpo+c6u/ |
| - | $RecordName = "JaYRnJAoKlFP/Nk1T9PAbZYYk16j6SrF" | + | $RecordName = "k7rhM3VJApTpPAldQR0rrQx6Z/BrRpuB" |
| $RecordType = " | $RecordType = " | ||
| Строка 116: | Строка 119: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ====== cloudflare_dyndns.vbs ====== | ||
| < | < | ||
| - | cloudflare_dyndns.bat | ||
| - | @echo off | + | Set objShell = CreateObject("Wscript.Shell") |
| - | cd /d "C: | + | objShell.Run "powershell.exe -ExecutionPolicy Bypass -NonInteractive |
| - | powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden | + | |
| </ | </ | ||
| - | < | ||
| - | homeip_add_task.ps1 | ||
| + | ===== Автоматическое обновление домашнего IP-адреса каждые 15 минут ===== | ||
| + | |||
| + | < | ||
| homeip_add_task.ps1 | homeip_add_task.ps1 | ||
| Строка 164: | Строка 169: | ||
| Write-Host " | Write-Host " | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Проверка локального IP и запись его на FTP ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | # Список сервисов для получения IP (в порядке приоритета) | ||
| + | $ipServices = @( | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ) | ||
| + | |||
| + | # Получение IP с резервными сервисами | ||
| + | $externalIP = $null | ||
| + | $usedService = "" | ||
| + | |||
| + | foreach ($service in $ipServices) { | ||
| + | try { | ||
| + | Write-Host " | ||
| + | $response = Invoke-RestMethod -Uri $service -TimeoutSec 10 | ||
| + | $externalIP = $response.ToString().Trim() | ||
| + | | ||
| + | # Проверка что получен валидный IP | ||
| + | if ($externalIP -match ' | ||
| + | $usedService = $service | ||
| + | Write-Host "IP успешно получен с $usedService : $externalIP" | ||
| + | break | ||
| + | } else { | ||
| + | Write-Host " | ||
| + | $externalIP = $null | ||
| + | } | ||
| + | } | ||
| + | catch { | ||
| + | Write-Host " | ||
| + | $externalIP = $null | ||
| + | } | ||
| + | } | ||
| + | |||
| + | if (-not $externalIP) { | ||
| + | Write-Host "Не удалось получить IP-адрес со всех сервисов" | ||
| + | exit 1 | ||
| + | } | ||
| + | |||
| + | # Параметры FTP | ||
| + | $ftpServer = " | ||
| + | $ftpUser = " | ||
| + | $ftpPass = " | ||
| + | $remoteFile = "/ | ||
| + | |||
| + | # Убедимся, | ||
| + | $ftpUri = " | ||
| + | Write-Host " | ||
| + | |||
| + | # Создание временного файла | ||
| + | $tempFile = [System.IO.Path]:: | ||
| + | $externalIP | Out-File -FilePath $tempFile -Encoding ASCII | ||
| + | |||
| + | try { | ||
| + | # Создание FTP-запроса | ||
| + | $ftpRequest = [System.Net.FtpWebRequest]:: | ||
| + | $ftpRequest.Method = [System.Net.WebRequestMethods+Ftp]:: | ||
| + | $ftpRequest.Credentials = New-Object System.Net.NetworkCredential($ftpUser, | ||
| + | $ftpRequest.UseBinary = $true | ||
| + | $ftpRequest.KeepAlive = $false | ||
| + | $ftpRequest.UsePassive = $true # Добавляем пассивный режим | ||
| + | |||
| + | # Чтение файла и отправка на FTP | ||
| + | $fileContent = [System.IO.File]:: | ||
| + | $ftpRequestStream = $ftpRequest.GetRequestStream() | ||
| + | $ftpRequestStream.Write($fileContent, | ||
| + | $ftpRequestStream.Close() | ||
| + | |||
| + | Write-Host " | ||
| + | | ||
| + | # Логирование успешной операции | ||
| + | $logEntry = " | ||
| + | $logEntry | Out-File " | ||
| + | } | ||
| + | catch { | ||
| + | Write-Host " | ||
| + | | ||
| + | # Дополнительная информация об ошибке | ||
| + | if ($_.Exception.InnerException) { | ||
| + | Write-Host " | ||
| + | } | ||
| + | | ||
| + | # Логирование ошибки | ||
| + | $errorEntry = " | ||
| + | $errorEntry | Out-File " | ||
| + | } | ||
| + | finally { | ||
| + | # Удаление временного файла | ||
| + | if (Test-Path $tempFile) { | ||
| + | Remove-Item $tempFile -Force | ||
| + | } | ||
| + | } | ||
| + | |||
| + | Write-Host " | ||
| + | </ | ||
| + | |||
| + | ==== homeip.vbs ==== | ||
| + | |||
| + | < | ||
| + | Set objShell = CreateObject(" | ||
| + | objShell.Run " | ||
| + | |||
| </ | </ | ||
cloudflare_dyndns.1759337802.txt.gz · Последнее изменение: (внешнее изменение)
