実行中のxargsコマンドに引数を追加するには? (ホストコマンドを例にしてみましょう。)

実行中のxargsコマンドに引数を追加するには? (ホストコマンドを例にしてみましょう。)

私はDNSツールを作成しており、"|xargsホスト"が必要です。これはうまくいきますが、ホストコマンドは/etc/resolv.confで設定されたDNSサーバーを探しています。

私はいくつかのテストを実行し、xargsのマニュアルページを読んでいますが、ホスト+ xargsを使用してDNSサーバーを指定する方法はわかりません。

前任者。

printf "google.com\nyahoo.com\nbing.com\n" > hosts.txt
cat hosts.txt | xargs -n1 host

その後、3つのドメインを照会して出力しますが、照会を実行するDNSサーバーは、/etc/resolv.confに構成されているサーバーです。

ホストを使用してDNSサーバーを指定するには、通常、コマンドの最後にサーバーを追加します。

「ホストされたgoogle.com 8.8.8.8」

私は次のようなものを探しています:

モック:

server_to_query=8.8.8.8 ; cat hosts.txt | xargs -n1 host [xargs input] $server_to_query

しかし、現在の状況は次のとおりです。

server_to_query=8.8.8.8 ; cat hosts.txt | xargs -n1 host $server_to_query [xargs input]

$server_to_queryが[xargs input]について探していることがわかりました。

xargsでできない場合は、forループを使用するかdigを使用できますが、xargsとホストを使用する方が良いでしょう。

ベストアンサー1

replace-str-Iオプションを使用してaを指定するxargsと、引数を最後に置くのではなく、コマンドのどこにでも置き換えられます。

$ echo -e "google.com\nfarrellit.net\nexample.com" | xargs -I % -n 1 host % 8.8.8.8

bash/osxで完璧に動作します。

Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

google.com has address 172.217.9.46
google.com has IPv6 address 2607:f8b0:4009:802::200e
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

farrellit.net has address 99.84.254.112
farrellit.net has address 99.84.254.4
farrellit.net has address 99.84.254.33
farrellit.net has address 99.84.254.62
farrellit.net mail is handled by 10 mail3.farrellit.net.
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0 .

おすすめ記事