Это довольно распространенная задача для системных администраторов Linux, когда есть необходимость выполнения некоторой команды или локальный скрипт Bash из одного сервера Linux или Unix-сервера на другую удаленную машину на Linux с помощью SSH. В в этой статье вы найдете примеры как запустить удаленные SSH команды в Linux с показанием результата локально.
Основной синтаксис для запуска удаленной команды SSH в Linux
$ ssh USER@HOST 'command'
где:
- SSH -> это протокол или команда используется для установки соединения с удаленным сервером.
- USER -> это имя пользователя на удаленном сервере.
- HOST -> это удаленный хост, на котором вы хотите выполнить удаленную команду.
- Command -> это команда, которую вы хотите выполнить на удаленном хосте.
Примеры:
- Допустим, вы хотите узнать детали точки монтирования удаленного сервера.
[root@destroyer ~]# ssh lradmin@213.159.209.228 df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda2 10473456 1599732 8873740 16% / devtmpfs 483256 0 489456 0% /dev tmpfs 547132 0 502766 0% /dev/shm tmpfs 547132 13000 492766 3% /run tmpfs 547132 0 502766 0% /sys/fs/cgroup tmpfs 111244 0 103558 0% /run/user/1000 tmpfs 111244 0 103558 0% /run/user/0 [root@destroyer ~]#
В приведенном выше примере система запросит у вас пароль вашего имени на удаленном хосте. Так как мы настроили пароль SSH между двумя серверами, система работала без пароля. В случае, если вы хотите настроить пароль SSH между двумя сервера, пожалуйста, прочитайте эту статью.
- В случае, если вы хотите узнать результат команды бесперебойной работы на удаленном хосте.
[root@destroyer ~]# ssh lradmin@213.159.209.228 uptime 00:31:26 up 52 min, 2 users, load average: 0.00, 0.01, 0.03 [root@destroyer ~]#
- Даже вы можете перегрузить сервер удаленно.
[root@destroyer ~]#ssh root@213.159.209.228 reboot
Запуск удаленной команды SSH в Linux, для остановки или запуска любого процесса или услуги.
- В случае, если вы хотите остановить процесс HTTPd на удаленном хосте.
[root@destroyer ~]# ssh lradmin@213.159.209.228 'systemctl stop httpd'
Так как в приведенном выше примере команда состоит из более чем одного слова, вы должны всю команду заключить в кавычки «‘».
- Теперь, чтобы запустить его снова службу HTTPD, используйте команду ниже.
[root@destroyer ~]# ssh lradmin@213.159.209.228 'systemctl start httpd'
- Позволяет проверить состояние службы HTTPd удаленно с помощью следующей команды:
[root@destroyer ~]# ssh lradmin@213.159.209.228 'systemctl status httpd' ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2017-06-212 95:15:21 EDT; 43s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 2121 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─1911 /usr/sbin/httpd -DFOREGROUND ├─1912 /usr/sbin/httpd -DFOREGROUND ├─1913 /usr/sbin/httpd -DFOREGROUND ├─1914 /usr/sbin/httpd -DFOREGROUND ├─1915 /usr/sbin/httpd -DFOREGROUND └─1916 /usr/sbin/httpd -DFOREGROUND Jun 22 09:15:21 ip-213-159-209-228.ap-south-1.compute.internal systemd[1]: Starting The Apache HTTP Server... Jun 22 09:15:21 ip-213-159-209-228.ap-south-1.compute.internal systemd[1]: Started The Apache HTTP Server. [root@destroyer ~]#
Чтобы получить вывод в локальный файл Linux, выполните команду на удаленном хосте.
В случае, если вы хотите получить выход выполненной команды на удаленном хосте, вам необходимо следовать следующему методу.
[root@destroyer ~]# ssh lradmin@213.159.209.228 'free -m' > /tmp/memory.txt [root@destroyer ~]# cat /tmp/memory.txt total used free shared buff/cache available Mem: 991 95 352 13 450 685 Swap: 0 0 0 [root@destroyer ~]#
Здесь, в приведенном выше примере мы выполнили команду использования памяти на удаленном хосте и перенаправили вывод в локальный файл «/tmp/memory.txt». После этого вы можете проверить содержимое файла с помощью команды cat.