SSH duas vezes e execute o comando, escapando de caractere?

1

Consigo obter a saída desejada executando este comando no terminal:

top -bn 1 | grep "^ " | awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); }' | head -n 6

E eu sou capaz de SSH duas vezes e obter o nome do host, executando este terminal:

ssh 192.168.5.209 "ssh 192.168.5.210 exec \"hostname\""

O 209 está funcionando como um portal para que eu possa usar apenas SSH de 209 a 210. Mas o problema é como eu substituo o "hostname" pelo comando top que eu escrevo acima? Existem muitos caracteres especiais.

Eu estou escrevendo um script para executar a partir do PHP btw.

    
por Lim SY 22.12.2016 / 07:57

1 resposta

1

grep, awk e head podem ser mesclados e executados localmente

 ssh 192.168.5.209 "ssh 192.168.5.210 top -bn 1 " |
 awk '/^ / { printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); c++ ; if (c==6) exit ;} 

onde

  • /^ / procura pela linha que começa com um espaço
  • c++ ; if (c==6) exit ; sairá do awk após 6 linhas impressas.
por 22.12.2016 / 10:06