Удаленное выполнение команд и скриптов

bash remote execution

Пример 1

Запуск локального скрипта script.sh на удаленном сервере

$ ssh root@192.168.1.1 'bash -s' < script.sh

Пример 2

Пример, демонстрирующий удаленный сеансовый режим:

$ ssh root@192.168.1.1 << EOF
uname -a
lscpu  | grep "^CPU(s)"
grep -i memtotal /proc/meminfo
EOF

Пример 3

Простой вариант - выполнение одной или нескольких команд на удаленном сервере

$ ssh root@192.168.1.1 'uptime'
$ ssh root@192.168.1.1 'who; df -H; free -m'

Пример 4

Рабочий пример, демонстрирующий вызов функции, определенной в локальном скрипте, на удаленном сервере.

#!/bin/bash
function payload() {
  mkdir $1
}

while read target; do
  key=$(echo $target | awk '{ FS="|"; $0=$0; print tolower($4) }')
  ip=$(echo $target | awk '{ FS="|"; $0=$0; print $3 }')
  user=$(echo $target | awk '{ FS="|"; $0=$0; print $2 }')
  declare -f payload | ssh -o "LogLevel=ERROR" -o "StrictHostKeyChecking=no" -i ~/.ssh/${key}.pem ${user}'@'${ip} "$(cat); payload ${ip}"
done < vm_info1.unl

Пример 5

Выполнение функции из скрипта на удаленной машине

#!/bin/bash

while read target; do
key=$(echo $target | awk '{ FS="|"; $0=$0; print tolower($4) }')
ip=$(echo $target | awk '{ FS="|"; $0=$0; print $3 }')
user=$(echo $target | awk '{ FS="|"; $0=$0; print $2 }')

function payload() {
mkdir $1
}

declare -f payload | ssh -o "LogLevel=ERROR" -o "StrictHostKeyChecking=no" -i ~/.ssh/${key}.pem ${user}'@'${ip} "$(cat); payload ${user}"

done < vm_info1.unl
Подробнее здесь