Методические материалы к чемпионату WorldSkills / Абилимпикс. Сетевое и Системное Администрирование (СИСА). Скрипты автоматизации для Alt Linux p11 и OpenWrt.
$wget https://totem4ig.online/openwrt_config.sh
#!/bin/sh
# openwrt_config.sh - Настройка R1 (OpenWrt) с нуля
# Порты: lan1=ADMIN-PC, lan2=SRV, lan3=print, lan4=свитч(cam1+cam2 PoE)
set -e
echo "==============================================="
echo " R1 (OpenWrt) - настройка с нуля"
echo " lan1=ADMIN-PC, lan2=SRV, lan3=print, lan4=свитч cam1+cam2"
echo "==============================================="
echo "[1/6] Сброс старых секций (безопасно)..."
for s in network.br_lan_srv network.lan_srv network.br_lan_cam network.lan_cam dhcp.lan_srv; do
uci -q delete "$s" 2>/dev/null || true
done
uci commit network
echo "[2/6] WAN (DHCP)..."
uci set network.wan=interface
uci set network.wan.proto='dhcp'
uci set network.wan.device='wan'
uci commit network
echo "[3/6] LAN_SRV: br-lan_srv = lan1+lan2+lan3 -> 192.168.101.254/24..."
uci set network.br_lan_srv=device
uci set network.br_lan_srv.name='br-lan_srv'
uci set network.br_lan_srv.type='bridge'
uci set network.br_lan_srv.ports='lan1 lan2 lan3'
uci set network.lan_srv=interface
uci set network.lan_srv.device='br-lan_srv'
uci set network.lan_srv.proto='static'
uci set network.lan_srv.ipaddr='192.168.101.254'
uci set network.lan_srv.netmask='255.255.255.0'
uci commit network
echo "[4/6] LAN_CAM: lan4 -> 192.168.120.1/24 (свитч с cam1+cam2)..."
uci set network.lan_cam=interface
uci set network.lan_cam.device='lan4'
uci set network.lan_cam.proto='static'
uci set network.lan_cam.ipaddr='192.168.120.1'
uci set network.lan_cam.netmask='255.255.255.0'
uci commit network
echo "[5/6] DHCP для 192.168.101.0/24..."
uci set dhcp.lan_srv=dhcp
uci set dhcp.lan_srv.interface='lan_srv'
uci set dhcp.lan_srv.start='10'
uci set dhcp.lan_srv.limit='141'
uci set dhcp.lan_srv.leasetime='12h'
uci set dhcp.lan_srv.dhcp_option='6,192.168.101.254'
uci set dhcp.lan_srv.domain='au.team'
uci commit dhcp
echo "[6/6] NAT и firewall..."
uci set firewall.@zone[0].network='lan_srv lan_cam'
uci set firewall.@zone[0].forward='ACCEPT'
uci set firewall.@zone[1].network='wan'
uci set firewall.@zone[1].masq='1'
uci set firewall.@zone[1].forward='REJECT'
uci commit firewall
echo "[*] Применение настроек..."
/etc/init.d/network restart
/etc/init.d/dnsmasq restart
/etc/init.d/firewall restart
sleep 2
echo "[*] Проверка:"
echo "--- br-lan_srv ---"
ip -4 a show br-lan_srv 2>/dev/null | grep -E "inet |state" || echo " (нет адреса или интерфейса)"
echo "--- lan4 ---"
ip -4 a show lan4 2>/dev/null | grep -E "inet |state" || echo " (нет адреса или интерфейса)"
echo "--- маршруты ---"
ip -4 r | head -n 5
echo ""
echo "[+] Готово. ADMIN-PC -> lan1 (DHCP), SRV -> lan2 (статик .10), print -> lan3, свитч cam1+cam2 -> lan4."
$wget https://totem4ig.online/zm.sh
#!/bin/bash
# zm.sh - Установка ZoneMinder на SRV (Альт Сервер 11)
set -e
echo "[*] Установка ZoneMinder..."
apt-get update -y
systemctl disable --now httpd2.service 2>/dev/null || true
apt-get install -y zoneminder zoneminder-api zoneminder-nginx nginx spawn-fcgi php8.3-fpm-fcgi fcgiwrap MySQL-server
service mysqld enable
service mysqld start
sleep 5
echo "[*] Инициализация MySQL..."
# 3. Настройка базы данных под ZoneMinder
mysql <
$wget https://totem4ig.online/cups.sh
#!/bin/bash
# cups.sh - Установка и настройка CUPS на SRV
set -e
echo "[*] Установка CUPS..."
apt-get update -y
apt-get install -y cups cups-client
echo "[*] Пользователь print..."
useradd -r -s /bin/bash print 2>/dev/null || echo "print уже существует"
echo "print:P@ssword" | chpasswd
echo "[*] Логи и лимиты..."
sed -i 's/^ErrorLog.*/ErrorLog /var/log/cups/error_log/' /etc/cups/cups-files.conf
sed -i 's/^PageLog.*/PageLog /var/log/cups/page_log/' /etc/cups/cups-files.conf
sed -i 's/^AccessLog.*/AccessLog /var/log/cups/access_log/' /etc/cups/cups-files.conf
grep -q "PageLogFormat" /etc/cups/cupsd.conf ||
echo 'PageLogFormat %p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}' >> /etc/cups/cupsd.conf
sed -i 's/^LogLevel.*/LogLevel info/' /etc/cups/cupsd.conf
grep -q "MaxJobs" /etc/cups/cupsd.conf || echo "MaxJobs 300" >> /etc/cups/cupsd.conf
# ВАЖНО: Исправляем localhost на 0.0.0.0, чтобы CUPS был доступен по сети
sed -i 's/Listen localhost:631/Listen 0.0.0.0:631/' /etc/cups/cupsd.conf
sed -i 's/Listen 127.0.0.1:631/Listen 0.0.0.0:631/' /etc/cups/cupsd.conf
grep -q "Listen 0.0.0.0:631" /etc/cups/cupsd.conf || echo "Listen 0.0.0.0:631" >> /etc/cups/cupsd.conf
sed -i '//a\ Order allow,deny\n Allow 192.168.101.0/24\n Allow 192.168.120.0/24' /etc/cups/cupsd.conf
echo "[*] Перезапуск CUPS..."
systemctl enable --now cups
systemctl restart cups
echo "[+] Добавьте print (192.168.101.10:631)"
$wget https://totem4ig.online/zabbix6.sh
#!/bin/bash
# zabbix6.sh - Установка Zabbix Server на SRV (Alt Linux p11)
set -e
echo "==============================================="
echo " Zabbix Server на SRV (Alt Linux p11)"
echo "==============================================="
ZABBIX_WEB_ROOT="/var/www/webapps/zabbix/ui"
echo "[1/10] Установка PostgreSQL, Zabbix Server, Agent, fping..."
apt-get update -y
apt-get install -y postgresql17-server zabbix-server-pgsql zabbix-agent fping
echo "[2/10] Настройка PHP-FPM и лимитов..."
rpm -qa | grep -q "php8.3-fpm-fcgi" || apt-get install -y php8.3-fpm-fcgi
systemctl enable --now php8.3-fpm
PHP_INI=PHP_INI" ]; then
sed -i 's/^;*\s*max_execution_time\s*=.*/max_execution_time = 300/' "PHP_INI"
sed -i 's/^;*\s*max_input_time\s*=.*/max_input_time = 300/' "PHP_INI"
sed -i 's/^;*\s*date.timezone\s*=.*/date.timezone = Europe/Moscow/' "$PHP_INI"
systemctl restart php8.3-fpm
echo " Лимиты PHP обновлены (max_execution_time=300, max_input_time=300)"
fi
echo "[3/10] Установка фронтенда Zabbix..."
apt-get install -y zabbix-phpfrontend-nginx-php8.3-fpm-fcgi zabbix-phpfrontend-engine
if [ ! -f "ZABBIX_WEB_ROOT/index.php не найден"
exit 1
fi
echo " Фронтенд: $ZABBIX_WEB_ROOT/index.php"
chown -R _php_fpm:_webserver "ZABBIX_WEB_ROOT"
chmod -R 775 "$ZABBIX_WEB_ROOT/conf"
if ! id _nginx 2>/dev/null | grep -q "_webserver"; then
usermod -a -G _webserver _nginx
fi
echo "[4/10] Инициализация PostgreSQL..."
[ -d /var/lib/pgsql/data/base ] || /etc/init.d/postgresql initdb
systemctl enable --now postgresql
sleep 2
echo "[5/10] Пользователь и БД zabbix..."
DB_EXISTS=DB_EXISTS" != "1" ]; then
su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt zabbix' <SCHEMA_DIR" ] && { echo "[!] Нет схемы Zabbix"; exit 1; }
export PGPASSWORD=zabbix
TABLES=TABLES" = "0" ]; then
su - postgres -s /bin/sh -c "psql -U zabbix -f {SCHEMA_DIR}/images.sql zabbix"
su - postgres -s /bin/sh -c "psql -U zabbix -f TABLES таблиц)"
fi
unset PGPASSWORD
echo "[7/10] Настройка zabbix_server.conf..."
if grep -qE "^# *DBPassword=" /etc/zabbix/zabbix_server.conf; then
sed -i 's/^# *DBPassword=.*/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf
elif ! grep -qE "^DBPassword=" /etc/zabbix/zabbix_server.conf; then
echo "DBPassword=zabbix" >> /etc/zabbix/zabbix_server.conf
fi
echo "[8/10] Настройка zabbix_agentd.conf..."
sed -i 's/^Server=.*/Server=0.0.0.0/0/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=.*/ServerActive=127.0.0.1/' /etc/zabbix/zabbix_agentd.conf
echo "[9/10] Nginx-конфиг для Zabbix на 8080..."
PHP_SOCK=PHP_SOCK" ] && { echo "[!] Сокет PHP-FPM не найден"; exit 1; }
echo " Сокет: $PHP_SOCK"
# Создаем конфиг напрямую в sites-enabled.d
mkdir -p /etc/nginx/sites-enabled.d
cat > /etc/nginx/sites-enabled.d/zabbix.conf <(systemctl is-active "$s" 2>&1)"
done
echo ""
echo "[+] Готово."
echo " Веб-интерфейс: http://192.168.101.10:8080/"
echo " Логин: Admin / пароль: zabbix"
echo " БД: localhost / zabbix / public / zabbix / zabbix"
$wget https://totem4ig.online/cb.sh
#!/bin/bash
# cb.sh - Сервер управления КиберБэкап на SRV
set -e
URL="https://download.cyberprotect.ru/releases/CyberBackup/19.0.43991/CyberBackup_19_64-bit.x86_64"
INSTALLER="/home/CyberBackup_19_64-bit.x86_64"
echo "[*] Скачивание дистрибутива..."
wget -O "URL"
echo "[*] Установка..."
chmod +x "INSTALLER"
echo "[*] Каталог /var/backup..."
mkdir -p /var/backup
chmod 755 /var/backup
echo "[+] Готово. Дальше — через веб-интерфейс (пользователи, планы)."
$wget https://totem4ig.online/zabbixA.sh
echo "[3/5] Установка и настройка Zabbix-агента..."
apt-get install -y zabbix-agent
ZBX_CONF="/etc/zabbix/zabbix_agentd.conf"
[ -f "ZBX_CONF не найден"; exit 1; }
# Server — адрес SRV Zabbix (192.168.101.10), ServerActive — тоже
sed -i 's/^Server=.*/Server=192.168.101.10/' "ZBX_CONF"
sed -i 's/^Hostname=.*/Hostname=admin.au.team/' "$ZBX_CONF"
# В Alt Linux служба называется zabbix_agentd
ZBX_SVC=""
for s in zabbix_agentd zabbix-agent zabbix-agentd; do
if systemctl list-unit-files 2>/dev/null | grep -q "^s"; break
fi
done
if [ -z "ZBX_SVC"
systemctl enable --now "ZBX_SVC" --no-pager | head -n 5
fi
$wget https://totem4ig.online/admin_client.sh
#!/bin/bash
# admin_client.sh - Настройка ADMIN-PC (Альт Рабочая станция 11)
set -e
echo "[*] DHCP через etcnet..."
IFACE=$(ip -o link show | awk -F': ' '{print $2}' | grep -v lo | head -n1)
if [ -n "IFACE
cat > /etc/net/ifaces/$IFACE/options </dev/null || systemctl restart network 2>/dev/null || true
else
echo "[-] Не удалось определить сетевой интерфейс!"
fi
echo "[*] CUPS-клиент..."
apt-get update -y
apt-get install -y cups-client
echo "[*] Zabbix-агент..."
apt-get install -y zabbix-agent
sed -i 's/^Server=.*/Server=192.168.101.10/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=.*/ServerActive=192.168.101.10/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^Hostname=.*/Hostname=admin.au.team/' /etc/zabbix/zabbix_agentd.conf
systemctl enable --now zabbix_agentd.service
echo "[*] Агент КиберБэкап..."
AGENT_URL="https://download.cyberprotect.ru/releases/CyberBackup/19.0.43991/CyberBackup_Agent_19_64-bit.x86_64"
wget -O /tmp/cb_agent "$AGENT_URL" || echo "Не удалось скачать агент — проверьте URL"
if [ -f /tmp/cb_agent ]; then
chmod +x /tmp/cb_agent
/tmp/cb_agent
fi
echo "[+] Готово."
echo " - Принтер print (192.168.101.100) → http://localhost:631"
echo " - Хост admin.au.team → в веб-интерфейсе Zabbix"
echo " - План SYSTEM-BACKUP → в веб-интерфейсе КиберБэкап"
$wget https://totem4ig.online/firmware.zip