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

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


cloudflare_dyndns

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
cloudflare_dyndns [2025/10/01 20:11] bonterkozcloudflare_dyndns [2025/11/06 14:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Автоматическое обновление домашнего IP-адреса Cloudflare DDNS ======
 +
 +
 <code> <code>
 Проверка API-токена Проверка API-токена
Строка 116: Строка 119:
 } }
 </code> </code>
 +
 +
 +====== cloudflare_dyndns.vbs ======
  
 <code> <code>
-cloudflare_dyndns.vbs 
  
 Set objShell = CreateObject("Wscript.Shell") Set objShell = CreateObject("Wscript.Shell")
 objShell.Run "powershell.exe -ExecutionPolicy Bypass -NonInteractive -File ""C:\Users\shs\Documents\cloudflare_dyndns.ps1""", 0, False objShell.Run "powershell.exe -ExecutionPolicy Bypass -NonInteractive -File ""C:\Users\shs\Documents\cloudflare_dyndns.ps1""", 0, False
 </code> </code>
 +
 +
 +===== Автоматическое обновление домашнего IP-адреса каждые 15 минут =====
  
 <code> <code>
Строка 161: Строка 169:
  
 Write-Host "Задача `"$TaskName`" успешно создана!" -ForegroundColor Green 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>
 +Set objShell = CreateObject("Wscript.Shell")
 +objShell.Run "powershell.exe -ExecutionPolicy Bypass -NonInteractive -File ""C:\Users\shs\Documents\homeip.ps1""", 0, False
 +
 </code> </code>
cloudflare_dyndns.1759338683.txt.gz · Последнее изменение: (внешнее изменение)

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