Eu não acho que haja uma maneira fácil de fazer o que você queria, ou seja, escrever para separar arquivos em seu host local de um script que está sendo executado em uma máquina remota.
Você pode canalizar facilmente a saída do script para um arquivo local, embora:
ssh host << EOF > output_file
some commands
to be executed
EOF
Com isso, você pode reestruturar o script para que ele execute ssh
várias vezes (isso aumentará a sobrecarga de ssh
, mas você poderá reduzir a maior parte dele usando ControlPersist
no arquivo ssh
config) .
Então, você vai acabar com algo assim (pseudo-bash):
echo "get the output of var script" | ssh host > var_value
if var read from the file is more than zero; then
echo "the thing you want" | ssh host >> /find.txt
else
echo "the other thing you want" | ssh host >> /agentnotthere.txt
fi
Isso deve se adequar ao seu caso de uso bem:)
Meus dois centavos sobre o script em si:
- Ansible ou uma das outras ferramentas de gerenciamento de configuração é provavelmente mais adequado para essa tarefa em vez de escrever scripts bash
- O uso de senhas SSH em vez de chave auth é ruim do ponto de vista de segurança. Mas eu estive em situações em que é impossível implementar isso por causa da política da empresa / material embutido antigo que não suporta isso / etc.
- Em vez de usar o antigo boilerplate
ps aux | grep -v grep | grep something
, você pode usarpgrep
epkill
. Eles estão no padrãocoreutils
, então, a menos que você use sistemas realmente antigos, eles devem estar disponíveis neles