cloudflare_dyndns
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| cloudflare_dyndns [2025/10/11 13:17] – bonterkoz | cloudflare_dyndns [2025/11/06 14:21] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 119: | Строка 119: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ====== cloudflare_dyndns.vbs ====== | ||
| < | < | ||
| - | cloudflare_dyndns.vbs | ||
| Set objShell = CreateObject(" | Set objShell = CreateObject(" | ||
| Строка 167: | Строка 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.1760177869.txt.gz · Последнее изменение: (внешнее изменение)
