SSH para servidor com xargs

1

Eu tenho um problema fácil que estou tentando resolver aqui. Estou constantemente executando o comando (host) em domínios, para obter seus IPs, em seguida, (host) novamente nesses IPs para obter seus PTRs, então estou SSH para esse servidor representado no PTR:

[root@box ~]$ host DomainIWant.com
DomainIWant.com has address 123.123.123.123

[root@box ~]$ host 123.123.123.123
123.123.123.123.in-addr.arpa domain name pointer vps2010.DomainIWantHosts.com

[root@box ~]$ ssh vps2010.DomainIWantHosts.com

Simples o suficiente? É tedioso fazer isso repetidas vezes, assim como com tudo o que o Linux quer acelerar, automatizando-o:

[root@box ~]$ host DomainIWant.com | awk '{print $4}' | xargs host | awk '{print $5}' | xargs ssh -tt

O problema que estou tendo é quando eu chamo ssh via xargs, eu recebo SSH no servidor remoto, mas com o erro [tcgetattr: Invalid argument]. Eu estou sentado no shell do servidor remoto, mas quando eu tento executar qualquer comando, ele simplesmente trava e, eventualmente, eu tenho que Ctrl-C para sair dele.

Se eu não marcar o (ssh -tt), então eu recebo um erro [Pseudo-terminal não será alocado porque o stdin não é um terminal]. Isso parece um problema simples, então espero que alguém mais familiarizado com o ssh via xargs possa me informar se é possível.

    
por JacobN 27.11.2010 / 15:44

1 resposta

4

Se você estiver usando um shell que suporte a substituição de comandos de backticks ou $() -style (a maioria das shells faz), então no seu caso, você pode evitar usar o xargs completamente, assim:

ssh $(host -t PTR $(host -t A DomainIWant.com | awk '{print $4}') | awk '{print $5}')

(Adicionei as -t flags aos comandos host , para garantir que eles emitem apenas 1 linha de saída.)

    
por 27.11.2010 / 17:48