Estou executando o seguinte comando:
[user@server ~]$ /usr/sbin/ntpdate -d IPREMOVEDFORSECURITY | egrep 'transmit timestamp' | tail -1 | awk '{print $4, $5, $6, $7, $8}'
host found : HOSTREMOVEDFORSECURITY
Tue, Feb 15 2011 12:38:38.321
Portanto, o problema é que sempre recebo a linha "host found:", independentemente do tipo de redirecionamento que eu uso. Eu tentei o seguinte:
0>/dev/null
1>/dev/null
2>/dev/null
2>&1
2>&/dev/null
E todas as outras variações em que posso pensar, ou consegui encontrar online. Tudo o que preciso e quero que seja retornado é a segunda linha (timestamp) dessa saída de comando. Eu não entendo porque eu não consigo afetar a linha "host found:"?!?!
Estou executando esses comandos pelo perl, mas vejo o mesmo comportamento ao executá-los diretamente no bash. Eu preciso suprimir esse host: linha porque no perl, eu estou executando o comando usando backticks para atribuir a saída a uma variável e saída de uma resposta limpa com base em algumas outras condicionais. Não importa o que, essa linha de host mostra e confunde a saída do meu script, embora isso não afete o que realmente está atribuído à variável.
Minha suposição aqui é que essa linha não está usando os encadeamentos STDIN, STDOUT, STDERR normais, mas não consigo localizar nenhuma informação específica em um método de saída 4. Todos os sites que encontrei falam apenas sobre esses três.
Se alguém tiver a resposta para isso, por favor, por favor, por favor me avise!
PS: este não é o único comando que mostra esse comportamento, o chkconfig e alguns outros também fazem isso, e eu realmente gostaria de descobrir como suprimir essa saída desnecessária.