Assumindo que ez ssh
invoca um shell (possivelmente remotamente como o ssh sugere) para analisar esse código em seu stdin e que esse shell é o mesmo que interpretar o script (e executando em a mesma localidade) e que é ksh, bash ou zsh (para typeset -f
support), você poderia fazer:
ez ssh two << EOSSH
$(typeset -f gitpull)
gitpull
EOSSH
Ou seja, passe a definição da função gitpull
para o shell que ez ssh
chama antes de invocá-lo. Ou com zsh
:
ez ssh two << EOSSH
$functions[gitpull]
EOSSH
Ou, claro, você poderia fazer:
gitpull='
cd /var/www/html
STATUS=$((git status) 2>&1)
echo $STATUS
'
ez ssh two << EOSSH
$gitpull
EOSSH
ou
printf '%s\n' "$gitpull" | ez ssh two
Outras abordagens podem ser usar loops como já sugerido ou fazer:
ez_ssh_gitpull() {
ez ssh "$@" << 'EOSSH'
cd /var/www/html
STATUS=$((git status) 2>&1)
echo $STATUS
EOSSH
}
ez_ssh_gitpull two
ez_ssh_gitpull three