ここで解決しようとしている非常に簡単な問題があります。私は常にドメインで(ホスト)コマンドを実行してIPを取得し、次にそれらのIPで(ホスト)を再度実行してPTRを取得し、PTRで表されるサーバーにSSHで接続しています。
[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:無効な引数]が発生することです。私はリモートサーバーのシェルに座っていますが、コマンドを実行しようとするとハングし、最終的にはCtrl-Cを押してコマンドを終了する必要があります。
(ssh -tt)をタックしないと、[stdinは端末ではないため、疑似端末は割り当てられません]エラーが発生します。これは単純な問題のように思われるので、xargsを介したsshに精通している誰かが、それが可能かどうかを知らせてくれることを願っています。
Backticks-または$()
-style コマンド置換 をサポートするシェルを使用している場合(ほとんどのシェルはサポートします)、あなたの場合、このようにxargsを完全に使用することを避けることができます:
ssh $(Host -t PTR $(Host -t A DomainIWant.com | awk '{print $4}') | awk '{print $5}')
(-t
フラグをHost
コマンドに追加して、1行の出力のみを出力するようにしました。)