Отложенное задание в Dedian

  • Linux
Столкнулся с такой задачей, нужно перезапустить сетевой интерфейс. Изюминка задачи в том, что при перезапуске потеряется ssh и если что-то пойдет не так, то интерфейс останется выключенным, а машина недоступной.

Однако, при старте машина запускает сетевой интерфейс нормально, т.е выходом из ситуации было бы её просто ребутнуть, но ssh потерян, а сервер в другом городе.

Решение: использование команды at — утилиты, позволяющей разово запускать одну или несколько команд в определенное время.

  1. apt install at
  2. Планируем задачу
    at 12:45
    Дальше вписываем нужные команды
    at> reboot
    и жмем Ctrl-D для выхода.
  3. Посмотреть все запланированные задачи
    atq
    Пользователи увидят только свои задачи, администратор — все. Все задачи будут с указанием номера, времени выполнения и пользователем, запланировавшим запуск
  4. Удаление задачи под известным номером
    atrm 2

Утилита at выполняет отложенные команды из стандартного ввода. В отличии от crontab выполняет единожды.

Linux: Debian l2tp client with IPsec

  • Linux
Настройка на примере подключения к серверу l2tp на Mikrotik, настройка которого описывалась в этой статье:
itsnotepad.ru/2018/11/22/mikrotik-l2tp-server-ipsec.html

Установка необходимых пакетов:

apt-get update
apt-get install strongswan xl2tpd net-tools
Настройка strongSwan (IPsec)
/etc/ipsec.conf:

Читать дальше

Linux: Проверяем статус сервиса.

  • Linux
Иногда требуется следить за работой сервиса и в случае его падения перезапускать его.
Поможет следующий скрипт-костылёк:

#!/bin/sh
TIMEDATE=$(date +%T)
STATUS=$(/etc/init.d/apache2 status | grep "Active" | awk '{print $2 $3}')
test "$STATUS" = "active(running)" || /etc/init.d/apache2 restart
echo $TIMEDATE - Start apache2-check > /etc/cron.hourly/log
В данном случае смотрим за апачем, в log пишем время последнего выполнения.

ProxMox: Расширяем диск LVM.

  • Linux
1. Добавляем место для виртуалки, через веб-интерфейс ProxMox (Resize disk), либо через консоль гипервизора:

qm resize <vmid> <disk> <size>
Пример:
qm resize 100 virtio0 +5G ### добавили 5Гб для vm 100 к диску virtio0
2. Заходим на vm
3. fdisk -l должен показать полный размер диска и созданные партиции
4. Расширяем нужную партицию через удобный вам инструмент, например cfdisk:

cfdisk /dev/sda
Читать дальше

WSL: обновление до WSL --version 2

1. Включаем компоненты(PowerShell):

### Подсистема WSL
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
### Платформа виртуальной машины
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2. Перезагружаемся и не забываем включить виртуализацию в BIOS.
3. Скачиваем и устанавливаем пакет обновления ядра Linux в WSL 2 для 64-разрядных компьютеров:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
4. Если необходимо устанавливаем wsl2 по умолчанию:
wsl --set-default-version 2
5. Если у вас уже была установлен дистрибутив Linux, то можно перевести её на wsl2:
— вывести список дистрибутивов
wsl -l -v
— перевести на wsl2
wsl --set-version <distribution name> <versionNumber>

PrintScreen в xfce4

  • Linux
У пользователя столкнулся с проблемой: на xfce4 при нажатии клавиши PrintScreen скриншот экрана не делается, а очень хочется.

Решается в два шага: 1) Установка утилиты для скриншотов 2) настройка горячих клавиш

  1. Ставим
    apt install xfce4-screenshooter
  2. Меню приложений -> Настройки -> Клавиатура -> закладка «Комбинации клавиш» -> добавить
    В следующем окне будет предложено ввести команду, которая будет срабатывать при нажатии клавиши: Для fullscreen пишем
    xfce4-screenshooter -f
    Для скриншота активного окна
    xfce4-screenshooter -w
    и выбираем клавишу, на которую вешаем команду, в данном случае логично на PrtSc.

x11vnc: Автозапуск при старте системы.

  • Linux
Настройка автозапуска с паролем.

Установка:
apt-get install x11vnc
Устанавливаем пароль:
x11vnc -storepasswd

Enter VNC password: *********
Verify password: *********  
Write password to /root/.vnc/passwd?  [y]/n y
Password written to: /root/.vnc/passwd
Тест:

x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /root/.vnc/passwd -rfbport 5900 -shared
Создаем файл сервиса:
nano /etc/systemd/system/x11vnc.service

[Unit]
Description=x11vnc remote desktop server
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /root/.vnc/passwd -rfbport 5900 -shared

Restart=on-failure

[Install]
WantedBy=multi-user.target
Запускаем:

systemctl daemon-reload
systemctl start x11vnc
systemctl status x11vnc
-------------
if active (running)
systemctl enable x11vnc.service

Установка zabbix-сервера на debian

  • Linux
В статье описывается установка zabbix 4.4. На момент написания уже вышла 5, но насколько я понял, там сильно изменились агенты, поэтому пока переходить на неё не планирую. Думаю установка 5й версии будет не слишком отличаться от 4й.

Я производил установку на debain 10 (для debian 9 buster в репозиториях меняется на stratch). Так же, с учетом размера нашей сети и количества объектов наблюдения, в качестве БД была выбрана postgres.

  1. Скачать пакет, который сделает правильные репозитории. Buster заменить на версию системы, если она ещё не buster. Поставить его через dpkg -i
    wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1%2Bbuster_all.deb 
  2. Установка.
    apt update; apt install zabbix-server-pgsql
  3. Дальше создаем базу и пользователя к ней и заливаем туда стандартную схему. Я не слишком силен в postgres, может есть путь красивее.
    su - postgres
    createuser --pwprompt zabbix
    createdb -O zabbix -E Unicode -T template0 zabbix
    exit
    В /etc/passwd даем пользователю zabbix /bin/bash. Создаем для него директорию /var/lib/zabbix и назначаем его владельцем. После этого заливаем базу
    su - zabbix
    zcat /usr/share/doc/zabbix-**proxy/server**-pgsql/schema.sql.gz | psql -U zabbix zabbix
    exit
    После всех этих процедур забираем /bin/bash у zabbix, ибо нечего.
  4. Редактируем конфиг сервера на свой вкус. Самое важное база и адрес
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=PASSWORD
    ListenIP=0.0.0.0
    Timeout=10
  5. Ставим zabbix-frontend-php. Он автоматически потянет apache. После этого можно заходить через браузер и допиливать интерфейс по вкусу
Официальная документация тут

Bareos: Установка и настройка

  • Linux
OS: Debian 9
Bareos 18.2
Bareos win client 18.2 #Версия клиента должна быть не выше версии самой системы.

Установка Bareos c помощью скрипта:

nano install.sh
Содержание:

#!/bin/sh

# See http://download.bareos.org/bareos/release/
# for applicable releases and distributions

DIST=Debian_9.0
# or
# DIST=Debian_8.0
# DIST=xUbuntu_16.04
# DIST=xUbuntu_14.04
# DIST=xUbuntu_12.04
DATABASE=postgresql
RELEASE=release/17.2/
# or
# RELEASE=release/latest/
# RELEASE=experimental/nightly/

URL=http://download.bareos.org/bareos/$RELEASE/$DIST

# add the Bareos repository
printf "deb $URL /\n" > /etc/apt/sources.list.d/bareos.list

# add package key
wget -q $URL/Release.key -O- | apt-key add -

# install Bareos packages
apt-get update
apt-get install bareos bareos-database-postgresql
Читать дальше

Linux: Buster. Возвращение с nftables на iptables

  • Linux
При обновлении иметь ввиду, что в buster по умолчанию вместо iptables используется nftables

NOTE: Debian Buster uses the nftables framework by default.

Starting with Debian Buster, nf_tables is the default backend when using iptables, by means of the iptables-nft layer (i.e, using iptables syntax with the nf_tables kernel subsystem). This also affects ip6tables, arptables and ebtables.
You can switch back and forth between iptables-nft and iptables-legacy by means of update-alternatives (same applies to arptables and ebtables).
По умолчанию, начиная с Debian Buster:
# update-alternatives --set iptables /usr/sbin/iptables-nft
# update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
# update-alternatives --set arptables /usr/sbin/arptables-nft
# update-alternatives --set ebtables /usr/sbin/ebtables-nft
Переход на устаревшую версию:
# update-alternatives --set iptables /usr/sbin/iptables-legacy
# update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# update-alternatives --set arptables /usr/sbin/arptables-legacy
# update-alternatives --set ebtables /usr/sbin/ebtables-legacy

Linux: расшариваем принтер используя samba

  • Linux
Ставим самбу:
apt-get install samba
Правим конфиг:
nano /etc/samba/samba.conf

[global]
        workgroup = WORKGROUP
        server string = %h server
        dns proxy = no
        log file = /var/log/samba/log.%m
        max log size = 1000
        syslog only = no
        syslog = 0

        panic action = /usr/share/samba/panic-action %d

        security = user
        encrypt passwords = true
        passdb backend = tdbsam
        null passwords = true
        obey pam restrictions = yes
        unix password sync = yes

        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        pam password change = yes
        map to guest = bad user

        load printers = yes
        printing = cups
        printcap name = cups
[printers]
        comment = All Printers
        browseable = no
        path = /var/spool/samba
        printable = yes
        guest ok = yes
        read only = yes
        create mask = 0700
[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers
        browseable = yes
        read only = no
        guest ok = yes

Linux: краткие подсказки по командам cheat.sh

  • Linux
cheat.sh/


      _                _         _    __                                        
  ___| |__   ___  __ _| |_   ___| |__ \ \      The only cheat sheet you need    
 / __| '_ \ / _ \/ _` | __| / __| '_ \ \ \     Unified access to the best       
| (__| | | |  __/ (_| | |_ _\__ \ | | |/ /     community driven documentation   
 \___|_| |_|\___|\__,_|\__(_)___/_| |_/_/      repositories of the world        
                                                                                
+------------------------+ +------------------------+ +------------------------+
| $ curl cheat.sh/ls     | | $ cht.sh btrfs         | | $ cht.sh lua/:learn    |
| $ curl cht.sh/btrfs    | | $ cht.sh tar~list      | | Learn any* programming |
| $ curl cht.sh/tar~list | |                        | | language not leaving   |
| $ curl https://cht.sh  | |                        | | your shell             |
|                        | |                        | | *) any of 60           |
|                        | |                        | |                        |
+-- queries with curl ---+ +- own optional client --+ +- learn, learn, learn! -+
+------------------------+ +------------------------+ +------------------------+
| $ cht.sh go/f<tab><tab>| | $ cht.sh --shell       | | $ cht.sh go zip lists  |
| go/for   go/func       | | cht.sh> help           | | Ask any question using |
| $ cht.sh go/for        | | ...                    | | cht.sh or curl cht.sh: |
| ...                    | |                        | | /go/zip+lists          |
|                        | |                        | | (use /,+ when curling) |
|                        | |                        | |                        |
+---- TAB-completion ----+ +-- interactive shell ---+ +- programming questions-+
+------------------------+ +------------------------+ +------------------------+
| $ curl cht.sh/:help    | | $ vim prg.py           | | $ time curl cht.sh/    |
| see /:help and /:intro | | ...                    | | ...                    |
| for usage information  | | zip lists _            | | real    0m0.075s       |
| and README.md on GitHub| | <leader>KK             | |                        |
| for the details        | |             *awesome*  | |                        |
|            *start here*| |                        | |                        |
+--- self-documented ----+ +- queries from editor! -+ +---- instant answers ---+
                                                                                
[Follow @igor_chubin for updates][github.com/chubin/cheat.sh]

Asterisk: Сертификат Let's Encrypt для TLS+SRTP

  • Linux
Генерируем сертификат для сервера

Устанавливаем Let's Encrypt:
yum install git
cd /opt
git clone https://github.com/letsencrypt/letsencrypt

Идем в каталог /opt/letsencrypt и выполняем:
Вариант 1:
./letsencrypt-auto certonly --standalone -d домен_сервера
Вариант 2:
./certbot-auto certonly --webroot --agree-tos --email почта -w /var/www/html/ -d домен_сервера

Копируем каталог:
cp /etc/letsencrypt/live/домен_сервера/* /etc/asterisk/keys
Читать дальше

FFMPEG: Настройка и запуск ffmpeg & ffserver

Что такое ffmpeg?

FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec, библиотеку кодирования и декодирования аудио и видео и libavformat, библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и «FF», означающего «fast forward».
Читать дальше