目标: 从服务器中提取IP地址。然而,问题发挥作用,专用和VPS是非常不同的。拉出并检查并打印IP地址的最佳或最理想的方法是什么?
我想我可以用以下内容进行检查?
root@host]# /sbin/ifconfig venet0:0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
IP IS HERE
root@host]# /sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
eth0: error fetching interface information: Device not found
答案 0 :(得分:1)
要获取服务器的IP地址,无论是否为VPS,您都可以执行以下操作:
#!/bin/bash
a="`netstat -i | cut -d' ' -f1 | grep eth0`";
b="`netstat -i | cut -d' ' -f1 | grep venet0:0`";
if [ "$a" == "eth0" ]; then
echo "eth0 found"
ip="`/sbin/ifconfig eth0 | awk -F':| +' '/inet addr/{print $4}'`";
elif [ "$b" == "venet0:0" ]; then
echo "venet found"
ip="`/sbin/ifconfig venet0:0 | awk -F':| +' '/inet addr/{print $4}'`";
fi
echo $ip;
希望这有帮助。
向[{3}}提示,提供比grep,cut,awk更简洁的awk命令。
答案 1 :(得分:1)
请参阅前面的答案,了解如何确定要查看的界面。下面显示了如何使用单个awk替换grep / cut / awk的3进程序列。使用以下任一形式。在第一行中,awk匹配包含inet addr
的任何行,并在分割空白的默认FS字段分隔符后,在冒号上拆分。在第二行中,awk在“:”或一串空格的正则表达式上拆分。
ifconfig eth0 | awk '/inet addr/{split($2,a,":"); print a[2]}'
ifconfig eth0 | awk -F':| +' '/inet addr/{print $4}'