Há algumas coisas acontecendo aqui, mas acho que, no final das contas, o CLish ou o SSH está retornando um código de saída que está bagunçando meu fluxo de trabalho.
Estou tentando conectar-me a uma máquina remota (shell CLish) usando sshpass. O script que está sendo executado está saindo com "exit 0" (e funciona quando eu o chamo diretamente na minha máquina local), mas o código de saída retornado ao shell local é "255". Sim, confuso, eu sei, mas talvez um exemplo ajude. Acho que reduzi meu problema a um exemplo simples.
Conecte-se ao servidor que está executando o CLish e solte-o no bash shell em um único comando da máquina local para o servidor:
me@local$ sshpass -p 'password' ssh -t [email protected] 'shell'
user@server:~$ exit 0
exit
Connection to 172.16.5.4 closed.
De volta à minha máquina, verifique o código de saída:
me@local$ echo $?
255
Descarte manualmente para o shell na máquina remota com sshpass
e CLish:
me@local$ sshpass -p 'password' ssh [email protected]
CLishPrompt> shell
me@server$ exit
exit
CLishPrompt> exit
Connection to 172.16.5.4 closed.
Verifique o código de saída na minha máquina:
me@local$ echo $?
0
Eu realmente preciso emitir o comando 'shell' na mesma chamada sshpass como no primeiro exemplo, porque estou usando o redirecionamento para gravar um script no sistema de arquivos do servidor e executá-lo (tudo em uma única chamada). Gostaria que retornasse um código de saída "0", como mostra o segundo exemplo. Não consegui encontrar uma solução alternativa para esse problema. A razão pela qual eu preciso do código de saída "0" é porque esse script está retornando suas descobertas em uma "compilação" do Jenkins-CI e não sei como dizer ao Jenkins-CI para aceitar um código de saída de 255. Se isso fosse bash, então eu poderia verificar o código de saída e continuar na próxima parte do meu script.
Eu preciso obter o ssh para retornar "0" ou dizer ao Jenkins que "255" está correto nesta instância. Você sabe o que está acontecendo aqui ou tem alguma sugestão?
Tags ssh bash shell-script exit