Dns
如何將參數附加到正在執行的命令 xargs?(例如主機命令)
我正在編寫一個 dns 工具並需要“| xargs host”,這可以正常工作,但是 host 命令正在對 /etc/resolv.conf 中配置的 dns 伺服器進行查找。
我正在執行一些測試並閱讀了 xargs 的手冊頁,但無法弄清楚如何使用 host + 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 和 host。
replace-str
使用-I
to 選項指定 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 .