feat: multi-type server support — SQL, Redis, Grafana, Prometheus, Telnet, WinRM, RDP/VNC
Full implementation of multi-type server management across GUI and CLI: New clients: SQLClient (MariaDB/MSSQL/PostgreSQL), RedisClient, GrafanaClient, PrometheusClient, TelnetSession, WinRMClient, RemoteDesktopLauncher. New GUI tabs: QueryTab (SQL editor + Treeview), RedisTab (console + history), GrafanaTab (dashboards + alerts), PrometheusTab (PromQL + targets), PowershellTab (PS/CMD), LaunchTab (RDP/VNC external client). Infrastructure: TAB_REGISTRY for conditional tabs per server type, adaptive server_dialog fields, colored type badges in sidebar, status checker for all types (SSH/TCP/SQL/Redis/HTTP), 100+ i18n keys. CLI: ssh.py extended with --sql, --redis, --grafana-*, --prom-*, --ps, --cmd. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# Скилл /ssh — управление удалёнными серверами
|
||||
|
||||
Ты управляешь удалёнными серверами через SSH-утилиту.
|
||||
Ты управляешь удалёнными серверами через универсальную CLI-утилиту.
|
||||
Поддерживаются: SSH, SQL (MariaDB/MSSQL/PostgreSQL), Redis, Grafana, Prometheus, WinRM (PowerShell/CMD).
|
||||
|
||||
## ВАЖНО — Безопасность
|
||||
|
||||
@@ -18,7 +19,7 @@
|
||||
|
||||
Пользователь передаёт через `$ARGUMENTS`. Разбери и выполни.
|
||||
|
||||
## Команды
|
||||
## Общие команды
|
||||
|
||||
### Список серверов (безопасный — alias, тип, ключ, заметки)
|
||||
```bash
|
||||
@@ -35,6 +36,19 @@ python ~/.server-connections/ssh.py --info ALIAS
|
||||
python ~/.server-connections/ssh.py --status
|
||||
```
|
||||
|
||||
### Обновить заметки сервера
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --set-note ALIAS "описание сервера"
|
||||
```
|
||||
|
||||
### Удалить сервер
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --remove ALIAS
|
||||
```
|
||||
**Спроси подтверждение у пользователя перед удалением!**
|
||||
|
||||
## SSH-команды (тип: ssh)
|
||||
|
||||
### Выполнить команду на сервере
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py ALIAS "command"
|
||||
@@ -68,30 +82,98 @@ python ~/.server-connections/ssh.py ALIAS --install-key
|
||||
python ~/.server-connections/ssh.py ALIAS --ping
|
||||
```
|
||||
|
||||
### Обновить заметки сервера
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --set-note ALIAS "описание сервера"
|
||||
```
|
||||
Используй чтобы сохранить контекст: что на сервере работает, для чего он нужен.
|
||||
## SQL-команды (типы: mariadb, mssql, postgresql)
|
||||
|
||||
### Удалить сервер
|
||||
### Выполнить SQL-запрос
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --remove ALIAS
|
||||
python ~/.server-connections/ssh.py --sql ALIAS "SELECT * FROM users LIMIT 10"
|
||||
```
|
||||
**Спроси подтверждение у пользователя перед удалением!**
|
||||
|
||||
## Альтернативный способ (только если SSH-ключ установлен)
|
||||
### Список баз данных
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --sql-databases ALIAS
|
||||
```
|
||||
|
||||
### Список таблиц
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --sql-tables ALIAS
|
||||
python ~/.server-connections/ssh.py --sql-tables ALIAS mydb
|
||||
```
|
||||
|
||||
## Redis-команды (тип: redis)
|
||||
|
||||
### Выполнить Redis-команду
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --redis ALIAS "GET mykey"
|
||||
python ~/.server-connections/ssh.py --redis ALIAS "SET mykey myvalue"
|
||||
```
|
||||
|
||||
### Информация о Redis
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --redis-info ALIAS
|
||||
```
|
||||
|
||||
### Поиск ключей (SCAN)
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --redis-keys ALIAS "user:*"
|
||||
```
|
||||
|
||||
## Grafana-команды (тип: grafana)
|
||||
|
||||
### Список дашбордов
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --grafana-dashboards ALIAS
|
||||
```
|
||||
|
||||
### Список оповещений
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --grafana-alerts ALIAS
|
||||
```
|
||||
|
||||
## Prometheus-команды (тип: prometheus)
|
||||
|
||||
### Выполнить PromQL-запрос
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --prom-query ALIAS "up"
|
||||
python ~/.server-connections/ssh.py --prom-query ALIAS "rate(http_requests_total[5m])"
|
||||
```
|
||||
|
||||
### Список целей (targets)
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --prom-targets ALIAS
|
||||
```
|
||||
|
||||
### Список оповещений
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --prom-alerts ALIAS
|
||||
```
|
||||
|
||||
## WinRM-команды (тип: winrm)
|
||||
|
||||
### PowerShell
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --ps ALIAS "Get-Process"
|
||||
python ~/.server-connections/ssh.py --ps ALIAS "Get-Service | Where-Object {$_.Status -eq 'Running'}"
|
||||
```
|
||||
|
||||
### CMD
|
||||
```bash
|
||||
python ~/.server-connections/ssh.py --cmd ALIAS "dir C:\\"
|
||||
```
|
||||
|
||||
## Альтернативный способ (только SSH с установленным ключом)
|
||||
```bash
|
||||
unset SSH_ASKPASS && unset DISPLAY && ssh ALIAS "command"
|
||||
```
|
||||
|
||||
## Поведение
|
||||
|
||||
- **Auto-sudo**: если user на сервере не root — команды автоматически оборачиваются в `sudo -S`, пароль подаётся через stdin. Тебе НЕ нужно добавлять `sudo` в команду
|
||||
- **--no-sudo**: если команда не требует root (например `ls`, `cat`), используй `--no-sudo` для скорости
|
||||
- **Timeout**: 120 секунд на команду, 15 секунд на подключение
|
||||
- **Auto-sudo** (SSH): если user на сервере не root — команды автоматически оборачиваются в `sudo -S`, пароль подаётся через stdin. Тебе НЕ нужно добавлять `sudo` в команду
|
||||
- **--no-sudo** (SSH): если команда не требует root (например `ls`, `cat`), используй `--no-sudo` для скорости
|
||||
- **Timeout**: 120 секунд на SSH-команду, 10 секунд на SQL/Redis/HTTP-запросы, 15 секунд на подключение
|
||||
- **SSH-ключ**: пробуется первым, fallback на пароль если ключ не подходит
|
||||
- **Прогресс**: upload/download файлов >=1MB показывают 25/50/75% milestone, итог с размером/временем/скоростью
|
||||
- **Тип сервера**: определяется автоматически из конфигурации. `--list` показывает тип каждого сервера
|
||||
|
||||
## Правила
|
||||
|
||||
@@ -101,3 +183,5 @@ unset SSH_ASKPASS && unset DISPLAY && ssh ALIAS "command"
|
||||
- Если timeout — предложи проверить VPN/firewall/панель хостера
|
||||
- Файлы создаваемые на сервере должны иметь права 664 (owner+group rw)
|
||||
- При вопросе о серверах — СНАЧАЛА `--list`, потом `--info ALIAS` если нужны детали
|
||||
- SQL-запросы: используй `LIMIT` для больших таблиц, чтобы не перегружать вывод
|
||||
- Redis: используй SCAN, а не KEYS для больших баз
|
||||
|
||||
Reference in New Issue
Block a user