README.md

Скрипт удаленного администрирования Linux по SSH: SshSendScriptCommand

Версия: 20240427_01

GITFLIC: https://gitflic.ru/user/medved0001
Вконтакте: https://vk.com/medved0001

Описание

Скрипт предназначен для удаленного администрирования Linux-систем по SSH. Он разрабатывается и тестируется в первую очередь для личного использования на Astra Linux (протестирован на версиях 1.7 и 1.8, начиная с версии 20240424_01 скрипт работает на Astra Linux 1.8). Также протестирован на ALT Linux (Alt Workstation 10.2.1). На других системах работа не гарантируется и может потребовать доработок. По любым вопросам и проблемам со скриптом обращайтесь в личные сообщения Вконтакте.

Требования для работы скрипта

  1. Добавить файлы с хостами в каталог ./conf/fileshosts для использования мультирассылки. Каталог сканируется при выборе отправки на все компьютеры и предлагает выбрать один из найденных файлов. На каждой строке должна быть одна запись. Для сканирования доступных ПК в сети используется программа nmap, поэтому синтаксис добавления такой же, как у nmap. Строки можно комментировать с помощью символа #. Например:

    localhost
    #10.0.50.1-255
    10.0.51.1/24
    
  2. Заполнить файл конфигурации sssc.conf и указать в файле usesectionsettings.conf имя используемой секции настроек. В файле sssc.conf может быть несколько преднастроенных секций, между которыми можно переключаться. Пример настроек с описанием:

    [tests1]
    checkpkginst=1
    loginname=test1
    multisend=1
    sshConnectTimeout=5
    numportssh=22
    sshtypecon=pas
    sshkeyfile=
    gpgfilepass=conf/test.gpg
    gpgpass=12345
    remotedirrunscript=/home/test1/.rstmp
    remotedirgroup=astra-admin
    listIgnoreInaccurate=test1;test2;
    listIgnoreAccurate=10.0.50.1;10.0.50.2;test.dc.local;
    

    Комментарии к параметрам файла sssc.conf:

  • checkpkginst: Показывать запрос на выполнение проверки установки необходимых пакетов (1 - показывать, 0 - не показывать).
  • loginname: Логин пользователя (если не заполнен, запросит при запуске скрипта).
  • multisend: Количество потоков рассылки (если не заполнен, по умолчанию будет использован 1 поток).
  • sshConnectTimeout: Таймаут на подключение к ПК по SSH (если не заполнен, по умолчанию 5 секунд).
  • numportssh: Номер SSH порта (если не заполнен, по умолчанию будет использован 22 порт).
  • sshtypecon: Тип SSH подключения (допустимые значения: “pas” - пароль, “key” - ключ).
  • sshkeyfile: Путь до файла закрытого ключа (если sshtypecon равно “pas”, можно оставить пустым).
  • gpgfilepass: GPG файл с паролем подключения SSH и sudo (указать относительный путь от корня скрипта, если не заполнен, запросит при запуске скрипта).
  • gpgpass: Пароль от GPG файла (если не заполнен, запросит при запуске скрипта).
  • remotedirrunscript: Каталог на удаленном компьютере для передачи файлов (если не существует, будет создан при наличии доступа).
  • remotedirgroup: Имя группы, которая будет выставлена в правах на конечный каталог, если он будет создан при выполнении скрипта.
  • listIgnoreInaccurate: Записи для игнорирования хостов по частичному совпадению.
  • listIgnoreAccurate: Записи для игнорирования хостов по точному совпадению.

Файл usesectionsettings.conf

Файл usesectionsettings.conf используется для указания имени секции настроек из файла sssc.conf, которая будет использоваться скриптом.

Пример содержимого файла usesectionsettings.conf:

[main]
usesection=tests1

В данном примере usesection указывает на имя секции [tests1] в файле sssc.conf.

  1. Если в отправляемом скрипте на удаленном компьютере нужно работать с файлами, которые требуется передать, то можно создать каталог в ./files и поместить в него необходимые файлы. При отправке скрипта нужно выбрать каталог с файлами, который будет передан на удаленный компьютер.

  2. В каталоге ./scripts находятся каталоги с отправляемыми скриптами. На текущий момент доступно 9 готовых скриптов:

    • action-pkg - Установка/Переустановка/Удаление пакетов
    • controlusers - Добавление/Удаление пользователей из групп и назначение/удаление МКЦ атрибутов пользователям
    • copyfiles-inhomeuser - Копирование файлов в домашние директории пользователей
    • copyfiles-inroot - Копирование файлов в корень системы
    • cryptoproupdate - Установка КриптоПРО
    • sendmessage - Отправка сообщения пользователям
    • systemupdate-astra-update - Обновление системы через Astra-update
    • systemupdate-dist-upgrade - Обновление системы через dist-upgrade
    • udevrules - Передача правил udev
  3. Чтобы добавить свой скрипт в список для выбора при отправке, нужно создать каталог в ./scripts и поместить в него скрипт с названием sendcommand. Например, ./scripts/testscript/sendcommand. Шаблон файла можно посмотреть в существующих скриптах в каталоге ./scripts/. Подкаталоги ./scripts сканируются на наличие файла sendcommand. Наименование скрипта для списка задается в переменной скрипта namescript.

  4. Файлы temprunscript_cron и ./scripts/runcommand не требуют ручных изменений для работы.

  5. Скрипт можно запустить из терминала с параметрами. Для вывода доступных параметров запуска в терминале нужно запустить скрипт с параметром -help (runscript-sendcommand.sh -help).

Параметры запуска

  • -help - Вызов справки
  • -d значение - Имя каталога в каталоге ./files для отправки на удаленный компьютер (Необязательный параметр)
  • -h значение - Имя используемого файла хостов в каталоге conf/fileshosts/ (Обязательный параметр. Пример значения: test)
  • -s значение - Имя каталога отправляемого скрипта в каталоге scripts (Обязательный параметр. Пример значения: systemupdate-astra-update)
  • -t значение - Тип выполнения скрипта (Обязательный параметр. Допустимые значения: autopassudo, cronscript, nopassudo, nosudo)

Подробное описание скриптов

action-pkg

Скрипт предназначен для установки, переустановки или удаления пакетов на удаленном компьютере. Для использования необходимо раскомментировать нужные действия в скрипте и вписать названия пакетов.

controlusers

Скрипт позволяет добавлять или удалять пользователей из групп, а также назначать или удалять МКЦ атрибуты пользователям. Внутри скрипта нужно задать имена пользователей в массиве, названия групп и выбрать необходимые действия, изменив значения переменных. Подробное описание доступно внутри самого скрипта.

copyfiles-inhomeuser

Скрипт предназначен для копирования файлов в домашние директории пользователей на удаленном компьютере. Для работы скрипта необходимо создать в ./files каталог (например, ./files/test1), который будет условно считаться корнем домашнего каталога пользователя. В него нужно поместить файлы и папки, которые будут скопированы всем пользователям с сохранением структуры. Владельцем файлов будет пользователь, в каталог которого они копируются, а группой - его первичная группа.

copyfiles-inroot

Скрипт предназначен для копирования файлов в корень системы на удаленном компьютере. Для работы скрипта необходимо создать каталог в любом месте на локальном компьютере, который будет условно считаться корнем системы. В него нужно поместить файлы и каталоги, которые будут распакованы в корень системы с сохранением структуры и прав. Если файл уже присутствует на удаленном компьютере, он будет заменен. Права на файлы и каталоги будут изменены в соответствии с локальными настройками. Перед отправкой нужно создать архив с помощью команды tar cpvfz scriptfiles-root.tar.gz . и перенести его в подкаталог ./files (например, ./files/test1).

cryptoproupdate

Скрипт предназначен для установки КриптоПРО на удаленный компьютер. Для работы скрипта необходимо распаковать архив КриптоПРО в каталог (например, ./files/cprocsp/) так, чтобы все файлы были в корне этого каталога (./files/cprocsp/install.sh). При отправке скрипта нужно выбрать каталог с файлами. По умолчанию, если версия совпадает, установка не производится. Можно задать принудительную установку в файле скрипта, например, если требуется изменить список пакетов.

sendmessage

Скрипт предназначен для отправки сообщений пользователям на удаленном компьютере. Для работы скрипта необходимо в отправляемый каталог (например, ./files/sendmessage) поместить файлы с текстом сообщения и расширением .smsg. При выполнении скрипт ищет все файлы с расширением .smsg и выводит сообщения пользователям. В скрипте можно настроить тип вывода сообщения (из переменной или файла), а также выбрать способы показа сообщений (по умолчанию включены все доступные методы: notify-send, fly-dialog, zenity).

systemupdate-astra-update

Скрипт предназначен для обновления системы Astra Linux на удаленном компьютере через механизм Astra-update.

systemupdate-dist-upgrade

Скрипт предназначен для обновления системы на удаленном компьютере через механизм dist-upgrade.

udevrules

Скрипт предназначен для передачи правил udev на удаленный компьютер. Для работы скрипта необходимо создать каталог или поместить в имеющийся каталог (например, ./files/udevrules) файлы правил udev. По умолчанию настроено выполнение, если включен МКЦ. Можно изменить значение переменной для принудительного копирования.

Конвейеры
0 успешных
0 с ошибкой