Como exportar uma função no bash sobre o ssh?

2

Eu gostaria de escrever uma função no bash, exportar essa função e executá-la no ssh. Isso é possível, e se sim, como?

Eu tentei

#!/bin/bash

function myfunc() {
    echo $1
}        
export -f myfunc

mas isso não parece funcionar.

    
por MaVe 02.12.2013 / 19:02

4 respostas

3

No exemplo mencionado em seu comentário, é parallel que transfere a função para o ambiente remoto (e funciona apenas como bash). Então você tem que usar paralelo para tentar. Depois de definir e exportar (conforme Q), você deve:

function myfunc() {
    echo $1
}        
export -f myfunc
parallel --env myfunc -S server 'myfunc abc' ::: bar

Existe uma parte no tutorial sobre isso .

O recurso de encaminhamento de funções bash com --env está disponível a partir de parallel versão 20130722.

    
por 02.12.2013 / 21:03
0

Você pode usar algo semelhante a isso

arquivo myfunc.sh

function myfunc() {
    echo $1
} 

Em seguida, digite a função em seu shell como

source myfunc.sh

Então você pode executar o "myfunc" no nó remoto assim,

ssh user@ip "$(declare -f myfunc; myfunc 'cmdlinearg' )"

onde "cmdlinearg" é o valor da primeira variável de linha de comando que deve ser ecoada dentro da função.

URL de referência: link até o final

    
por 03.10.2016 / 20:00
0

não tenho certeza se funciona para todos os casos, é meio malcriado:

function remote-function() {
   local param1=$1
   echo $param1
}
ssh_connection=someone@somewhere
echo $(type remote-cleanup | tail -n+2 | sed 's#^}#; }#g')'; remote-function hello '  | ssh ${ssh_connection} bash
    
por 05.10.2016 / 12:36
0

Isso deve funcionar se o seu ambiente não for grande:

#!/bin/bash

myvar="This is my var: "
alias myecho=echo

function myfunc() {
    myecho $myvar $1
}        

env_parallel -S server myfunc ::: a b c
    
por 05.10.2016 / 13:30