如何启用 dig 来显示状态代码?

如何启用 dig 来显示状态代码?

使用默认选项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'

相关内容