Удаление туннеля с устройства¶
Скрипты dixsu-remove полностью удаляют device_client с устройства:
останавливают сервис, убивают процесс, удаляют service-файл.
Работают на любой платформе без предварительной настройки.
Быстрый старт¶
Параметры¶
| Параметр | sh-скрипт | PowerShell | Описание |
|---|---|---|---|
| Slug | SLUG=myslug или первый аргумент |
-Slug myslug |
Обязательный. Имя слага для удаления |
| Dry-run | --dry-run |
-DryRun |
Показать что будет сделано, ничего не менять |
| Удалить бинарник | --remove-binary |
-RemoveBinary |
Также удалить бинарник device_client |
Примеры:
# Показать что произойдёт (без изменений)
SLUG=myslug sh dixsu-remove.sh --dry-run
# Удалить туннель и бинарник
SLUG=myslug sh dixsu-remove.sh --remove-binary
# Windows — dry-run
.\dixsu-remove.ps1 -Slug myslug -DryRun
# Windows — удалить туннель и бинарник
.\dixsu-remove.ps1 -Slug myslug -RemoveBinary
Как работает sh-скрипт¶
Скрипт написан на POSIX sh (совместим с bash, dash, ash, BusyBox) и работает без внешних зависимостей.
1. Определение платформы и init-системы¶
uname -s → Linux / Darwin
↓
/etc/openwrt_release? → procd (OpenWrt)
rc-service доступен? → OpenRC (Alpine, PostmarketOS)
systemctl доступен? → systemd (Debian, Ubuntu, Arch, RPi OS)
uname = Darwin? → launchd (macOS)
2. Удаление сервиса¶
В зависимости от init-системы:
| Init | Действия |
|---|---|
| systemd | systemctl stop/disable device-client-{slug} → удалить .service → daemon-reload |
| OpenRC | rc-service stop → rc-update del → удалить /etc/init.d/device-client-{slug} |
| procd | /etc/init.d/device-client-{slug} stop/disable → удалить скрипт |
| launchd | launchctl unload → удалить ~/Library/LaunchAgents/su.dix.device-client.{slug}.plist |
Имя сервиса по умолчанию: device-client-{slug} — именно так его создаёт install.sh.
3. Docker Compose¶
Если в директории найден .env с COMPOSE_PROFILES=tunnel:
docker stop+docker rmконтейнера сdevice_client {slug}в команде- Убирает
tunnelизCOMPOSE_PROFILESв.env
4. Kill процесса¶
Ищет через ps aux | grep "device_client.*{slug}" (и BusyBox-вариант ps).
Посылает SIGTERM, через 1 сек — SIGKILL если процесс не завершился.
Как работает PowerShell-скрипт¶
1. NSSM сервис¶
Перебирает все сервисы из nssm list и проверяет AppParameters на наличие
имени слага. Если найден — nssm stop + nssm remove ... confirm.
2. Windows Service (без NSSM)¶
Ищет через Get-Service по имени device-client-{slug}, затем через
Get-WmiObject Win32_Service по пути бинарника. Stop-Service + sc.exe delete.
3. Scheduled Task¶
Get-ScheduledTask — проверяет имя задачи и аргументы Actions на совпадение
со slugом. Stop-ScheduledTask + Unregister-ScheduledTask -Confirm:$false.
4. Kill процесса¶
Get-Process по имени device_client*, затем Get-WmiObject Win32_Process
для проверки командной строки. Stop-Process -Force.
Что НЕ делает скрипт¶
- Не отзывает токен — токен остаётся действующим на сервере dix.su. Отозвать: dix.su → Личный кабинет → «Перевыпустить токен».
- Не удаляет приложение пользователя — только
device_client. - Не трогает Docker-контейнеры кроме туннельного (профиль
tunnel).
Ручное удаление¶
Если скрипт не сработал, вот что он делает под капотом:
Связанные гайды¶
- Установка device_client — NSSM, Scheduled Task, Linux/macOS
- Перенос туннеля на другое устройство
- Безопасность токена