Отправка команд по ssh

Материал из IT в школе
Версия от 13:11, 1 апреля 2026; Admin (обсуждение | вклад) (Новая страница: «Иногда надо отпраивть по ssh целый скрипт с объёмным кодом и разными кавычками. Лучше всего передавать это в base64. Инструкция на примере скрипта для проверок компьютеров для МЦКО. Создаём файл '''script.sh''' с содержимым: <syntaxhighlight lang="bash"> #!/b...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Иногда надо отпраивть по ssh целый скрипт с объёмным кодом и разными кавычками. Лучше всего передавать это в base64.

Инструкция на примере скрипта для проверок компьютеров для МЦКО.

Создаём файл script.sh с содержимым:

#!/bin/bash
set -eu # При ошибке в какой-то команде заканчивать скрипт
py-ini-config del /etc/skel/.config/powermanagementprofilesrc "AC][DPMSControl" idleTime --flush
sleep 5
qdbus --system org.mos.auth / login guest ''
sleep 15
py-ini-config del /home/guest/.config/powermanagementprofilesrc "AC][DPMSControl" idleTime --flush
sleep 15
qdbus --system org.mos.auth.guest / runDetach "chromium-browser 'https://ВАШ.mcko.ru/test/?action=DoLogin&template=17644&login=ВАШ&password=ВАШ' & xdotool sleep 10 key Tab Tab Tab Return "
shutdown 17:10

Выполняем команду, которая не только закодирует в base64, но и сожмёт его, чтобы меньше передавать:

cat script.sh | xz -9 | base64 -w 0

Получим на выходе строку вроде:

$ cat script.sh | xz -9 | base64 -w 0
/Td6WFoAAATm1rRGBMCuAuwDIQEcAAAAAAAAAESLqxHgAesBJl0AEYhCRj30GGqmZ696oTzdwPzPhj8LNrdap74s5gihym1mGabDBJZbK4rPi1BXM/fXwsqTFmqii1JyMHIkzF8hdFSIP4Vwk378J5Efp0KCqiPHB4pTZadckhnmYSPqVefMoMEX/200CC4ZxPt211TsXVIU8UMd74jBORIp6QuPK7JAOZMEcDeRmvVOfcMevDjzQ7Pp0V80vb/DuYSLWRuynKhongptftmDwOhZz2+OTPOL2WynvSlmuDG5MwI/oS06E8WHN84ZJ+QmChipa8c0LcqiBAlONie9K72tFsDN/GEGS3fw604xL/ORipKYByYlJWHmh0B+dy0lDa7XoWjTXxqw+4FpjNuhI9k22mUERucZIn4PJyvt26RrlunBcRqb03qJX0EAAAAA6O9XO0d3usgAAcoC7AMAALb6CZexxGf7AgAAAAAEWVo=

Теперь можно отправлять команду через Управление компьютерным классом:

tmp="$(mktemp)" && echo "/Td6WFoAAATm1rRGBMCuAuwDIQEcAAAAAAAAAESLqxHgAesBJl0AEYhCRj30GGqmZ696oTzdwPzPhj8LNrdap74s5gihym1mGabDBJZbK4rPi1BXM/fXwsqTFmqii1JyMHIkzF8hdFSIP4Vwk378J5Efp0KCqiPHB4pTZadckhnmYSPqVefMoMEX/200CC4ZxPt211TsXVIU8UMd74jBORIp6QuPK7JAOZMEcDeRmvVOfcMevDjzQ7Pp0V80vb/DuYSLWRuynKhongptftmDwOhZz2+OTPOL2WynvSlmuDG5MwI/oS06E8WHN84ZJ+QmChipa8c0LcqiBAlONie9K72tFsDN/GEGS3fw604xL/ORipKYByYlJWHmh0B+dy0lDa7XoWjTXxqw+4FpjNuhI9k22mUERucZIn4PJyvt26RrlunBcRqb03qJX0EAAAAA6O9XO0d3usgAAcoC7AMAALb6CZexxGf7AgAAAAAEWVo=" | base64 -d | xz -d > "$tmp" && bash "$tmp"