Скрипт удаленного администрирования 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). На других системах работа не гарантируется и может потребовать доработок. По любым вопросам и проблемам со скриптом обращайтесь в личные сообщения Вконтакте.
Требования для работы скрипта
-
Добавить файлы с хостами в каталог
./conf/fileshosts
для использования мультирассылки. Каталог сканируется при выборе отправки на все компьютеры и предлагает выбрать один из найденных файлов. На каждой строке должна быть одна запись. Для сканирования доступных ПК в сети используется программа nmap, поэтому синтаксис добавления такой же, как у nmap. Строки можно комментировать с помощью символа#
. Например:localhost #10.0.50.1-255 10.0.51.1/24
-
Заполнить файл конфигурации
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
.
-
Если в отправляемом скрипте на удаленном компьютере нужно работать с файлами, которые требуется передать, то можно создать каталог в
./files
и поместить в него необходимые файлы. При отправке скрипта нужно выбрать каталог с файлами, который будет передан на удаленный компьютер. -
В каталоге
./scripts
находятся каталоги с отправляемыми скриптами. На текущий момент доступно 9 готовых скриптов:action-pkg
- Установка/Переустановка/Удаление пакетовcontrolusers
- Добавление/Удаление пользователей из групп и назначение/удаление МКЦ атрибутов пользователямcopyfiles-inhomeuser
- Копирование файлов в домашние директории пользователейcopyfiles-inroot
- Копирование файлов в корень системыcryptoproupdate
- Установка КриптоПРОsendmessage
- Отправка сообщения пользователямsystemupdate-astra-update
- Обновление системы через Astra-updatesystemupdate-dist-upgrade
- Обновление системы через dist-upgradeudevrules
- Передача правил udev
-
Чтобы добавить свой скрипт в список для выбора при отправке, нужно создать каталог в
./scripts
и поместить в него скрипт с названиемsendcommand
. Например,./scripts/testscript/sendcommand
. Шаблон файла можно посмотреть в существующих скриптах в каталоге./scripts/
. Подкаталоги./scripts
сканируются на наличие файлаsendcommand
. Наименование скрипта для списка задается в переменной скриптаnamescript
. -
Файлы
temprunscript_cron
и./scripts/runcommand
не требуют ручных изменений для работы. -
Скрипт можно запустить из терминала с параметрами. Для вывода доступных параметров запуска в терминале нужно запустить скрипт с параметром
-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. По умолчанию настроено выполнение, если включен МКЦ. Можно изменить значение переменной для принудительного копирования.