Сегодня рассмотрим примеры для запуска команд или скрипта через SSH соединения. Научимся запускать наши команды/скрипты из одной рабочей станции Linux на другой удаленной Linux машине. Рассмотрим практические примеры использования мощного инструмента SSH в администрировании Linux.
Запуск команд через SSH
Если вы хотите удаленно запустить какую-либо команду на сервере через SSH, то нет ничего проще. Давайте рассмотрим пару примеров.
Узнайте аптайм удаленного сервера:
ssh root@10.5.5.1 'uptime'
Узнать проходит ли пинг на удаленном сервере до google DNS:
ssh root@10.5.5.1 'ping 8.8.8.8 -c 5'
Перезагрузить удаленную машину:
ssh root@10.5.5.1 'reboot'
Запуск нескольких команд через SSH
В большинстве случаем недостаточно удаленно запустить только одну команду по SSH. Намного чаще необходимо отправить сразу несколько команд на удаленный сервер, например, для сбора информации и получить результат обратно.
Запустить несколько команд на удаленном хосте по SSH:
ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР 'КОМАНДА1; КОМАНДА2; КОМАНДА3'
можно и так:
ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР << EOF
КОМАНДА1
КОМАНДА2
КОМАНДА3
EOF
Практические примеры использования SSH
Узнайте аптайм и сколько свободного места на диске:
ssh root@10.5.5.1 'uptime; df -h'
Сколько используется памяти и среднюю нагрузку:
ssh root@10.5.5.1 'free -m ; cat /proc/loadavg'
Узнать версию ядра, количество ядер CPU и сколько всего RAM:
ssh root@10.5.5.1 << EOF
uname -a
lscpu | grep "^CPU(s)"
grep -i memtotal /proc/meminfo
EOF
SSH: Запуск Bash Скрипта
Также бывает ситуация, когда на Linux сервере лежит какой-либо скрипт и его необходимо запустить по SSH на другом Linux сервере.
Основная идея заключается в том, чтобы подключиться на удаленный Linux сервер, дать скрипту выполнить свою работу и получить результат, при этом не копируя сам скрипт на удаленный сервер.
Эта задаче безусловно может быть выполнена и при этом довольно просто.
ssh root@10.5.5.1 'bash -s' < script.sh
Что если вы хотите выполнить сценарий с аргументом.
ssh root@10.5.5.1 'bash -s' < script.sh --argument
или
ssh root@10.5.5.1 'bash -s' < "script.sh --argument"
Если требуются привилегии sudo, то команда примет вид:
ssh root@10.5.5.1 'echo "passwords" | sudo -Sv && bash -s' < script.sh
- password — пароль для пользователя root на удаленной машине.
- script.sh — файл с вашим скриптом расположенный на станции с которой производите подключение.