Это довольно распространенная задача для системных администраторов Linux, когда есть необходимость выполнения некоторой команды или локальный скрипт Bash из одного сервера Linux или Unix-сервера на другую удаленную машину на Linux с помощью SSH. В в этой статье вы найдете примеры как запустить удаленные SSH команды в Linux с показанием результата локально.
$ 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
[root@destroyer ~]# ssh lradmin@213.159.209.228 'systemctl stop httpd'
Так как в приведенном выше примере команда состоит из более чем одного слова, вы должны всю команду заключить в кавычки «‘».
[root@destroyer ~]# ssh lradmin@213.159.209.228 'systemctl start 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 ~]#
В случае, если вы хотите получить выход выполненной команды на удаленном хосте, вам необходимо следовать следующему методу.
[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.