ServerAdmin.ru
30.8K subscribers
510 photos
45 videos
20 files
2.79K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
​​Опять сегодня тема про мониторинг Zabbix. Последнее время много им занимался. Сегодня речь пойдёт про софтовый рейд Mdadm. Я абсолютно всегда настраиваю его мониторинг, если он используется.

Давно уже наколхозил простенькую проверку статуса mdamd:
egrep -c "\[.*_.*\]" /proc/mdstat
И много лет использую её в Zabbix. Вопрос по мониторингу статуса массива mdamd она полностью решает.

Решил посмотреть что-то более удобное и функциональное. Нашёл репозиторий на github:

https://github.com/linuxsquad/zabbix_mdraid

Он хоть и старый, но полностью рабочий. Шаблон без проблем и каких-либо правок импортировал в Zabbix Server 6.0. Потестировал скрипт на сервере. Всё полностью рабочее. Главное, не забыть выдать пользователю zabbix через sudo разрешение на запуск скрипта, который обращается к /sbin/mdadm.

Шаблон удобен, с автообнаружением. Имеет 10 метрик, посмотреть их можно на картинке. Триггер один — на статус массива. Если он в состоянии degraded|resyncing|recovering|Not Started, будет оповещение.

В общем, решение рабочее, можно смело пользоваться.

#zabbix
​​Одна из самых популярных рубрик на канале это тема с консольными командами и однострочными bash скриптами. При этом всё самое интересное и полезное, чем сам пользуюсь, я уже публиковал, а повторяться не очень люблю. Тем не менее, аудитория постоянно растёт и меняется, и по вопросам в комментариях я вижу, что есть много людей, которые не читали мои старые публикации.

Решил сделать подборку наиболее популярных по сохранениям постов на тему консольных команд.

Обработка строк с помощью awk, sed, grep, cat
Анализ сетевых метрик сервера через консоль
Общий анализ нагрузки на систему по cpu и памяти
Анализ нагрузки на дисковую подсистему
Информация о железе через консоль
Работа с файлами (поиск дубликатов, рекурсивный листинг и т.д.)
Работа с файлами (правка конфигов, сравнение директорий и т.д.)
Анализ логов веб сервера
Конструктор для консольной команды find
Мои примеры поиска с помощью find
Примеры с утилитой grep
Работа с дисками и разделами
Примеры использования ps (processes status)
Анализ дисковой активности в Linux
Низкоуровневое профилирование нагрузки (perf и ftrace)
Использование date в скриптах

#bash #подборка
▶️ Посмотрел на днях интересное видео, которым хочу поделиться с вами.

Новое лицо OSINT. 20 полезных приемов поиска в цифровом мире
https://www.youtube.com/watch?v=Al_pCdEz7UA

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

Например, как раздать десятку людей один и тот же секретный документ без видимых различий, но при этом чтобы можно было легко понять, чей именно документ всплыл в публичном доступе? Ставим в каждой версии документа где-то один раз два пробела вместо одного, но у каждого в разных местах. Заметить обычному человеку такое трудно. А вот если ты знаешь, куда смотреть, то сразу поймешь, чей документ уплыл в сеть.

Там много таких необычных примеров, которые лежат на поверхности, но до них трудно догадаться. Он рассказал, как ловят наркоторговцев, как в 90-е на рынке чувак узнавал самые популярные товары по выброшенным коробкам на мусорке, как через boxberry можно было отслеживать посылки почти любого юр. лица и т.д.

В общем, мне было интересно и кое-где полезно. Информация для общего образования и расширения кругозора.

#разное
Прикольная картинка, которую я первый раз увидел в ролике на песню:

Научно-технический рэп - Надо было ставить линукс
https://www.youtube.com/watch?v=W87wOCSPA08

Вспомнил про неё, когда делал заметку про старый ноут для детей, куда я поставил Windows. Что тут, что в комментах в ВК, нашлись люди, которые стали говорить, что лучше поставить Linux и приучить детей к нему с детства.

Я с этой позицией не согласен. Считаю, что базу надо давать наиболее популярную и функциональную. А дальше уже смотреть по обстоятельствам. Я сам на Windows работаю, хотя были идеи перейти на Linux, но взвесив все за и против, отказался. Мне сейчас однозначно удобнее на Windows, где Linux тоже есть.

Да и какому линуксу учить детей? Они все разные. У меня у старшего в школе информатика. Там компьютерный класс и стоит Linux. Я спросил у админов, что за ОС. Они мне назвали какую-то сборку, про которую я вообще ни разу не слышал. Сразу забыл. Чисто для попила куплена в школы. И что мне дома ставить? Будут две разные системы? Придёт ребёнок в гости к кому-то и не поймет, как с компом обращаться, потому что там с вероятностью близкой к 100% будет Windows.

У меня сейчас все дети умеют взаимодействовать с компьютером (4,6,8 лет). Младшие могут обращаться с мышкой и клавиатурой, что-то делать в программе, типа paint, или играть в Minecraft. Старший почти полностью владеет компьютером. Сам открывает МЭШ, смотрит домашку, задания выполняет, ищет в поисковике что-то, использует переводчик, смотрит ютуб. Возможно он вообще с IT не будет связан, пока не вижу в нём стремлений к технике, в отличие от младшего.

Если появится какой-то популярный лидер среди Linux, с удовольствием его буду предлагать в том числе и детям. Но пока это не так. Сейчас Linux это зоопарк разных систем и графических оболочек. Это не подходит для массового использования домашних пользователей.

#мем
​​Одной из существенных проблем гипервизора HyperV является невозможность пробросить USB устройство в виртуальную машину.

Есть решение этой проблемы — open source проект usbipd-win. С его помощью можно пробросить USB устройство, подключенное к машине под управлением Windows в любую другую по сети, либо в локальный Linux, работающий по WSL2 (инструкция от microsoft).

На базе проекта usbip существует много различных продуктов. Конкретно usbipd-win это только сервер под Windows. Я начал с него, потому что он максимально просто устанавливается и настраивается. Можно через winget поставить:
> winget install usbipd
Либо скачать msi пакет из репы. Далее смотрим список подключенных устройств и публикуем одно из них:
> usbipd list
> usbipd bind --busid=4-3

Опубликованный с помощью этого сервера ключ можно подключить к Linux или Windows машине. Под Linux достаточно установить соответствующие пакеты с утилитой и модулем ядра. Для Debian вот эти:
# apt install usbip hwdata usbutils

После этого можно смотреть список опубликованных ключей и подключать один из них:
# usbip list --remote=10.20.1.56
# usbip attach -remote=10.20.1.56 --busid=4-3

Для подключения этих ключей в Windows, нужно установить Windows Agent. Взять его можно из другого репозитория usbip-win. Там есть инструкция по установке агента. Она немного замороченная, по сравнению с установкой сервера, но ничего особо сложного нет. Вопрос решаемый.

Точно так же можно публиковать USB устройства с Linux по сети на другие машины. Есть пакет сервера и под OpenWRT. Таким простым и бесплатным способом можно решить вопрос проброса USB ключей. Для HASP работает отлично. Заметку имеет смысл сохранить.

#windows #hyperv
​​▶️ На днях Zabbix выложили на канале некоторые записи с прошедшего митапа на английском языке. Я бегло посмотрел их все с субтитрами на 1,5 скорости. Наиболее полезным показалось выступление на тему оповещений и триггеров, поэтому решил сделать для вас небольшую выжимку по теме.

Alerting and escalation best practices
https://www.youtube.com/watch?v=7pBZj21N5Lo

Для того, чтобы эффективно работать с оповещениями стоит придерживаться некоторых простых и не всегда очевидных рекомендаций:

1️⃣ Всегда давайте осмысленные названия для триггеров. Лично я почти всегда в названии триггера где-то в начале использую макрос {HOST.NAME}, чтобы в заголовке оповещения сразу было указано имя хоста. Даже в стандартных шаблонах часто в заголовке триггера нет этой информации.

2️⃣ Используйте зависимости триггеров, чтобы избежать спама оповещений. Например, у вас филиал подключен по VPN и там много объектов мониторинга. Сделайте для этого филиала отдельные шаблоны, в которых пропишите зависимость всех триггеров от проверки статуса VPN соединения или просто наличия связи с этим филиалом простым пингом. Если VPN отвалился и связи с филиалом нет, то не должны сработать все остальные триггеры, что настроены для хостов филиалов. Если этого не сделать, то при обрыве связи вы получите спам оповещений, в которых сразу не понять, что именно случилось. Сразу дам тут совет. Интервал проверки связи должен быть существенно ниже, чем остальные метрики в этом филиале, чтобы обрыв связи был замечен раньше именно на том айтеме, к которому привязана зависимость.

3️⃣ Используйте отложенные уведомления. Я постоянно этим пользуюсь. К примеру, у вас постоянно срабатывает и отключается какой-то триггер. Например, на загрузку полосы в интернет, или на нагрузку по CPU. Она может на минуту вырасти, потом упасть. У вас будет оповещение о проблеме, и потом об её отмене. Есть два пути решения этой проблемы. Можно настроить оповещения так, что они будут приходить только через 5 минут, если проблема не решится сама собой. То есть загрузили весь канал в интернет на 2 минуты, сработал триггер, а потом отменился. Вы не получите оповещения, но в списке проблем отразится это событие. Иногда это бывает нужно. Второй способ — изменить триггер. Настроить его на сработку только если проблема длится не менее 5 минут. Тогда за 2 минуты загрузки канала вы не увидите оповещения, и не сработает триггер. Какой способ выбирать — решать по месту. Я и так, и так делаю. Чаще придерживаюсь подхода, что пусть оповещение не придёт, но в списке проблем она отразится. Это помогает потом разбор полётов делать.

4️⃣ Используйте не только оповещения, но и какие-то действия. Например, если упал веб сервер и за 30 минут никто из поддержки ничего не сделал, то хотя бы запустите скрипт, который сделает рестарт или запустит упавший сервис.

5️⃣ Делайте повторяющиеся уведомления для каких-то важных событий, пока они не будут решены. По умолчанию в Zabbix отправляется только одно оповещение в момент появления проблемы, в отличие от Nagios. Там меня помню всегда раздражали эти назойливые уведомления, которые не прекращались, пока проблема не будет решена.

6️⃣ Настройте отдельные оповещения для unsupported items. Какая-то проверка может тупо сломаться по той или иной причине. Например, формат данных изменился из-за ошибки, которую возвращает сервис вместо json строки. Айтем выключается, триггер соответственно тоже. В итоге проверка тупо не работает, а ты об этом не знаешь.

В видео ещё много советов и примеров было. Я прокомментировал те, что сам использую. Заметка подошла к лимиту по длине, поэтому завершаю. Если активно используете Zabbix, рекомендую следить за их каналом. Там много интересного выходит. Хоть большинство из того, что там вижу, лично я уже знаю, но всё равно что-то новое узнаю.

#zabbix #видео
​​Я настроил и потестировал любопытный сервис по отправке пушей с Android смартфона на Linux. В итоге, не понял, как это может пригодиться в том виде, в котором всё получилось. Но так как потратил время, всё настроил и разобрался, решил оформить в заметку, чтобы потом можно было воспользоваться, если понадобиться.

Мне в первую очередь хотелось настроить логирование пушей, но как оказалось, проект a2ln-server, который я использовал, не умеет это делать. Либо я не понял, как это настроить. Так и не нашёл самих логов, ни возможности их хранить.

Идея чтения пушей на компе простая. Ставится сервер на Linux и приложение на Android. Приложение подключается по TCP к серверу и отправляет пуши. То есть нужна сетевая связность между смартфоном и сервером. Для отображения пушей на Linux должна быть установлена какая-то графическая оболочка. Я пробовал на xfce под Debian 11.

Устанавливаем зависимости и сам сервер. С зависимостями долго разбирался сам, так как они явно не указаны, а при установке через pip автоматически не подтянулись. Пришлось самому по логам ошибок разбирать.
# apt install libgirepository1.0-dev libcairo2-dev \
gir1.2-notify-0.7 task-xfce-desktop
# python3 -m pip install a2ln
Запускаем сервер:
# a2ln

В консоли увидите адрес и порт, на котором запустился сервер. Теперь ставим на Android приложение Android 2 Linux Notifications. Запускаем его, выдаём соответствующие права. Делаем сопряжение с сервером по указанному адресу и порту. На этом всё. Можно отправить тестовое оповещение. Увидите его на компьютере.

Подобная шутка может быть удобна для тех, у кого рабочая машина на Linux. Можно не отвлекаться в течении дня на пуши смартфона, читая их за компьютером. Но нужно понимать, что хоть сервер и приложение это open source проекты и исходники все выложены, потенциально доступ к пушам небезопасен. Через него можно смски читать.

Сайт / Исходники

#linux #android
​​Заберите в закладки полезный репозиторий, в котором собраны всевозможные дефолтные учётные записи от оборудования.

Default Credentials Cheat Sheet
https://github.com/ihebski/DefaultCreds-cheat-sheet

Авторы написали целый сервис на python по поиску и экспорту данных, который можно поставить через pip. Но я не вижу во всём этом смысла. Есть табличка, где собраны в одном месте все учётные данные. Можно её открыть и поискать напрямую через браузер.

Я посмотрел некоторые учётки, с которыми недавно сталкивался. Все на месте. Например:

Mikrotik: admin / <пусто>
Supermicro IPMI: ADMIN / ADMIN
Dell iDRAC: root / calvin
Zabbix (web): Admin / zabbix

В общем, удобная штука. Вместо поисковика и запроса, типа zabbix default password, можно сразу эту табличку открывать.

#полезное
​​Напомню для тех, кто не знает. Я на сайте делаю статьи в виде подборок софта, о котором пишу в заметках на этом канале. Во многих случаях это удобнее для поиска и подбора программы, чем поиск тут тэгам.

На днях подготовил очередную подборку по бесплатным HelpDesk системам. Я давно на них делал обзоры, а тема актуальная. Ко мне часто обращаются и просят что-то посоветовать по этой теме.

Топ 10 бесплатных helpdesk систем

Вот ещё несколько подборок, которые я давно сделал и обновляю по мере появления новой информации. Программ там больше, чем изначально заявлено, так как статьи пополняются.

Топ 20 бесплатных систем мониторинга
Топ 12 бесплатных программ для бэкапа
Топ 10 программ для инвентаризации оборудования
Топ 10 бесплатных программ для удалённого доступа

В этих статьях перечислены наиболее известные и популярные программы. Так что если подбираете себе что-то, воспользуйтесь материалами. Сэкономите много времени. К каждой программе есть ссылка на обсуждение в группе. В комментариях много полезной информации, в том числе от тех, кто эти программы использует.

#подборка
​​Для тех, кто подбирает сервис для хранения заметок, который можно будет развернуть у себя, советую обратить внимание на проект Notea. Это попытка сделать open source копию Notion. Причём выглядит всё это весьма прилично и функционально.

Запускается Notea в Docker, так что никаких проблем с установкой и настройкой нет. Достаточно запустить и пользоваться. Данные она хранит в S3 хранилищах. Поддерживает бесплатный сервер Minio, который можно запустить тут же, локально, в пару команд.

Запуск Notea в Docker будет выглядеть примерно так:

# docker run -d \
 --name notea \
 -p 3000:3000 \
 -e STORE_ACCESS_KEY=minioadmin\
 -e STORE_SECRET_KEY=minioadmin \
 -e STORE_BUCKET=notea \
 -e STORE_END_POINT=http://localhost:9000 \
 -e STORE_FORCE_PATH_STYLE=true \
 -e PASSWORD=notea \
-e COOKIE_SECURE=false \
cinwell/notea

Minio можете тоже в Docker запустить:
# docker run -p 9000:9000 minio/minio server /data
После этого зайти в веб интерфейс и создать bucket для notea.

Я немного повозился, пока запустил всё это у себя. Предлагаю свой вариант docker-compose.yaml для быстрого запуска чтобы посмотреть на программу. Это именно тестовый запуск, потому что используется сеть host. Для запуска в прод замените её на отдельную сеть и отцепите от host, чтобы не было доступа к minio отовсюду. Забиндите его на localhost, если он только для notea будет.

version: '2'
services:
 notea:
  container_name: notea
  image: cinwell/notea
  ports:
   - '3000:3000'
  depends_on:
   - minio
  environment:
   - STORE_ACCESS_KEY=minio
   - STORE_SECRET_KEY=minio123
   - STORE_BUCKET=notea
   - PASSWORD=notea
   - STORE_END_POINT=http://10.20.1.16:9000
   - STORE_FORCE_PATH_STYLE= true
  restart: unless-stopped
  network_mode: "host"
 minio:
  image: minio/minio
  container_name: notea_minio
  ports:
   - '9000:9000'
   - '9001:9001'
  environment:
   - MINIO_ROOT_USER=minio
   - MINIO_ROOT_PASSWORD=minio123
  command: server /data
  volumes:
   - /mnt/minio:/data
  network_mode: "host"

Запускаем:
# docker-compose up

Идём в веб интерфейс minio http://10.20.1.16:9000 под учёткой minio / minio123, создаём бакет notea. Больше ничего делать не надо. Теперь идём в веб интерфейс notea - http://10.20.1.16:3000, используем указанный пароль notea. Можно тестировать.

В Notea редактор поддерживает разметку Markdown, есть удобные чек листы. Интерфейс выглядит минималистично и аккуратно, поддерживает смартфоны. Есть светлая и тёмная темы.

Мне в целом всё понравилось. Интерфейс приятный и отзывчивый. Работает шустро, выглядит аккуратно: списки, таблицы, картинки, цитаты и т.д. В общем, если подыскиваете себе self-hosted сервис для заметок, обратите на него внимание. Если сравнивать с Trillium Notes, то он более простой, лёгкий, быстрый, минималистичный. И не просит донаты на Ukrainian Army, что сами понимаете, в наше время немаловажный фактор.

Я сам так и остался на Joplin. Мне тупо лень на что-то другое переезжать и тратить своё время. Работает да и ладно. Обновление ноутбука отодвинуло тормоза программы от критического порога моего восприятия. Сейчас бы его не выбрал, если бы подбирал. Хотя стоит отдать ему должное, функционал у него нормальный, но мне не нравятся таблицы в нём и тормозная работа: запускается долго, иногда чуть подвисает, когда его из фона разворачиваешь. Ничего критичного, жить можно, но немного раздражает.

Исходники

#заметки
​​Некоторое время назад полностью решил одну задачу по мониторингу, о которой хочу вам рассказать в общих чертах, чтобы у вас было понимание, какие задачи и как можно решить с помощью Zabbix.

Была задача мониторить состояние платёжных терминалов в распределённой торговой сети. Данные о них можно получать из API сервиса iikko. Основная сложность была в том, что токен для доступа к API выдаётся временный, его нужно постоянно обновлять. Я решил это следующим образом.

Взял обычный bash скрипт в котором получал токен к API iiko, а потом его с помощью API Zabbix сервера записывал в макрос соответствующего шаблона. Выглядит это примерно так:

#!/bin/sh

# Zabbix API token
ZTOKEN=204279d9d06bb9c7df0527107bef8e5d75b0f7e823a8dc6

# Get iiko token
ITOKEN=`curl -sk --location -X POST 'https://api-ru.iiko.services/api/1/access_token' \
-H 'Content-Type: application/json' \
--data-raw '{"apiLogin": "n8457fd4"}' | jq -r '.token'`

# Update macros
curl --location -X POST 'https://zb.server.ru/api_jsonrpc.php' \
-H 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "template.update",
  "params": {
    "templateid": "10630",
    "macros": [
      {"macro": "{$TOKEN}","value": "'$ITOKEN'"},
      {"macro": "{$ID_ORG}","value": ""},
      {"macro": "{$ID_TERM}","value": ""}
    ]
  },
  "id": 1,
  "auth": "'$ZTOKEN'"
}'

Скрипт положил на Zabbix Server и запускал по CRON. Эту же задачу можно было бы решить более красиво через JavaScript сразу в шаблоне Zabbix. Он поддерживает такую обработку в айтеме. Но я не захотел тратить на это время. Если на bash я сразу понимаю, как сделать, то с JavaScript надо разбираться и отлаживать. Свободно программировать на нём я не умею.

Далее сделал шаблон с айтемами типа HTTP Agent, настроил заголовки аутентификации с макросом, куда записывается токен, и POST запросы на извлечение нужных данных. С помощью предобработки айтемов вычленил нужные мне данные. Использовал несколько шагов:
1. JsonPath для того, чтобы выбрать нужную строку с данными.
2. Обрезал квадратные скобки [ ], которые остаются от json строк.
3. Сделал преобразование значений true и false, которые приходят в ответ на запрос, в 1 и 0 соответственно, чтобы хранить в базе не строковые значения, а числовые.
Затем сделал простые триггеры на основе значения айтема.

Шаблон достаточно прикрепить к хосту, указать макросы {$ID_ORG} и {$ID_TERM}, которые соответствуют ID организации и терминала в системе iikko и мониторинг заработает.

Такая вот нетривиальная задача решается относительно просто с помощью Zabbix. Изначально думал, что придётся привлечь программистов, чтобы реализовать всю эту логику перед передачей данных в Zabbix. Была такая возможность. Но потом чуть повнимательнее посмотрел и понял, что можно всё это через Zabbix сделать практически штатным функционалом.

#zabbix
​​В Linux можно быстро и просто отключать и включать ядра процессора с помощью chcpu. Иногда это бывает нужно, чтобы понять, как поведёт себя виртуальная машина, если у неё уменьшить ресурсы CPU.

Смотрим количество ядер:
# lscpu | grep list
On-line CPU(s) list:       0-3
Доступны 4 ядра с 0 по 3. Можно выключить любое количество ядер, кроме нулевого.

Отключим 2 ядра:
# chcpu -d 2,3
CPU 2 disabled
CPU 3 disabled

Проверяем:
# lscpu | grep list
On-line CPU(s) list:       0,1
Off-line CPU(s) list:      2,3

Сейчас если запустить top или htop, то будут видны только 2 процессора. Если сделать тест нагрузки, то явно будет просадка по производительности. Не обязательно пропорциональная уменьшенным ядрам. Всё зависит от программ для тестирования.

Возвращаем ядра на место:
# chcpu -e 2,3
CPU 2 enabled
CPU 3 enabled

Простой и удобный функционал. Мне интересно, а в Windows есть что-то подобное?

#linux #terminal
Решил сделать подборку консольных команд по загрузке и выгрузке файлов. Постоянно приходится этим пользоваться. И если с загрузкой всё довольно просто, то выгрузку приходится вспоминать, как сделать, так как редко нужно.

Скачать файл под своим именем:
curl -O https://site.com/file.tar.gz
wget https://site.com/file.tar.gz

Скачать и сохранить с заданным именем:
curl -o file_new.tar.gz https://site.com/file.tar.gz
wget -O file_new.tar.gz https://site.com/file.tar.gz

Для curl я обычно применяю пару дополнительных ключей:
-s — режим silent, отключает вывод служебной информации, актуально для скриптов;
-k — игнорирует ошибки TLS, например, с недоверенным сертификатом.

И у wget, и у curl есть одинаковая опция по ограничению скорости загрузки через ключ --limit-rate 10M. Суффиксы k, M, G обозначают килобайты, мегабайты, гигабайты.

Скачать скрипт и сразу запустить его 😱:
curl -sSL https://get.docker.com/ | sh
Автоматическая установка докера. Я постоянно пользуюсь.

Для аутентификации в curl достаточно через ключ -u добавить имя пользователя и пароль. Работает как с basic auth, так и с kerberos, ntlm. Для кербероса надо только не забыть домен добавить к имени пользователя.
curl -O -u user:password https://site.com/file.tar.gz

Скачать набор файлов из текстового списка, где каждая строка это отдельная ссылка:
wget –I urls.txt
Если добавить ключ -b, то скачивание будет идти в фоновом режиме. Актуально, когда качаешь по списку набор iso. Это может долго длиться.

Скачать целиком сайт. Работает нормально, сам проверял несколько раз, скачивая некоторые сайты:
wget -r -k -l 7 -p -E -nc http://site.ru/
7 — глубина вложенности страниц от указанной, можно сделать меньше или больше в зависимости от сайта, чтобы не качать уже мусорные ссылки.

Скачать файл с ssh сервера через scp:
curl -O -k -u user scp://192.168.1.1:22/data/file.tar.gz
Запрос пароля появится в консоли. Можно его сразу указать, только имейте ввиду, что пароль останется в history:
curl -O -k -u user:password scp://192.168.1.1:22/data/file.tar.gz
И то же самое, только с ключом:
curl -O -k -u user --key ~/.ssh/id_rsa scp://192.168.1.1:22/data/file.tar.gz

Скачать файл по ftp:
curl -O ftp://user:password@ftpserver.ru/data/file.tar.gz

Скачать файл по smb:
curl -O -u "domain\user:password" smb://server.local/share/file.tar.gz

Выгрузка (загрузка на сервер) файлов по ftp, ssh, smb:
curl -T file.tar.gz -u user:password ftp://ftpserver.ru/data/
curl -k -T file.tar.gz -u user scp://ftpserver.ru/data/
curl -k -T file.tar.gz -u user --key ~/.ssh/id_rsa scp://ftpserver.ru/data/
curl -T file.tar.gz -u "domain\user:password" smb://server.local/share/
Причём можно сразу загрузить группу файлов с именами, которые можно задать по стандартной маске в bash:
curl -T "file[1-100].tar.gz" ftp://ftpserver.ru/data/

#bash #terminal #curl
Традиционный топ постов за прошедший месяц. В прошлом месяце забыл про него 🤷🏻‍♂️. Мне самому нравится эта рубрика. Интересно посмотреть, что больше всего привлекло внимания и было наиболее интересным и полезным.

📌 Больше всего просмотров:
◽️Мем из комментариев к одной статье на сайте (7725)
◽️Проект по безопасности workbench.cisecurity.org (7679)
◽️Моя фотка из музея вооружения (7575)

📌 Больше всего комментариев:
◽️Маршруты для OpenVPN сервера (105)
◽️Заметка про Linux на компе для детей (102)
◽️Сборка Windows tiny11 (88)

📌 Больше всего пересылок:
◽️Связка R-Studio и HDDSuperClone (579)
◽️Проект по безопасности workbench.cisecurity.org (509)
◽️Подборка на тему консольных утилит и команд (470)
◽️Мой вариант универсального конфига Nginx (450)

📌 Больше всего реакций:
◽️Мем с собакой и дропом таблицы (228)
◽️Решение проблемы с очередью запросов в Zabbix (167)
◽️Запрет на создание конкретного файла в Linux (151)

#топ
​​Когда настраиваешь сбор и анализ логов, хочется сразу проверить, как это работает. Особенно, если используются какие-то выборки или реакция на конкретные события. С текстовыми логами всё просто. Достаточно любым способом добавить новую строку. С логами Windows чуть сложнее.

Для решения этой проблемы есть open source проект ntTraceControl. Он состоит из небольшого установщика, который добавляет модуль PowerShell. Достаточно скачать из репозитория и установить msi пакет и можно пользоваться.

Вот простой пример. Добавляем в журнал безопасности событие с ID 4624, указав вымышленное имя пользователя или домен:
> Import-Module ntTraceControl
> Write-SecurityEventId4624 -SubjectUserName "SERVERADMIN.RU" -SubjectDomainName "HOMELAB"

Таким образом можно сгенерировать любую необходимую запись в лог файле. Другие примеры есть в репозитории.

Напомню, что виндовые логи умеет собирать тот же Zabbix. Вот пример настройки:
Windows EventLog Monitoring With ZABBIX
https://www.youtube.com/watch?v=rOBatrWrg2Y

Или Elastic:
Настраиваем сбор логов Windows Server в ELK Stack
https://serveradmin.ru/nastraivaem-sbor-logov-windows-server-v-elk-stack/

#windows #мониторинг
​​Продолжу тему мониторинга. Думаю многие уже заметили, что это одна из самых популярных тематик на канале. Вообще, я давно заметил, что мониторинг это то, чем мне нравится заниматься больше всего остального. И для этого есть несколько причин. Во-первых, мониторинг чаще всего не критически важный сервис, поэтому им можно заниматься планово, без авралов и аварий. Во-вторых, это творческая деятельность, где надо постоянно придумывать нетиповую реализацию. Ну а в-третьих, это просто красиво, смотреть всякие графики, делать дашборды, наблюдать метрики.

Поделюсь парой универсальных советов, которые будут актуальны для любой системы мониторинга, независимо от реализации.

1️⃣ Если у вас срочные триггеры висят незакрытыми днями и неделями, можете смело их отключать или менять. У меня это постоянно происходит. Изначально настраиваешь мониторинг и думаешь, что вот на это надо реагировать. А потом то времени нет, то отложишь и забудешь, а по факту оказывается, что алерт не очень то и важный. Периодически захожу в мониторинг и прорабатываю подобные триггеры.

2️⃣ Часто нет необходимости реагировать на метрики, за которыми стоят вышестоящие метрики, напрямую зависящие от первых. Лучше делать оповещения на более высокоуровневые сущности. Поясню на конкретном примере.

Допустим, вы мониторите доступность сайтов (старая, но полностью актуальная статья про Zabbix, так как там модуль мониторинга сайтов с тех пор не менялся). Для них есть метрики, следящие за кодами ответов веб сервера, за скоростью ответов и за полосу пропускания, с которой сайты отдают данные. Сайты живут на отдельном сервере. На этом сервере есть триггеры на нагрузку на процессор, на память и т.д.

У вас периодически случаются какие-то временные наплывы посетителей или ботов, делаются дампы базы данных, бэкапы информации и т.д. Всё это может приводить к срабатыванию триггеров на память, диск, сеть и т.д. Но для вас они не являются критичными, так как основное это метрики доступности сайта, которые могут не выходить за определённые вами пороги. То есть по факту всё в порядке, но периодически вы будете получать оповещения от других метрик. 

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

❗️По первому пункту я написал, но при этом у меня есть вот такие триггеры (см. картинку). Вы что делаете с такими висюнами? Отключаете или так же месяцами висят?

#zabbix #мониторинг
Обновил и актуализировал большую статью на сайте:

Построение ИТ инфраструктуры небольшого офиса
https://serveradmin.ru/postroenie-it-infrastruktury-nebolshogo-ofisa

Недавно проводил консультацию по этой теме. Освежил знания, решил обновить статью. Там очень много примеров конкретного софта со ссылками на мои статьи. Какие-то из них сильно устарели, но сами идеи все те же самые. Можно просто поискать более свежие материалы по ним.

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

Статья дискуссионная. Я поделился своим опытом, который не обязательно принимать за образец и повторять. Можно просто принять к сведению информацию или указать на недостатки.

#подборка
Ещё один мем из комментариев к сайту. У меня есть статья с настройками iptables. И там все правила я привожу в виде картинок, чтобы их нельзя было скопировать. А уже в конце прикладываю текстовый файл со всеми правилами.

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

В подобную ловушку я попал как-то раз сам. Есть другая статья, где правила фаервола написаны текстом. Я их оттуда копирую и применяю, так как правила мои и я их много раз использовал, уверен в них.

В какой-то момент глюканул движок сайта и все двойные тире заменил одним длинным. Я в очередной раз скопировал правила не вчитываясь, бахнул их на сервер и потерял к нему доступ. Писал об этом в заметке.

#мем
​​Немного тематического юмора в выходной день. Видео с небольшими эпизодами из жизни, которые смогут в полной мере понять только айтишники. Папа просит установить драйвер, мама рассказывает а выигрыше, о котором ей сообщили по почте, папа просит подсказать, где найти загруженное видео.
https://www.youtube.com/watch?v=3XliP_OTjuk

А вот зарисовочка на тему AI и всяких ChatGPT. Досмотрите до конца, там самое интересное как раз по нашей, админской, части. Я прям посмеялся.
https://www.youtube.com/watch?v=KuvOwbtSeHk

Видео пародия на Цельнометаллическую оболочку Стенли Кубрика. Системные администраторы проходят стажировку в специальном подготовительном лагере.
https://www.youtube.com/watch?v=AD9NX_EXhXM

У этой компании много забавных роликов на канале. Я почти все их посмотрел, что-то тут публиковал в разное время. Жаль, что подобного юмора очень мало. Если кто-то знает примеры подобных видео, поделитесь в комментариях.

#юмор
Бюджетные серверы на базе десктопных процессоров

А вы знали, что в @Selectel есть возможность арендовать выделенный бюджетный сервер линейки Chipcore? Это полностью изолированные серверы, размещенные в защищенных дата-центрах под круглосуточным наблюдением, но по цене ниже, чем обычные выделенные серверы Selectel.

Теперь при аренде последних конфигураций Chipcore вы можете связать серверы по локальной сети. Эта особенность позволяет создавать кластеры для решения задач с высокими требованиями к производительности и отказоустойчивости: например, для развертывания Kubernetes или работы с БД и 1C.

Выбрать сервер можно из готовых конфигураций и арендовать по доступной цене на срок от одного дня. При долгосрочной аренде на 3, 6 или 12 месяцев вас ждут скидки до 15%.

Регистрируйтесь по ссылке и заказывайте бюджетный выделенный сервер из линейки Chipcore: https://slc.tl/u9zgs

Реклама ООО Селектел Pb3XmBtztB8Yaa8eevEtbs5smaJ9q77y7EAE4p8