获取内网与出口的 ip 地址

本文最后更新于:3 年前

获取内网与出口的 ip 地址

内网 ip

  1. 获取到的 ip 可能会有多个(比如 127.0.0.1 等等),结果用空格隔开
1
ifconfig | grep -A 1 "inet" | grep netmask | cut -d " " -f 2 | tr "\n" " "`

获取到的 ip 只有一个(不需要联网)

1
python -c "import socket;print(socket.gethostbyname(socket.gethostname()))"

获取到的 ip 只有一个(需要联网)

1
python -c "import socket;print([(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])"

通常 2 与 3 结合使用,利用 cmd1||cmd2 执行,即:执行 cmd1 失败时,执行 cmd2

1
python -c "import socket;print([(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])"||python -c "import socket;print(socket.gethostbyname(socket.gethostname()))"

出口 ip

当 {query} 为空时,就是自己的 ip,不为空时,则查询指定 ip/域名 的信息:

1
curl -s https://ip.cn/index.php?ip={query}

update in: 2019-06-07 09:55:58

以上接口似乎失效了,换一个:

1
curl -L tool.lu/ip


来呀快活呀