Est*_*spi 4 networking script bash
我想用给定远程主机的 IP 地址设置一个环境变量。这是我到达的解决方案:
export IP=`curl http://network-tools.com/default.asp?host=www.example.com |
grep -oE '<br>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' |
cut -c5-`
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我有几个问题:
尝试类似的东西
export IP=`( dig ${HOSTNAME} A +short | tail -n1; \
dig ${HOSTNAME} AAAA +short | tail -n1 ) \
| head -n1`
Run Code Online (Sandbox Code Playgroud)
这会给你:
如果您不需要 IPv4 或 IPv6 功能(您的问题似乎表明您最感兴趣的是 IPv4 地址),只需删除该dig
命令(A
是 IPv4,AAAA
是 IPv6)。因此,如果您只对 IPv4 地址感兴趣:
export IP=`dig ${HOSTNAME} A +short | tail -n1`
Run Code Online (Sandbox Code Playgroud)
在tail -n1
你得到一个IP地址确保(在的情况下CNAME
,和其他可能的记录类型,dig
输出的第一行引用的规范名称)。通过head -n1
仅返回剩余输出的第一行(在只有一个地址族的情况下是不必要的,因为tail
将只返回一个地址),确保您只获得一个地址。由于 DNS 记录通常以循环方式提供服务,因此无法保证为多地址主机返回哪个确切地址。
我对编写 bash 函数不太熟悉,但是将其转换为函数应该相对容易。
归档时间: |
|
查看次数: |
2501 次 |
最近记录: |