2014-06-18 3 views
0

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

В сценарии оболочки/bash.

, например:

что-то, как показано ниже:

test_abc() { 
    # this function perform a long list of commands to be performed on remote server 
    command 1; 
    command 2; 
    . 
    .. 
    command N; 

    few echo commands;  
} 

ssh [email protected]_server test_abc;  

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

ответ

0

Очевидно, что удаленная система не сможет ничего понять из вашей локальной среды. «test_abc» должен быть командой, известной на «remote_server».

ssh [email protected]_server "$(cat <<- _EOF_ 
((command-list)) 
_EOF_ 
)" 

Это, или процитировать тело «test_abc», но это может потребовать возился, чтобы цитировать правильно.

+0

получил ошибку, Pseudo-terminal не будет выделен, потому что stdin не является терминалом. –

+0

ssh user @ server "$ (cat << 'EOT' echo" Эти команды будут выполняться на: $ (uname -a) " EOT )" –

Смежные вопросы