自定义shell函数提升工作效率

平时经常需要进行 DNS 查询,比如查询某个域名的解析是否是在我们这边,但是客户往往丢过来的都是以http://开头的连接,而我使用 dig 查询的时候 是不可以直接加这样进行查询的

正常的查询

➜  wwwroot dig www.baidu.com

; <<>> DiG 9.8.3-P1 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50637
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.baidu.com.            IN    A

;; ANSWER SECTION:
www.baidu.com.        295    IN    CNAME    www.a.shifen.com.
www.a.shifen.com.    295    IN    A    180.97.33.107
www.a.shifen.com.    295    IN    A    180.97.33.108

;; Query time: 75 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Fri Jun 23 08:23:16 2017
;; MSG SIZE  rcvd: 90

那么我们可以通过自定义shell 函数的方式来进行一些优化

jx () {
 echo $1 | awk -F'[/:]' '{print $4}' | xargs dig
}

将上面的内容放在你的家目录的.zshrc中,因为我用的是 zsh,如过你是 bash,就是 bashrc。然后添加后记得让它立即生效

$source ~/.zshrc

然后就可以通过jx http://xxxxx.com去进行解析了

➜  wwwroot jx http://awen.me

; <<>> DiG 9.8.3-P1 <<>> awen.me
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13337
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;awen.me.            IN    A

;; ANSWER SECTION:
awen.me.        125    IN    CNAME    awenblog.b0.aicdn.com.
awenblog.b0.aicdn.com.    125    IN    CNAME    nm.ctn.aicdn.com.
nm.ctn.aicdn.com.    125    IN    A    58.222.18.24

;; Query time: 71 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Fri Jun 23 08:26:24 2017
;; MSG SIZE  rcvd: 97

将base64字符串解码

de () {
  echo "$1" | base64 -D;
}

将字符串编码成 base64

en () {
  echo -n "$1" | base64;
}

获取 ip 归属地

需要安装 httpie

ip () {
  http http://freeapi.ipip.net/$1
}

测试端口是否是通的

p () {
  nc -zv $1 $2
}

10 进制时间转成可读时间

d () {
  date -r $1
}

16 进制转成 10 进制

10j () {
  echo $((0x$1))
}

解析带 http 开头的 url

jx () {
 echo $1 | awk -F'[/:]' '{print $4}' | xargs dig
}

MD5 字符串

m5 () {
    md5 -s $1
}

生成 hmac sha1 加密算法

sha1 (){
  echo -n $1 | openssl sha1 -hmac $2
}

查询网址备案

ba (){
 curl -X GET http://www.sojson.com/api/beian/$1
 }