Linux запустить скрипт удаленно

Удаленный запуск скрипта на сервере Linux

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

Удаленный запуск скрипта повторяющихся задач повышают эффективность системного администрирования. Это отлично подходит для локальных машин, но что если вы контролируете удаленные серверы? Можете ли вы запустить локальный скрипт на удаленном компьютере? Да!

Удаленные подключения

Удаленное администрирование системы обычно включает в себя подключение к удаленному компьютеру через защищенное соединение shell. Соединение SSH предоставляет вам командную строку на удаленном компьютере. После этого вы можете приступить к выполнению любых действий по обслуживанию системы.

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

Со временем вы будете дорабатывать и совершенствовать свои скрипты. Если у вас много удаленных машин, которые нужно администрировать, поддерживать копию каждого сценария на каждом сервере в актуальном состоянии — это боль и неприятные накладные расходы. Это само по себе становится административной задачей и съедает экономию времени, которую должно обеспечить использование скриптов.

Идеальное решение позволило бы вам хранить скрипты на локальной машине и запускать их на удаленных компьютерах через SSH-соединение. Это позволило бы упростить управление централизованной коллекцией сценариев, а один и тот же актуальный скрипт запускался бы на всех компьютерах.

Bash и SSH предоставляют возможность сделать именно это.

Беспарольные SSH-соединения

Лучший способ сделать это — беспарольные соединения с использованием SSH-ключей. Создав SSH-ключи на локальном компьютере и отправив их на каждый из удаленных компьютеров, вы сможете безопасно и удобно подключаться к удаленным компьютерам, не запрашивая каждый раз пароль.

Хотя они могут отпугнуть начинающих пользователей, ключи SSH на самом деле не сложны. Их легко сгенерировать, просто установить на удаленных серверах, а при использовании их с SSH не возникает никаких сложностей. Единственным условием является наличие на удаленных компьютерах SSH-демона sshd и учетной записи пользователя на удаленном компьютере.

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

Чтобы сгенерировать пару ключей SSH, введите:

Если у вас есть учетная запись «dave» на компьютере под названием «fedora-36.local», вы можете установить на него свой открытый ключ SSH с помощью этой команды:

Теперь, установив SSH-соединение обычным способом, вы пройдете аутентификацию по SSH-ключам. Вы попадете в командную строку на удаленном сервере без запроса пароля.

Читайте также:  Вызываем консоль в linux

Удаленный запуск локального скрипта

Для этих тестов мы используем наш удаленный сервер — это компьютер Linux под названием «fedora-36.local». Мы настроили SSH ключи и протестировали беспарольное подключение к удаленному серверу с нашего локального компьютера.

Наш скрипт очень прост. Он записывает временную метку в файл с именем «timestamp.txt» на удаленном сервере. Обратите внимание, что скрипт завершается командой exit. Это важно, поскольку на некоторых старых системах скрипт может быть выполнен до конца, но SSH-соединение остается открытым.

#!/bin/bash date >> timestamp.txt exit 0

Скопируйте этот текст в редактор, сохраните его как «local.sh», а затем используйте chmod, чтобы сделать его исполняемым.

Удаленный запуск скрипта

На нашей локальной машине мы запустим скрипт следующим образом:

Источник

📑 Запуск команд на удаленном сервере через SSH

Запуск команд на удаленном компьютере через SSH-подключение

Протокол SSH, помимо работы в интерактивном режиме, поддерживает также разовый запуск команд или скриптов на удаленном компьютере под управлением ОС семейства Linux.

Синтаксис команды запуска удаленной команды:

ssh [пользователь]@[сервер] '[команда]'

Если доступ по ssh реализован по ключевой паре, то команда выполнится немедленно. Если нет, то при запросе вводим пароль указанного пользователя и в консоли получаем вывод команды, если таковой имеется.

Например, получим информацию об установленной на удаленном сервере операционной системе:

ssh my_name@192.168.1.77 'uname -a'

Чтобы запустить несколько команд за одно подключение, можно использовать символ “;” в качестве разделителя. Проверим время работы удаленного компьютера, его загрузку и запросим все активные сетевые подключения на удаленном компьютере:

ssh my_name@192.168.1.77 'uptime; netstat -anp tcp'

В случае, если потребуется запустить на удаленном сервере локальный файл скрипта, то потребуется в SSH-подключении вызвать командный интерпретатор в режиме исполнения сценария (например, bash с ключом -s), и на стандартный ввод передать ему файл скрипта. Команда запуска локального скрипта на удаленном компьютере будет выглядеть примерно так:

ssh my_name@192.168.1.77 'bash -s' < /home/user/anycript.sh

В результате скрипт в локальном файл /home/user/anyscript.sh исполнится на удаленном сервере.

Источник

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

Сценарии повторяющихся задач повышают эффективность системного администрирования. Это отлично подходит для локальных компьютеров, но что, если вы контролируете удаленные серверы? Можно ли запустить локальный скрипт на удаленном компьютере? Да!

Удаленные подключения

Удаленное системное администрирование обычно включает в себя подключение к удаленному компьютеру через защищенное соединение shellell. Соединение SSH предоставляет вам командную строку на удаленном компьютере. Затем вы можете продолжить и выполнить любое необходимое обслуживание системы.

Сценарии оболочки помогают, позволяя вам обернуть последовательность команд в сценарий, который можно запустить, как если бы они были программой, объединяя множество действий в одну инструкцию командной строки.

Читайте также:  Linux copy file bash

Со временем вы будете настраивать и улучшать свои сценарии. Если у вас есть много удаленных компьютеров для администрирования, поддержание копии каждого скрипта на каждом сервере в актуальном состоянии — это проблема и утомительные накладные расходы. Это само по себе становится административной задачей и съедает экономию времени, которую должно обеспечить использование сценариев.

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

Bash и SSH предоставляют способ сделать именно это.

Беспарольные SSH-соединения

Лучший способ сделать это — подключиться без пароля, используя ключи SSH. Генерируя SSH-ключи на локальном компьютере и отправляя их на каждый из удаленных компьютеров, вы можете безопасно и удобно подключаться к удаленным компьютерам без необходимости каждый раз вводить пароль.

Хотя они могут пугать начинающих пользователей, ключи SSH на самом деле не сложны. Их легко сгенерировать, просто установить на удаленных серверах и без проблем использовать с SSH. Единственным предварительным условием является то, что на удаленных компьютерах должен быть запущен демон SSH sshd и что у вас есть учетная запись пользователя на удаленном компьютере.

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

Чтобы сгенерировать пару ключей SSH, введите:

Если у вас есть учетная запись с именем «dave» на компьютере с именем «fedora-36.local», вы можете отправить и установить на нее свой открытый ключ SSH с помощью этой команды:

ssh-copy-id dave@fedora-36.local

Теперь при обычном подключении SSH будет выполняться аутентификация с использованием ключей SSH. Вы попадаете в командную строку на удаленном сервере без запроса пароля.

Удаленный запуск локального скрипта

Для этих тестов нашим удаленным сервером является компьютер с Linux под названием «fedora-36.local». Мы настроили ключи SSH и протестировали беспарольное подключение к удаленному серверу с нашего локального компьютера.

Наш сценарий очень прост. Он записывает метку времени в файл с именем «timestamp.txt» на удаленном сервере. Обратите внимание, что сценарий завершается командой выхода. Это важно, в некоторых старых системах сценарий может выполняться до конца, но соединение SSH остается открытым.

#!/bin/bash date >> timestamp.txt exit 0

Скопируйте этот текст в редактор, сохраните его как «local.sh», а затем используйте chmod , чтобы сделать его исполняемым.

На нашей локальной машине мы запустим скрипт следующим образом:

ssh dave@fedora-36.local 'bash -s' < local.sh

  • ssh dave@fedora-36.local: SSH-подключение, которое мы устанавливаем к удаленному компьютеру. При этом используется команда ssh , уже существующая учетная запись пользователя на удаленном сервере и адрес удаленного сервера.
  • 'bash -s': это заставляет Bash считывать команды из стандартного потока ввода. Он позволяет Bash читать перенаправленный или переданный по конвейеру ввод.
  • chmod .
#!/bin/bash echo "$1 $2 $3" >> timestamp.txt date >> timestamp.txt exit 0

Команда, которую нам нужно использовать, аналогична предыдущему примеру с некоторыми изменениями.

ssh dave@fedora-36.local "bash -s" -- < local2.sh "How-To\ Geek" "Linux" "Articles"

Двойной дефис « -- » говорит Bash, что следующее не должно считаться параметрами командной строки для команды ssh . Три параметра сценария, как обычно, следуют за именем сценария. Обратите внимание, что мы использовали обратную косую черту « \ », чтобы избежать пробела в параметре «How-To\ Geek».

Мы можем проверить с помощью cat , что наши параметры были получены и правильно обработаны на удаленном сервере.

Удаленный запуск части скрипта

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

Мы можем добиться этого, используя здесь документы. Здесь документы позволяют нам перенаправлять строки из помеченного раздела скрипта в команду. Локальная обработка может выполняться над и под документом здесь.

Это скрипт «local3.sh», который содержит здесь документ.

#!/bin/bash # local processing can done here # remote processing is done here ssh -T dave@fedora-36.local > /home/dave/timestamp.txt # this is the label that marks the end of the redirection _remote_commands # more local processing can be done here exit 0

Мы используем команду ssh с теми же данными подключения, что и раньше. Мы подключаемся как пользователь «dave» к удаленному серверу с именем «fedora-36.local». Мы также используем параметр -T (отключить выделение псевдотерминала). Это предотвращает предоставление удаленным сервером интерактивного терминала для этого соединения.

За перенаправлением « » следует название ярлыка. В этом примере мы используем «_remote_commands». В этом ярлыке нет ничего особенного, это просто ярлык.

Все команды, которые появляются в строках, после перенаправления, отправляются через SSH-соединение. Перенаправление останавливается, когда встречается метка. Затем выполнение скрипта продолжается со строки, следующей за меткой.

Давайте запустим наш сценарий смешанной локальной и удаленной обработки.

Как и ожидалось, мы видим новую запись в файле «timestamp.txt».

Расширьте охват

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

Источник

Оцените статью
Adblock
detector