feliz por escrever para você aqui. Fiz muita pesquisa sobre isso e não encontrei uma solução.
O que eu quero fazer é relativamente simples.
Há uma função bash local de advertência no ambiente da minha estação de trabalho.
function caveat(){
echo "function main caveat executing in $HOSTNAME"
function caveat_a(){
echo "function caveat_a executing in $HOSTNAME"
}
function caveat_b(){
echo "function caveat_b executing in $HOSTNAME"
}
}
E eu gostaria de fazer o SSH em um host remoto (em um shell interativo) para fazer algumas tarefas com o preguiçoso do sysadmin. E quando eu precisar executar as funções caveat_a ou caveat_b, eu gostaria de poder chamá-las lá, no host remoto ..
O que minha pesquisa revelou é que é possível declarar uma função local para estar disponível remotamente e depois executá-la diretamente ... e funciona bem para mim.
Mas o que eu preciso é declarar e cair em um shell interativo.
A última tentativa foi incluir um 'bash --login' no final da linha, conforme mostrado abaixo:
username@localhost ~ $ caveat
function main caveat executing in localhost
username@localhost ~ $ caveat_a
function caveat_a executing in localhost
username@localhost ~ $ caveat_b
function caveat_b executing in localhost
username@localhost ~ $
username@localhost ~ $ ssh username@remote_host -t "$(declare -f caveat); caveat; caveat_a; bash --login"
Are you sure you want to continue connecting (yes/no)? yes
username@remote_host's password:
function main caveat executing in remote_host
function caveat_a executing in remote_host
username@remote_host ~ $ #nice, it executed those caveat functions as echoed above
.. desta forma ele interage comigo .. então eu posso executar outros comandos lá .. mas quando eu pressiono 'caveat<TAB><TAB>'
minha advertência ainda não está declarada lá.
Acho que estou perdendo alguma coisa. Agradecemos antecipadamente por toda sua ajuda e respostas.
Se possível, parece melhor usar a solução de baunilha da forma mais simples possível (sem esperar, sem outros binários).
Obrigado