Авторская информация о системном администрировании.
# uname -a
Linux stapp01.stratos.xfusioncorp.com 5.4.0-1065-gcp #69~18.04.1-Ubuntu SMP Sat Feb 12 01:39:35 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Ага, Ubuntu. Пытаюсь поставить туда ntp:
apt install ntp
apt-get install ntp
bash: apt: command not found
Фиг вам, как говорится. Нету пакетного менеджера. Окей, думаю я, вызов принят. Не всё так просто. Смотрю, что с настройкой времени:
# timedatectl status
Помимо прочего указано:
NTP enabled: n/a
Раз пакетного менеджера нет, пробую через службу systemctl настроить:
# timedatectl set-ntp true
Failed to set ntp: NTP not supported.
Опять фиг вам. Без установленного NTP сервера это не работает. Тут я что-то подзалип. Не понял, что делать дальше. Чисто наугад зашёл в /usr/bin и решил посмотреть, что там есть. Обнаружил yum. Что за фигня. Проверяю систему:
# cat /etc/os-release
NAME="CentOS Linux"
Система на самом деле Centos 7. Вот это поворот. Откуда упоминание Ubuntu в описании системы? Дальше делаю:
# yum install chrony
Добавляю нужный сервер в конфиг /etc/chrony.conf, не запускаю службу, так как в задании указали, что это произойдет автоматически ночью, а просто добавляю в автозагрузку:
# systemctl enable chronyd
Вроде всё ОК, сдаю задание. В результате получаю Failed. Ошибка:
- 'ntp' is not installed on App Server 1
Расстроился. Ну что за ерунда. В задании указано, установить NTP server. Chrony тоже NTP Server и обычно на Centos ставят именно его, так как он по умолчанию идёт в системе. Получается нужно было установить пакет ntp и настроить его.
В общем, от итога получил небольшое разочарование, но в целом понравилось немного поднапрячь мозги и разобраться в проблеме. Я так и не понял, с версией системы специально такую подставу сделали, или это я чего-то не понял. В Centos 7 обычно ядро типа такого 3.10.0-1160.36.2.el7.x86_64, а тут 5.4.0-1065-gcp #69~18.04.1-Ubuntu стояло.
В целом, симулятор сисадмина интересный. Рекомендую попробовать проходить задания. Немного полезно, немного интересно.
#обучениеrestic init -r /mnt/backup
В этот момент будет сгенерирован ключ для шифрования и создана структура каталогов репозитория. Пример для инициализации репозитория по sftp:
restic init -r sftp:user@host:/mnt/backup
Бэкапим:
restic -r sftp:user@host:/mnt/backup backup /data
Смотрим список внепшотов в репозитории:
restic -r sftp:user@host:/mnt/backup snaphots
Смотрим список файлов в снепшоте:
restic -r sftp:user@host:/mnt/backup ls -l latest
Восстанавливаем файлы:
restic -r sftp:user@host:/mnt/backup restore latest \
--target=/restore/
Для всех операций поддерживаются списки include или exclude. Есть команды для быстрого сравнения снепшотов.
Думаю, вы получили представление, как всё это работает. Утилита консольная и хорошо подойдёт для скриптов. Авторы говорят, что Restic очень быстро работает. Я тестов не проводил. Из неудобств отметил то, что Restic надо ставить на сам хост, где лежат данные. Из документации я не понял, как с одного сервера с Restic забирать данные по ssh с других серверов.
Мне Restic сильно напомнил Borg. Подозреваю, что проблемы у него будут те же. Например, как будет выглядеть листинг снепшота, где хранится 500 тысяч файлов? Но в целом выглядит интересно. Основная фишка - снепшоты и дедупликация из коробки и бесплатно. Есть хорошая документация с практическими примерами.
Сайт - https://restic.net/
Исходники - https://github.com/restic/restic
Документация - https://restic.readthedocs.io/en/latest/
#backuppowershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
Установится служба sshd, которую потом надо вручную запустить:
net start sshd
Не забудьте настроить firewall, открыв 22 порт на вход. После этого вы можете подключаться к винде по ssh, использую её стандартные учётки. После логина окажитесь в домашней директории пользователя. В качестве shell у вас будет powershell. Странно было сразу не догадаться об этом, но мне в голову такая идея не пришла.
Для службы sshd в рабочей директории есть конфиг sshd_config с таким же форматом, как в Linux. Так что к винде с настроенным ssh можно подключаться с помощью scp или rsync. Никакого лишнего софта не надо. Очень удобно. Надо было давно попробовать. Под одной учётной записью можно подключиться по rdp и ssh. Они не мешают друг другу.
Если в системе установлен WSL, то в качестве оболочки может быть установлен bash. Для этого надо поменять в реестре значение. Либо вручную, либо через powershell:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force
Пользуется кто-то этой штукой на винде? Она скоро от линукса отличаться не будет.
#windows #terminal #bash# echo "dima,vova,vasya,peter,sergey" | cut -d ',' -f 2,4
vova,peter
Я указал, что разделитель запятая и вывел 2 и 4 слово. В общем случае выводить отдельные столбцы удобнее через awk, но только в том случае, когда они чётко разделены между собой пробелами. Вот эти две команды будут равнозначны, но как по мне awk проще и нагляднее:
# echo "dima vova vasya peter sergey" | cut -d ' ' -f 2,4
# echo "dima vova vasya peter sergey" | awk '{print $2,$4}'
vova peter
Если же используется какой-то другой символ в качестве разделителя, команда cut очень удобна. Например, если надо как-то обработать файл /etc/passwd, что бывает не редко. Там значения разделены двоеточиями. Выведем имена пользователей и оболочку, которую они используют:
# cut -d ':' -f 1,7 /etc/passwd
root:/bin/bash
bin:/sbin/nologin
Либо просто выводим пользователей системы:
# cut -d ':' -f 1 /etc/passwd
Иногда бывает нужно заменить выходной разделитель на какой-то другой символ. Например, пробел. Делается это так:
# cut -d ':' -f 1,7 /etc/passwd --output-delimiter='_'
root /bin/bash
bin /sbin/nologin
Ещё одна полезная возможность команды cut - обрезать какой-то символ в строке. При этом можно задать, начиная с какого символа мы будет отображать информацию. Это актуально для файлов или списков, где в начале строки есть какие-то лишние символы, которые надо убрать. Например, если в терминале посмотреть список history, то видно, что само название команды начинается только с 8-го символа. До этого идут пробелы и порядковый номер команды в списке истории. Можно всё это вырезать и отобразить только команду:
# history | grep git | cut -c8-
Таким образом очень просто составить список наиболее популярных команд:
# history | cut -c8- | sort | uniq -c | sort -rn | head
С помощью cut в скриптах часто проверяют версию ядра, разрядность, тип процессора и т.д.:
# uname -a | cut -d " " -f 3
4.18.0-240.8.1.el8_3.x86_64
# uname -a | cut -d " " -f 12
x86_64
# cat /proc/cpuinfo | grep "name" | cut -d : -f2 | uniq
Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
#bash #terminalgit clone https://github.com/osTicket/osTicket
cd osTicket
php manage.php deploy --setup /var/www/htdocs/osticket/
Функционал osTicket типовой для подобных продуктов: дашборды и отчёты, в том числе по учёту SLA, документация с ответами на типовые вопросы, портал для клиентов, создание заявок из email. Отдельно можно отметить возможность создавать задачи для сотрудников поддержки. Задачи могут быть привязаны к заявкам, либо быть сами по себе.
Выглядит osTicket так себе. По внешнему виду сразу понятно, что продукт из далёкого прошлого, откуда пришли otrs и itop. Если сравнивать osticket с otrs, то первая проще в настройке, более логичная и понятная. Но и функционал поменьше.
В osTicket есть поддержка API для интеграции с другими приложениями. Есть поддержка разных типов учётных записей с разными правами доступа. То есть система весьма зрелая и готовая для больших внедрений. Есть нормальный перевод на русский язык. Функционал можно расширять с помощью плагинов. К примеру, есть плагин для интеграции с LDAP.
Помимо open source версии есть платный облачный сервис и платная техническая поддержка. Если выбираете себе selfhosted helpdesk, osticket обязательно надо посмотреть.
Сайт - https://osticket.com/
Исходники - https://github.com/osTicket/osTicket
Документация - https://docs.osticket.com/en/latest/
#helpdesk