A ferramenta de sua escolha é ssh
.
Simplesmente chame ssh user@remoteHost remoteScript
para acionar a chamada no sistema local a partir do servidor unix remoto. Veja man ssh
para mais detalhes.
Se o script ainda não estiver na máquina de destino, você tem duas maneiras de alcançá-lo.
via scp
function remoteCallSCP() { # <remoteAccount> <script> <interpreter> [arguments}
local remoteAccount=${1}
local script=${2}
shift scriptRunner=${3}
shift 3 # script arguments are following
local tmpFile=$(mktemp) # not perfect, but 99% good
scp ${script} ${remoteAccount}:${tmpFile} # executable bit is lost
ssh ${remoteAccount} ${scriptRunner} ${tmpFile}
}
via ssh e stdin
function remoteCallStdIn() { # <remoteAccount> <script>
local remoteAccount=${1}
local script=${2}
ssh -T ${remoteAccount} <${script}
}
A opção -T
desabilita a alocação pseudo-tty. O que pode ajudar a corrigir alguns problemas estranhos.
Os seguintes recursos estão faltando aqui:
- O script deve ser um script de shell compatível com o shell padrão da conta remota.
- Os argumentos da linha de comando não estão funcionando.
Como uma solução alternativa sustentável, você pode pensar em scripts gerados como entrada, que contêm interpretador e argumentos.