Как запустить локальный сценарий оболочки на удаленном SSH-сервере — CloudSavvy IT

Баш Шелл

Проблема с запуском команд через SSH заключается в том, что обычно вам нужно либо вводить их самостоятельно, либо загружать файл сценария. Однако, немного разбираясь в bash, вы можете передавать целые сценарии через SSH, не имея файла .sh на удаленном компьютере.

Решение: передать сценарий поверх стандартного ввода

У команды SSH есть режим, в котором вы можете запускать любую отдельную команду на удаленном сервере. Чтобы запустить несколько команд, вам нужно будет использовать следующий прием:

ssh пользователь @ remotehost ‘bash -s’ Команда bash -s означает «выполнить следующие команды в новом сеансе bash». Флаг -s позволяет читать из стандартного ввода, а бит

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

Запуск множества удаленных команд внутри сценария

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

ssh user @ remotehost ‘bash -s’ << 'ENDSSH' # Следующие команды выполняются на удаленном хосте echo "test" cd / home / pwd ENDSSH

Это работает, потому что bash -s ожидает любого стандартного ввода. Директива << 'ENDSSH' создает структуру «здесь-документ», в основном передавая все символы между ней и окончанием «ENDSSH» на стандартный ввод и, следовательно, на удаленный хост по SSH.

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

Похожие записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *