Если ты работаешь с TrueNAS и хочешь выйти за рамки веб-интерфейса, тебе нужно освоить shell. Командная строка в TrueNAS — это мощный инструмент для тонкой настройки, автоматизации и решения сложных задач. Давай разберем, как получить доступ к shell, какие команды использовать и как не сломать систему.
Что такое shell в TrueNAS и зачем он нужен
TrueNAS Core основан на FreeBSD, а TrueNAS Scale — на Debian Linux. В обоих случаях под капотом работает полноценная операционная система с bash или подобными оболочками. Веб-интерфейс — это лишь удобная надстройка, но для некоторых операций нужен прямой доступ к shell.
• Настройка параметров, недоступных в GUI
• Отладка проблем с сетью или ZFS
• Автоматизация задач через скрипты
• Мониторинг системы в реальном времени
• Восстановление доступа при проблемах с веб-интерфейсом
Способы доступа к shell в TrueNAS
1. Через веб-интерфейс (Shell в браузере)
Самый простой способ — использовать встроенный терминал:
- Зайди в веб-интерфейс TrueNAS
- В левом меню выбери "System Settings" → "Shell"
- Появится терминал с ограниченными правами (обычно пользователь root)
2. Подключение по SSH
Для постоянной работы настрой SSH доступ:
# Включи SSH в веб-интерфейсе:
# Services → SSH → нажми "Start" и "Autostart"
# Подключись с клиента:
ssh root@ip_адрес_truenas
# или с указанием порта (по умолчанию 22):
ssh -p 22 root@192.168.1.100
3. Прямой доступ через консоль
Если у тебя физический доступ к серверу или подключение по IPMI, можно использовать локальную консоль. Нажми Enter при загрузке, и увидишь приглашение командной строки.
Основные команды shell для TrueNAS
Вот что тебе понадобится в первую очередь:
| Команда | Описание | Пример |
|---|---|---|
zpool status |
Статус ZFS пулов | zpool status tank |
zfs list |
Список datasets | zfs list -t all |
midclt call |
API вызовы из командной строки | midclt call system.info |
tmux |
Менеджер терминалов (сессии не пропадут) | tmux new -s mysession |
iostat |
Статистика дисков | iostat -dx 2 |
Практические примеры работы с shell
Пример 1: Мониторинг системы
# Проверка использования дисков
df -h
# Память и своп
free -h
# Загрузка CPU
top -P
# Температуры (если поддерживается)
sysctl -a | grep temperature
# Сетевые интерфейсы
ifconfig
netstat -tulpn
Пример 2: Работа с ZFS через shell
# Создание снапшота
zfs snapshot tank/data@$(date +%Y%m%d_%H%M%S)
# Просмотр снапшотов
zfs list -t snapshot -r tank
# Клонирование dataset
zfs clone tank/data@snapshot_name tank/cloned_data
# Проверка целостности данных
zpool scrub tank
# Добавление диска в пул
zpool add tank mirror /dev/ada2 /dev/ada3
Пример 3: Автоматизация через скрипты
Создай скрипт для регулярных задач:
#!/bin/bash
# /root/scripts/backup_snapshots.sh
POOL="tank"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)
# Создание снапшота для всех datasets
for dataset in $(zfs list -H -o name -r $POOL | grep -v @); do
if [ "$dataset" != "$POOL" ]; then
zfs snapshot "${dataset}@auto_${DATE}"
echo "Создан снапшот для ${dataset}"
fi
done
# Очистка старых снапшотов
zfs list -t snapshot -H -o name | grep "@auto_" | while read snap; do
snap_date=$(echo $snap | grep -o "auto_[0-9]\{8\}_" | cut -d'_' -f2)
if [ ! -z "$snap_date" ]; then
days_old=$(( ($(date +%s) - $(date -d "${snap_date:0:4}-${snap_date:4:2}-${snap_date:6:2}" +%s)) / 86400 ))
if [ $days_old -gt $RETENTION_DAYS ]; then
zfs destroy "$snap"
echo "Удален старый снапшот: $snap"
fi
fi
done
Настройка окружения shell
Для удобной работы настрой свой shell:
# Редактируем .bashrc или .profile
nano ~/.bashrc
# Добавляем полезные алиасы
alias ll='ls -la'
alias zstatus='zpool status'
alias zlist='zfs list'
alias services='service --status-all'
# Цветной prompt
PS1='\[\033[1;32m\]\u@\h:\[\033[1;34m\]\w\[\033[0m\]\$ '
# История с временными метками
export HISTTIMEFORMAT="%d/%m/%y %T "
export HISTSIZE=10000
Безопасность при работе с shell
- Не работай от root без необходимости: Создай отдельного пользователя с sudo правами
- Используй ключи SSH вместо паролей: Отключи парольную аутентификацию в настройках SSH
- Ограничь доступ по IP: Настрой firewall в TrueNAS или используй fail2ban
- Ведение логов: Все действия в shell логируются в /var/log/auth.log и /var/log/messages
- Бэкап конфигурации: Перед изменениями делай бэкап через System → General → Save Config
Решение частых проблем через shell
Проблема: Веб-интерфейс не отвечает
# Проверяем службу
service middlewared status
# Перезапускаем если нужно
service middlewared restart
# Смотрим логи
tail -f /var/log/middlewared.log
Проблема: Сеть не работает
# Смотрим конфигурацию сети
ifconfig -a
# Проверяем маршруты
netstat -rn
# Тестируем DNS
nslookup google.com
# Перезапускаем сеть (осторожно!)
service netif restart
Проблема: Диски не определяются
# Смотрим все диски
gpart show
camcontrol devlist
lsblk
# SMART статус
smartctl -a /dev/ada0
# Информация о дисках
geom disk list
Полезные ресурсы и команды
Документация в системе
man zpool— документация по ZFSman freebsd— системные вызовы (для Core)man bash— справка по shell
Системные утилиты
tmux— сессии терминалаhtop— продвинутый мониторингncdu— анализ использования дискаtcpdump— анализ сетевого трафика
Shell в TrueNAS открывает полный контроль над системой. Начинай с простых команд, всегда проверяй что делаешь, и не бойся экспериментировать в тестовой среде. Помни: с большой силой приходит большая ответственность.