> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ipmideck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Интерактивная консоль

> Управляйте работающим сервером ipmideck из терминала: консоль оператора с закреплённым заголовком и действиями в одно нажатие для детализации, сессий, серверов, URL панели и адреса привязки.

Когда вы запускаете ipmideck в терминале, он отрисовывает интерактивную консоль оператора: закреплённый
заголовок с баннером и панелью помощи над живым прокручивающимся журналом. Каждое действие, это
одно нажатие клавиши, без меню, без мыши. Консоль работает в процессе рядом с сервером, поэтому
то, что вы видите, это живое состояние машины, на которой вы находитесь.

<Note>
  Консоль появляется только на настоящем **интерактивном терминале**, и stdin, и stdout должны быть
  TTY. Под Docker, systemd или когда stdout перенаправлен, ipmideck пропускает консоль
  полностью и просто пишет обычные прокручивающиеся журналы. См. [Где появляется консоль](#где-появляется-консоль).
</Note>

## Как это выглядит

Консоль это один полноэкранный вид: закреплённый заголовок, который вы всегда видите, над живым журналом,
который прокручивается под ним.

<Frame caption="The console right after start: the banner and help bar stay pinned at the top while the log tail scrolls below.">
  <img src="https://mintcdn.com/weremind/AEscsmW5B2jdwuWI/console/home.png?fit=max&auto=format&n=AEscsmW5B2jdwuWI&q=85&s=3f038250e1d7e5a038118c86ef7e2d5a" alt="ipmideck interactive console showing the banner, help bar, status line, and the scrolling log panel" width="1107" height="714" data-path="console/home.png" />
</Frame>

Заголовок никогда не прокручивается. Новые строки журнала появляются в панели под ним, и самая новая строка
всегда остаётся на экране. Вы нажимаете одну клавишу для действия; всё происходит в процессе
против сервера, который вы только что запустили.

## Заголовок

Верх экрана это фиксированный заголовок, который никогда не прокручивается. Он складывается, сверху вниз:

* Баннер ipmideck.
* **Панель помощи**: каждая клавиша действия и что она делает.
* **Строка состояния**: живое состояние сессии.
* Компактная строка благодарностей (автор, версия, лицензия).

Тело под заголовком это прокручивающийся хвост журнала. Самая новая строка всегда остаётся на
экране, поэтому только что появившийся URL или подтверждение никогда не обрезается снизу.

### Строка состояния

Строка состояния показывает три живых поля, разделённых `|`:

* **Verbosity**: текущий уровень журнала (`INFO`, `DEBUG` или `WARNING`).
* **Clients**: количество подключённых сейчас клиентов панели.
* **last**: последняя клавиша действия, которую вы нажали, как немедленная визуальная обратная связь.

## Клавиши действий

Каждое действие это одно нажатие клавиши. Панель помощи перечисляет их все:

| Клавиша | Действие                                            |
| ------- | --------------------------------------------------- |
| `v`     | Переключить **детализацию** журнала                 |
| `c`     | Открыть подвид подключённых **сессий**              |
| `s`     | Открыть подвид настроенных **серверов**             |
| `u`     | Показать **url** панели в журнале                   |
| `g`     | Проверка **обновлений** (печатает локальную версию) |
| `b`     | Открыть редактор **change-bind**                    |
| `r`     | **Перезапустить** сервер                            |
| `q`     | **Выйти** или вернуться к виду журнала из подвида   |
| `ESC`   | **Назад**, вернуться к виду журнала из подвида      |

Клавиши стрелок, функциональные и навигационные клавиши поглощаются и игнорируются, они никогда не конфликтуют с
действием и не считаются нажатием клавиши.

### v: детализация

`v` переключает уровень журнала во время выполнения по фиксированному трёхступенчатому циклу:

```
INFO → DEBUG → WARNING → INFO
```

`INFO` это значение по умолчанию. `DEBUG` показывает больше; `WARNING` показывает меньше. Изменение вступает в силу
немедленно на остаток сессии, и строка состояния обновляется соответственно.

<Note>
  Переключатель детализации меняет только **работающий** уровень. При следующей загрузке уровень из
  вашей конфигурации (или переменной окружения `IPMIDECK_LOGGING_LEVEL`) снова побеждает. См. [Конфигурацию](/ru/configuration).
</Note>

### c: сессии

`c` открывает подвид **Connected sessions**, таблицу только для чтения с клиентами панели,
подключёнными в данный момент, со столбцами:

* **IP**
* **Connected since**
* **User-Agent**

Нажмите `q` или `ESC`, чтобы вернуться к виду журнала.

<Frame caption="The Connected sessions sub-view (key c), one row per attached dashboard client.">
  <img src="https://mintcdn.com/weremind/AEscsmW5B2jdwuWI/console/connections.png?fit=max&auto=format&n=AEscsmW5B2jdwuWI&q=85&s=ae63f8235c95bf3cde8110d80407eb27" alt="Connected sessions table showing IP, Connected since, and User-Agent columns" width="1100" height="427" data-path="console/connections.png" />
</Frame>

### s: серверы

`s` открывает подвид **Configured servers**, таблицу только для чтения с BMC, с которыми ipmideck
настроен общаться, со столбцами:

* **Name**
* **Host**
* **Status**

Нажмите `q` или `ESC`, чтобы вернуться к виду журнала.

<Frame caption="The Configured servers sub-view (key s), listing each BMC and whether it is online.">
  <img src="https://mintcdn.com/weremind/AEscsmW5B2jdwuWI/console/servers.png?fit=max&auto=format&n=AEscsmW5B2jdwuWI&q=85&s=92eecf88dc0eab22e2cb10e44d9c8dc3" alt="Configured servers table showing Name, Host, and Status columns with online and offline servers" width="1107" height="366" data-path="console/servers.png" />
</Frame>

### u: url

`u` показывает URL панели (`scheme://host:port`) в теле журнала. Если сервер привязан к
адресу-маске (`0.0.0.0`, `::` или пустому), URL переписывается на
`127.0.0.1`, чтобы его действительно можно было открыть в браузере, `http://0.0.0.0:3000` это адрес
прослушивания, а не навигируемый.

<Frame caption="Key u prints the dashboard URL at the bottom of the log, rewritten to a reachable address.">
  <img src="https://mintcdn.com/weremind/AEscsmW5B2jdwuWI/console/url.png?fit=max&auto=format&n=AEscsmW5B2jdwuWI&q=85&s=dac700c68e0cdb9472732dcc4ba41373" alt="The console log with the dashboard URL printed at the bottom after pressing u" width="1103" height="713" data-path="console/url.png" />
</Frame>

### g: обновление

`g` печатает локальную версию и заметку о том, что онлайн-проверка обновлений поставляется с выпуском
pip. Он **не делает сетевого вызова**, ipmideck остаётся офлайн.

### r: перезапуск

`r` выполняет чистый перезапуск в процессе: ipmideck разбирает консоль, перечитывает
`config.yaml` и запускается заново. Используйте его после правки [change-bind](#b-change-bind), чтобы применить
новый адрес.

### q / ESC: выход и назад

* Из подвида (`sessions` или `servers`) и `q`, и `ESC` возвращают вас к виду журнала.
* Из вида журнала `q` запускает чистый выход, сервер завершается корректно.

## b: change-bind

`b` открывает редактор change-bind, встроенный запрос `host:port`, который заменяет панель помощи,
пока вы печатаете. Заголовок показывает текущую привязку как метку только для чтения `current: host:port`
и пустое поле `new:`, поэтому значение, которое вы печатаете, появляется немедленно и никогда не путается
с существующим.

<Frame caption="The change-bind editor (key b): the help bar is replaced by the current bind and an empty new host:port prompt.">
  <img src="https://mintcdn.com/weremind/AEscsmW5B2jdwuWI/console/bind.png?fit=max&auto=format&n=AEscsmW5B2jdwuWI&q=85&s=6ef6d976c814450f3758213d3b0f1b76" alt="The change-bind editor showing the current bind address and an empty new field with apply, cancel, and delete key hints" width="1099" height="219" data-path="console/bind.png" />
</Frame>

Клавиши внутри редактора:

* **Enter**: применить введённый `host:port`.
* **ESC**: отменить, ничего не меняя.
* **Backspace**: удалить последний символ.
* Любой печатный символ, добавить в буфер.

Ввод должен быть `host:port` с непустым хостом и портом, который является целым числом в
диапазоне **1–65535**. При корректном вводе ipmideck подтверждает новую привязку и напоминает, что перезапуск
требуется (нажмите `r`). При некорректном вводе он сообщает `Invalid host/port` и
ничего не меняется.

<Warning>
  Правка change-bind **не** действует немедленно, она записывается в конфигурацию и вступает в силу только после
  перезапуска. Нажмите `r`, чтобы применить её. И помните о приоритете: переменная окружения `IPMIDECK_SERVER_HOST` /
  `IPMIDECK_SERVER_PORT` или явный флаг `--host` / `--port` при следующей загрузке
  переопределяет то, что сохранила консоль. См. [Конфигурацию](/ru/configuration).
</Warning>

## Где появляется консоль

Интерактивная консоль зависит от настоящего TTY: ipmideck отрисовывает её только тогда, когда **и**
stdin, и stdout являются интерактивными терминалами. Когда они не являются, она деградирует до баннера плюс
обычные прокручивающиеся журналы и не устанавливает слушатель клавиш, поэтому ничто не крутится вхолостую на non-TTY.

Это означает, что консоль появляется, когда вы запускаете ipmideck напрямую в терминале:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck
  ```

  ```cmd cmd theme={null}
  ipmideck
  ```

  ```bash bash theme={null}
  ipmideck
  ```
</CodeGroup>

Она **не** появляется, когда:

* Запуск под **Docker**: контейнер запускает uvicorn напрямую и никогда не достигает
  пути консоли; вы получаете обычные журналы контейнера (`docker logs`).
* Запуск под **systemd** или любым менеджером служб, где stdout не является терминалом.
* **Перенаправление** stdout (напр. `ipmideck > server.log`): stdout больше не TTY.

В каждом случае non-TTY сервер всё равно работает нормально и привязывается к тому же значению по умолчанию
`0.0.0.0:3000`; вы просто получаете обычные журналы вместо живой консоли.

<Note>
  `ipmilink` это обратно совместимый псевдоним для `ipmideck`, оба запускают одну и ту же консоль.
</Note>

## Следующие шаги

* [Запуск ipmideck](/ru/running): запуск, обслуживание и правила приоритета привязки.
* [CLI](/ru/cli): каждая подкоманда и флаг подробно.
* [Конфигурация](/ru/configuration): установите адрес привязки, детализацию и интервалы опроса.
* [Установка](/ru/installation): установите с помощью Docker или pip.
