有没有办法从Bash回复仅服务器ip地址?我在Linux / Debian6上。
我的意图是在“/ etc / hosts”中为我在服务器中注册的每个新域写入domain domain IP对。
由于这个bash脚本将被公开使用,我试图找到一种通过cli获取此信息的方法。
结论:
这是最终的代码,基于我的朋友帮助我的线索:
newhost() {
DMN=$1
X=`ifconfig | grep Bcast`
Y=`echo "${X#*:}"`
DNS=`echo "${Y%\ B*}"` # server DNS(207.112.37.222)
H='/etc/hosts' #hostfile
PAIR="$DNS\t$DMN"
if grep -i --silent "$DMN" "$H"; then
echo -e "$DMN already exists in $H"
else
bash <<EOF
echo -e "$PAIR" >> "$H"
EOF
echo -e "$PAIR added to $H"
fi
}
顺便说一句,一些已经很聪明的家伙投票决定关闭这个问题,这不是很有趣吗?
感谢。
答案 0 :(得分:6)
使用:
ifconfig
- 您的IP将在inet addr:
1.1.1.1
之后root@server [~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0A:E4:89:0B:97
inet addr:1.1.1.1 Bcast:1.1.1.63 Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1/or modify
RX packets:14804377317 errors:0 dropped:0 overruns:0 frame:0
TX packets:11766937374 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13799286299902 (12.5 TiB) TX bytes:4891709752100 (4.4 TiB)
Interrupt:169 Memory:fa000000-fa012800 will be useful,
示例输出:
{{1}}
http://www.debianadmin.com/network-interface-configuration-using-ifconfig.html
答案 1 :(得分:2)
ip -4 a l dev $DEVICE | grep inet | awk '{ print $2 }'
将$ DEVICE替换为设备名称。在大多数情况下eth0
应该是正确的