ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как запустить удаленно SSH команды в Linux и показать результат локально

Как запустить удаленно SSH команды в Linux и показать результат локально

Это довольно распространенная задача для системных администраторов Linux, когда есть необходимость выполнения некоторой команды или локальный скрипт Bash из одного сервера Linux или Unix-сервера на другую удаленную машину на Linux с помощью SSH. В в этой статье вы найдете примеры как запустить удаленные SSH команды в Linux  с показанием результата локально.

Основной синтаксис для запуска удаленной команды 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

 

Запуск удаленной команды SSH в Linux, для остановки или запуска любого процесса или услуги.

[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 ~]#

 

Чтобы получить вывод в локальный файл 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.

Exit mobile version