Você poderia simplesmente executar seus comandos em uma tela ou sessão tmux na VM? Isso permitiria várias etapas para conectar / enviar comandos para a mesma sessão
O que gostaríamos de fazer:
Temos máquinas virtuais de curta duração para executar scripts. As máquinas virtuais são usadas por meio do SSH para realizar "builds" (sequência de scripts) e descartadas quando todos os scripts são concluídos. Cada script é executado através de uma nova conexão / sessão SSH.
Isso funciona muito bem para quase todos os cenários que temos, exceto dois casos de uso principais:
Esses dois problemas poderiam ser resolvidos se pudéssemos de alguma forma iniciar um agente dentro da máquina virtual e depois poderíamos nos conectar a esse daemon / agente específico, enviar os comandos que queremos executar para o daemon / agent e ter o daemon / agent executá-lo. Um requisito é ter um fluxo da saída dos scripts / comandos reais que são executados dentro da máquina virtual.
O que fazemos agora é executar os scripts / comandos através de um simples comando SSH como ssh ssh-params 'bash -l -c "echo \"hello world\""'
. É claro que este é um exemplo seriamente simplificado, mas está próximo do que temos agora, e com isso podemos obter a saída do comando como um fluxo para cumprir o requisito de registro e adicionalmente podemos obter o código de saída do comando .
Então, o que gostaríamos de fazer é algo semelhante em termos que o comando é especificado "de fora" da máquina virtual, mas executado dentro da máquina virtual e da saída do comando está disponível para o processo "externo" (chamador) como um fluxo, não apenas após o script terminar, assim como o código de saída do comando pode ser recuperado facilmente pelo processo "externo" .
Em termos de ferramentas, somos bastante abertos (não precisamos depender do SSH, é assim que funciona no momento), mas a ferramenta deve estar disponível para o OS X e, se possível, para o Linux (embora neste caso O caso OS X é a prioridade, já que ambos os casos de uso problemáticos estão relacionados ao OS X).
TL; DR; gostaríamos de uma ferramenta que pudesse ser usada de forma semelhante ao comando SSH mencionado acima mas que pudesse se conectar a um agente / daemon que já estivesse sendo executado no remoto (máquina virtual) end, e a saída gerada pelo "comando remoto" especificado deve estar disponível para o processo do chamador como um fluxo, não apenas no final do comando . Além de coletar as saídas do comando remoto, também precisamos obter o código de saída .
Palavras finais : finalmente, decidimos criar nossa própria solução porque não conseguíamos descobrir uma maneira mais fácil. Você pode encontrá-lo no GitHub: link - ele suporta todas as coisas necessárias que eu descrevi e além disso tem a variável de ambiente de comando manipulação de suporte (para definir variáveis de ambiente apenas para esse comando remoto).
Você poderia simplesmente executar seus comandos em uma tela ou sessão tmux na VM? Isso permitiria várias etapas para conectar / enviar comandos para a mesma sessão