Não é possível sair do modo interativo para o comando top de linha

1

Eu tenho um script bash que está no serverA. Este script irá ssh para serverB e executa o comando top de fios, obtém as métricas e as coloca no arquivo (test.txt) no serverA. Abaixo está o comando que estou usando:

ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" | head -5 | grep -w 'Applications' | awk '{print "Pending_apps" "\t" $7}' >> test.txt

Então, aqui, o problema é que, depois que meu script é executado acima do comando, ele entra no modo interativo e só sai quando eu der o comando crtl + c ou encerrar o sinal / comando manualmente.

Existe alguma maneira através da qual após executar o comando acima e redirecionar a saída para test.txt o script deve passar para o próximo comando. Isso é depois de executar o comando acima no prompt de comando, ele deve redirecionar a saída para um arquivo test.txt e, em seguida, deve retornar ao prompt de comando / terminal

    
por MichealMills 14.08.2018 / 08:48

1 resposta

0

Uma sugestão simples seria quebrar o canal quando você tiver o que deseja:

ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" | 
  head -5 | 
  grep -w 'Applications' | 
  awk '{print "Pending_apps" "\t" $7; exit}' >> test.txt

Isso diz ao awk para sair depois de receber a primeira linha de entrada (já que não há condições para o bloco de código).

    
por 14.08.2018 / 13:23