ssh: как выполнять команды на удаленном сервере |
Добавил(а) microsin |
Программа клиента 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 date
Просмотр используемой информации на диске удаленного сервера: $ 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: $ cat > commands.txt
Добавьте в этот файл команды, которые надо выполнить: date uptime df -H После этого можете выполнить эти команды удаленно, используя команду 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 командой: $ man ssh
[Ссылки] 1. How To Run / Execute Command Using SSH site:cyberciti.biz. |