SSH: Удаленный Запуск Команд или Скрипта — Linux

Для Linux системного администратора довольно распространенной является задача удаленного запуска какой-либо команды или локального скрипта из одной рабочей станции или Linux сервера на другой удаленной Linux машине по SSH.

В этой статье вы найдете примеры запуска одной или нескольких команд или Bash скрипта, между двумя удаленными Linux хостами по SSH.

Это информация будет особенно полезна тем, кто хочет написать Bash скрипт, который будет находиться на одной Linux машине, но будет запускаться на других удаленных серверах по SSH.

Дельный Совет: Подключайтесь на удаленный SSH сервер без ввода пароля! Настройте аутентификацию по ключам выполнив 3 простых действия! Читать далее →

SSH: Удаленный Запуск Команды

Удаленно запустите команду на сервере по SSH:

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР 'КОМАНДА'

Примеры

Узнайте аптайм удаленного сервера:

$ ssh root@192.168.1.1 'uptime'

Перезагрузите удаленную машину:

$ ssh root@192.168.1.1 'reboot'

SSH: Запуск Нескольких Команд

В большинстве случаем недостаточно удаленно запустить только одну команду по SSH.

Намного чаще необходимо отправить сразу несколько команд на удаленный сервер, например, для сбора информации с целью инвентаризации и получить результат обратно.

Существует множество способов как это сделать, но я покажу наиболее популярные.

Запустить несколько команд на удаленном хосте по SSH:

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР 'КОМАНДА1; КОМАНДА2; КОМАНДА3'

— или —

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР 'КОМАНДА1 | КОМАНДА2 | КОМАНДА3'

— или —

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР << EOF
КОМАНДА1
КОМАНДА2
КОМАНДА3
EOF

Дельный Совет: Слишком медленно происходит подключение по SSH? Это легко исправить! Избавитесь от задержки! Читать далее →

Примеры

Узнайте аптйм и сколько свободного места на диске:

$ ssh root@192.168.1.1 'uptime; df -h'

Узнайте сколько используется памяти и среднюю нагрузку:

$ ssh root@192.168.1.1 'free -m | cat /proc/loadavg'

Узнайте версию ядра, количество ядер CPU и сколько всего RAM:

$ ssh root@192.168.1.1 << EOF
uname -a
lscpu  | grep "^CPU(s)"
grep -i memtotal /proc/meminfo
EOF

SSH: Запуск Bash Скрипта

Не менее распространенная ситуация, когда на Linux сервере лежит како-то Bash скрипт и необходимо по SSH запустить его на другом Linux сервере.

Основная идея заключается в том, чтобы подключиться на удаленный Linux сервер, дать скрипту выполнить свою работу и получить результат, при этом не копируя сам скрипт на удаленный сервер.

Эта задаче безусловно может быть выполнена и при этом довольно просто.

$ ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР 'bash -s' < СКРИПТ

Дельный Совет: Хотите ЗАЖЕЧЬ? Запустите GUI (графическое) приложение на удаленном компьютере под управлением Linux по SSH! Читать далее →

Пример

Запустите локальный скрипт script.sh на удаленном сервере:

$ ssh root@192.168.1.1 'bash -s' < script.sh

19 Replies to “SSH: Удаленный Запуск Команд или Скрипта — Linux”

  1. Nice Post there..I was wondering what if want to execute the script with an argument.

  2. Try this:

    $ ssh root@192.168.1.1 'bash -s' < "script.sh --argument"
  3. Hi,
    How about executing a command remotely and making sure that it will be killed once i kill my ssh session. or getting of PID of either SSH or the actual command on remote-node via a script.
    Something like this I want to achieve:
    Example: collecting pcap on remote addr and storing it locally.

    $ ssh -t -f   "tcpdump -w -" > /tmp/tcp.pcap

    I was unable to get the proper Pids in this case. Any reply would be helpful.

    — Thanks.

  4. How to check remote server services which require sudo privilege?

  5. How to check remote server services which require sudo privilege from local script file?

  6. $ ssh ADDRESS 'echo "rootpass" | sudo -Sv && bash -s' < BASH_FILE

    is what I use to send a bash script over the wire with sudo priviliges

  7. How do create a scrip to run commands on multiple remote machines?
    When the first one gets executed, the response returned to STOUT, and the next one is not executed until I ^C the previous command.
    I tried using ‘exit’ command and ‘&’ , neither is working.

  8. useless writing! Where it’s remote script executing example about sudo use?

  9. Hello everyone,
    I am new to linux and trying to learn it. I have task to complete «Get last 3 login details of list of linux machine with date and time.»
    Is there any way to achive it?

    Thanks in advance

    1. Command $backdoor
      $bash -0 $(wich bash)
      Whoami..
      #root

  10. You should change these examples to use double quotes — I got tripped up putting variables in these single quotes and took me a while to realise bash treats it as a string…

  11. como puedo hacer que solo me pida una vez la contraseña de mi servidor? hice mi escript y como realizo varias tareas me pide varias veces la contraseña

    1. usa ssh-copy-id para copiar la llave

  12. ssh root@192.168.0.10 <<Filler
    feh -F ~/image.jpg &
    exit
    Filler

    did not help me.. still in ssh connection =(

  13. This was very helpful !
    Thanks 🙂

  14. Can someone help me write a shell script to shutdown a Ubuntu computer?
    I’m going to have it run on a Mac, so that it will ssh into the Ubuntu and shut it down. I need it to open Application «Terminal» then ssh name@123.45.67.89, then give it the password.
    Then I need it to issue command «sudo poweroff», and give it the password again.
    I know how to do this manually by opening Mac’s Terminal. I just type in «ssh name@123.456.78.9, it asks for the password, I type it in, and it’s connected. Then I just type in «sudo poweroff» and it asks for the password again, I type it in, and bam, it shuts down the Ubunt computer.
    The problem is, I need to automate this to do it at a specific time of day. On the Mac, there is what is called «Automator», and you can set up ICalendar Events to run an «Automator Workflow» with a Shell Script. I just don’t know how to write the Shell Script to do what I can do manually? Any help is appreciated greatly!

  15. I solved this. Here’s what works:
    tell application «Terminal»
    activate
    do script («ssh test@192.168.1.10«)
    delay 6
    do script «password» in front window
    delay 7
    do script «sudo poweroff» in front window
    delay 5
    do script «password» in front window
    end tell

Добавить комментарий