Назад | Перейти на главную страницу

запуск команды после того, как ssh открыл туннель

Я хочу запустить какой-то процесс, для которого требуется открытый туннель ssh.

Как вы запускаете какую-то команду ПОСЛЕ туннель ssh успешно открыт? Таймеров недостаточно, так как скорость сети и нагрузка на удаленную машину могут сильно повлиять на время, необходимое для открытия соединения ...

- ОБНОВЛЕНИЕ - Я хочу открыть туннель и запустить команду на местный машина

ssh -fN приведет к тому, что SSH-клиент перейдет в фоновый режим после установления соединения, поэтому вы можете просто дождаться этого, а затем выполнить команду.

Вы думали о модификации вас .bashrc файл? Это будет выполняться каждый раз при входе в систему. Если это что-то, что должно происходить каждый раз кто угодно входит в систему, вы можете изменить глобальный /etc/bashrc слишком.

Вы можете использовать опцию LocalCommand ssh, но есть некоторые ограничения. Из man ssh_config:

LocalCommand

Specifies a command to execute on the local machine after successfully connecting
to the server.  The command string extends to the end of the line, and is
executed with the user's shell.  The following escape character substitutions
will be performed:
  ‘%d’ (local user's home directory),
  ‘%h’ (remote host name), ‘%l’ (local host name),
  ‘%n’ (host name as provided on the command line),
  ‘%p’ (remote port),
  ‘%r’ (remote user name) or ‘%u’ (local user name).

The command is run synchronously and does not have access to the session of
the ssh(1) that spawned it. It should not be used for interactive commands.

This directive is ignored unless PermitLocalCommand has been enabled.

Вот быстрый пример:

ssh -v -o PermitLocalCommand=yes -o 'LocalCommand=/bin/date >/tmp/test' localhost

Позже вам, вероятно, потребуется поместить эти параметры в соответствующий раздел Host в $HOME/.ssh/config файл.