使用默认选项dig
在注释中显示 DNS 查询的返回状态;; ->>HEADER<<- ... status: NXDOMAIN
:
ubuntu:~$ dig hosted-by.myinternetservices.com.
; <<>> DiG 9.11.3-1ubuntu1.2-Ubuntu <<>> hosted-by.myinternetservices.com.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 63671
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;hosted-by.myinternetservices.com. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Oct 17 10:15:02 CEST 2018
;; MSG SIZE rcvd: 61
但很多时候我希望得到更短的输出,dig
并且我使用以下选项+noall
来实现这一点:
ubuntu:~$ dig +noall +answer www.seznam.cz.
www.seznam.cz. 266 IN A 77.75.77.39
ubuntu:~$ dig +noall +short www.seznam.cz.
77.75.77.39
我还需要查看没有答案的情况的状态,但是当我使用时无法获取状态+noall
。有没有简单的方法来显示状态?
答案1
有,但是它会使输出不够简洁。响应代码仅显示+comments
为我所知。
$ dig +noall +comments +answer example.com
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7367
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; ANSWER SECTION:
example.com. 58368 IN A 93.184.216.34
进一步压缩的唯一方法是对上述输出执行自己的文本转换。如果您发现自己需要频繁处理 DNS 响应的各个字段,那么最好使用您首选语言的 DNS 客户端库编写自定义脚本。
答案2
我希望 dig 实现 +exit 并使用适当的非零退出代码来指示失败情况。
我能做的最接近的就是使用 grep 来调整退出代码。
例如
挖掘 +short milliondollarunicorn.com | grep -e '.*' -e '^$' || echo 'none'