| 
 Программа клиента SSH может использоваться для логина на удаленную машину или сервер и выполнения команд на этой удаленной машине. Указанная команда выполняется на удаленном хосте/сервере вместо локального шелла. Рассмотрим, как запускать и выполнять команды на удаленной машине под управлением Linux, macOS, *BSD или других операционных системах семейства Unix [1]. 
Синтаксис выполнения команды следующий: 
ssh user1@server1 command1
ssh user1@server1 'command2' 
# использование pipe: #
ssh user1@server1 'command1 | command2' 
# выполнение нескольких команд (они должны быть окружены двойными кавычками): #
ssh admin@box1 "command1; command2; command3"
 
 
Клиент ssh будет выполнять логин на удаленный сервер server1 используя имя пользователя user1, и запустит на этом сервере команду command1. 
[Примеры удаленного запуска команд с помощью ssh] 
Получение даты и времени удаленного сервера: 
Просмотр используемой информации на диске удаленного сервера: 
$ ssh user1@server1 'df -H'
 
 
Определение версии ядра удаленного сервера и имени дистрибутива Linux: 
$ ssh root@nas01 "uname -mrs"
 
 
Или так: 
$ ssh root@nas01 lsb_release -a
 
 
Запуск скрипта /scripts/backup.sh: 
$ ssh operator@oracle1 '/scripts/backup.sh'
 
 
Запуск команды sudo или su делается следующим синтаксисом: 
## синтаксис sudo ##
ssh -t user@hostname sudo command
ssh -t user@hostname 'sudo command1 arg1 arg2' 
  
## синтаксис su ##
ssh user@nas01 su -c "/path/to/command1 arg1 arg2" 
  
# специфика RHEL/CentOS #
ssh user@nas01 su --session-command="/path/to/command1 arg1 arg2"
ssh vivek@nixcraft.home.server su --session-command="/sbin/service httpd restart"
 
 
Без опции -t будет ошибка чтения "sudo: Sorry, you must have a tty to run sudo on a Linux and Unix". 
[Запуск и выполнение через ssh нескольких команд] 
Создайте новый файл с именем commands.txt, используя команду cat: 
Добавьте в этот файл команды, которые надо выполнить: 
После этого можете выполнить эти команды удаленно, используя команду ssh, путем передачи на её вход содержимого локального файла commands.txt: 
$ ssh server_name < commands.txt
$ ssh user@server_name < commands.txt
$ ssh admin@ls.backup < commands.txt
 
 
[Как выполнить несколько команд из скрипта] 
Пример выполнения нескольких команд из скрипта, используя соответствующий функционал bash: 
#!/bin/bash 
  
_remote="ls.backup" 
_user="vivek"
 
  
echo "Local system name: $HOSTNAME" 
echo "Local date and time: $(date)"
 
  
echo 
echo "*** Running commands on remote host named $_remote ***" 
echo
ssh -T $_remote << 'EOL' 
→→now="$(date)" 
→→name="$HOSTNAME" 
→→up="$(uptime)" 
→→echo "Server name is $name" 
→→echo "Server date and time is $now" 
→→echo "Server uptime: $up" 
→→echo "Bye" 
EOL
 
 
Имейте в виду, что вы передаете опцию -T для ssh, когда хотите запретить выделение псевдотерминала. С другой стороны, мы можем принудительно использовать выделение псевдотерминалов в обход опции -t для ssh чтобы выполнять на удаленной машине произвольные основанные на экране программы, что может быть очень полезно. Например, когда реализуются сервисы меню. Несколько опций -t принудительно выделяют tty, даже если у ssh нет локального tty. Подробнее см. документацию по ssh командой: 
[Ссылки] 
1. How To Run / Execute Command Using SSH site:cyberciti.biz. 2. sshfs: монтирование файловой системы удаленного сервера. 3. Automatically enter SSH password with script site:stackoverflow.com.  |