niikn: PowerShell-версия скрипта установки NetBird
Чище .bat-версии: автопроверка прав без re-exec, нативная Windows кодировка (без chcp), цветной вывод, прямой запуск через 'irm <url>/download | iex'. Публичная ссылка: https://dttb.ru/s/jr3CAej6nDaazCW/download
This commit is contained in:
111
snippets/netbird-niikn-install.ps1
Normal file
111
snippets/netbird-niikn-install.ps1
Normal file
@@ -0,0 +1,111 @@
|
||||
# =============================================================================
|
||||
# Установка NetBird для сотрудников НИИКН
|
||||
#
|
||||
# Запуск:
|
||||
# PowerShell от имени администратора, одна строка:
|
||||
# irm https://dttb.ru/s/<TOKEN>/download | iex
|
||||
# или напрямую:
|
||||
# Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
# .\netbird-niikn-install.ps1
|
||||
#
|
||||
# Что делает:
|
||||
# - Проверяет права администратора (требуется)
|
||||
# - Скачивает последнюю версию installer с pkgs.netbird.io
|
||||
# - Устанавливает silent
|
||||
# - Подключает с корпоративным setup-key → группа NIIKN → NetBird route
|
||||
# на 2.63.246.0/24 автоматом (для обхода блокировки nspd.gov.ru)
|
||||
# - Выводит статус подключения
|
||||
#
|
||||
# Версия: 2026-04-21
|
||||
# =============================================================================
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$ProgressPreference = 'SilentlyContinue'
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
|
||||
$SetupKey = '6507CC68-2919-4D04-AB8E-3F8507906220'
|
||||
$InstallerUrl = 'https://pkgs.netbird.io/windows/x64/netbird_installer_x64.exe'
|
||||
$TmpFile = Join-Path $env:TEMP 'netbird_installer_niikn.exe'
|
||||
$NbExe = 'C:\Program Files\Netbird\netbird.exe'
|
||||
$MgmtUrl = 'https://api.netbird.io:443'
|
||||
|
||||
function Write-Step($msg) { Write-Host "[>] $msg" -ForegroundColor Cyan }
|
||||
function Write-Ok($msg) { Write-Host " OK: $msg" -ForegroundColor Green }
|
||||
function Write-Err($msg) { Write-Host "[X] $msg" -ForegroundColor Red }
|
||||
|
||||
# --- Проверка: админ? ---
|
||||
$isAdmin = ([Security.Principal.WindowsPrincipal] `
|
||||
[Security.Principal.WindowsIdentity]::GetCurrent() `
|
||||
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||
|
||||
if (-not $isAdmin) {
|
||||
Write-Err 'Запустите PowerShell от имени администратора и выполните команду заново.'
|
||||
Write-Host ''
|
||||
Write-Host 'Как запустить от администратора:' -ForegroundColor Yellow
|
||||
Write-Host ' 1. Пуск -> наберите "PowerShell"'
|
||||
Write-Host ' 2. ПКМ по "Windows PowerShell" -> "Запустить от имени администратора"'
|
||||
Write-Host ' 3. В открывшемся окне выполните команду установки ещё раз'
|
||||
Read-Host 'Нажмите Enter для выхода'
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host ''
|
||||
Write-Host '============================================================'
|
||||
Write-Host ' Установка корпоративного VPN NetBird для НИИКН'
|
||||
Write-Host '============================================================'
|
||||
Write-Host ''
|
||||
|
||||
# --- 1. Installer: нужен? ---
|
||||
if (Test-Path $NbExe) {
|
||||
Write-Step 'NetBird уже установлен - пропускаю скачку/установку'
|
||||
} else {
|
||||
Write-Step 'Скачиваю установщик NetBird...'
|
||||
try {
|
||||
Invoke-WebRequest -Uri $InstallerUrl -OutFile $TmpFile -UseBasicParsing
|
||||
Write-Ok "сохранён в $TmpFile"
|
||||
} catch {
|
||||
Write-Err "Не удалось скачать: $($_.Exception.Message)"
|
||||
Read-Host 'Нажмите Enter'; exit 1
|
||||
}
|
||||
|
||||
Write-Step 'Устанавливаю NetBird (silent, 30-60 сек)...'
|
||||
Start-Process -FilePath $TmpFile -ArgumentList '/S' -Wait
|
||||
Start-Sleep -Seconds 8
|
||||
|
||||
if (-not (Test-Path $NbExe)) {
|
||||
Write-Err 'Установка не прошла - netbird.exe не найден.'
|
||||
Read-Host 'Нажмите Enter'; exit 1
|
||||
}
|
||||
Write-Ok 'установлен'
|
||||
}
|
||||
|
||||
# --- 2. Подключение с setup-key ---
|
||||
Write-Step 'Подключаю к корпоративной сети (группа NIIKN)...'
|
||||
try {
|
||||
& $NbExe up --setup-key $SetupKey --management-url $MgmtUrl 2>&1 | ForEach-Object {
|
||||
Write-Host " $_"
|
||||
}
|
||||
} catch {
|
||||
Write-Err "Ошибка при подключении: $($_.Exception.Message)"
|
||||
Read-Host 'Нажмите Enter'; exit 1
|
||||
}
|
||||
|
||||
Start-Sleep -Seconds 3
|
||||
|
||||
# --- 3. Статус ---
|
||||
Write-Step 'Проверяю статус...'
|
||||
Write-Host ''
|
||||
& $NbExe status
|
||||
Write-Host ''
|
||||
|
||||
# --- cleanup ---
|
||||
if (Test-Path $TmpFile) { Remove-Item $TmpFile -Force -ErrorAction SilentlyContinue }
|
||||
|
||||
Write-Host '============================================================' -ForegroundColor Green
|
||||
Write-Host ' ГОТОВО' -ForegroundColor Green
|
||||
Write-Host '============================================================' -ForegroundColor Green
|
||||
Write-Host ''
|
||||
Write-Host ' Откройте https://nspd.gov.ru/ в браузере - должно работать.'
|
||||
Write-Host ' VPN подключается автоматически при каждой загрузке Windows.'
|
||||
Write-Host ''
|
||||
Read-Host 'Нажмите Enter для выхода'
|
||||
Reference in New Issue
Block a user