使用xargs SSH到服务器

我有一个很容易的问题,我想在这里解决。 我经常在域上运行(主机)命令,获取他们的IP,然后(主机)再次在这些IP上获得他们的PTR,然后我SSH到该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 

够简单吧? 这样做一遍又一遍地很乏味,所以我想通过自动化来加速Linux:

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

我遇到的问题是当我通过xargs调用ssh时,我得到SSH到远程服务器,但与错误[tcgetattr:无效的参数]。 我坐在远程服务器的shell中,但是当我尝试运行任何命令时,它只是挂起,最终我不得不Ctrl-C来打破它。

如果我不抓住(ssh -tt),那么我得到一个[伪terminal将不会分配,因为stdin不是terminal]错误。 这似乎是这样一个简单的问题,所以我希望有人更熟悉ssh通过xargs可以让我知道,如果这是可能的。

如果你使用的是一个支持反引号或$()风格的命令replace的 shell(大部分是shell),那么你可以完全避免使用xargs,像这样:

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

(我添加了-t标志到host命令,以确保它们只发出1行输出。)