Добавить в корзинуПозвонить
Найти в Дзене

Удаленное выполнение команд SSH

Сегодня еще немного об SSH, точнее о выполнении команд на удалённом сервере. Чтобы это сделать - необязательно заходить на него, достаточно выполнить: ssh user@remotehost cat ~/myfile И вы получите в локальном терминале вывод указанной команды. Это удобно, если нужно обработать результат локально или быстро узнать статус службы или перезапустить ее. При этом важно понимать, что на удаленном узле выполняется только первая команда, все перенаправления или конвейеры будут работать уже локально. Например: ssh user@remotehost mysqldump -uroot-p database > database.sql Выгрузит дамп MySQL базы на удаленном сервере, но сохранит его локально. Это работает даже на платформе Windows, где уже давно есть встроенный OpenSSH. А вот такая конструкция отлично сработает в Linux, но даст вам ошибку в Windows, так как в ней нет команды grep: ssh user@remotehost dpkg -l | grep 1c-ent Это как раз то, о чем мы говорили, при такой записи dpkg выполниться удаленно, а grep - локально. Чтобы выполни

Удаленное выполнение команд SSH

Сегодня еще немного об SSH, точнее о выполнении команд на удалённом сервере.

Чтобы это сделать - необязательно заходить на него, достаточно выполнить:

ssh user@remotehost cat ~/myfile

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

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

Например:

ssh user@remotehost mysqldump -uroot-p database > database.sql

Выгрузит дамп MySQL базы на удаленном сервере, но сохранит его локально. Это работает даже на платформе Windows, где уже давно есть встроенный OpenSSH.

А вот такая конструкция отлично сработает в Linux, но даст вам ошибку в Windows, так как в ней нет команды grep:

ssh user@remotehost dpkg -l | grep 1c-ent

Это как раз то, о чем мы говорили, при такой записи dpkg выполниться удаленно, а grep - локально.

Чтобы выполнить команду полностью на удаленном узле ее нужно взять в одинарные кавычки.

ssh user@remotehost 'dpkg -l | grep 1c-ent'

С другой стороны никто нам не мешает решать часть задач другими инструментами:

ssh user@remotehost dpkg -l | Select-String -SimpleMatch "1c-ent"

Здесь мы получили нужную информацию с удаленного узла и обработали ее при помощи PowerShell