【问题标题】:How to get the IP address of a server using bash如何使用 bash 获取服务器的 IP 地址
【发布时间】:2012-10-08 19:58:29
【问题描述】:

目标: 从服务器中提取 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

【问题讨论】:

  • 正在使用什么VPS软件? Xen、Virtuozzo 还是其他?
  • 这个是OpenVZ。但最好能够检查所有这些。对于 ifconfig,不是所有 VPS 都遵循相同的 venet:0:0 吗?
  • 我相信是的。您可以查看我的答案,它会回答您的问题并提供一个脚本,该脚本会根据要求返回 IP 地址。

标签: linux bash shell awk grep


【解决方案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;

希望这会有所帮助。

感谢jwpat7 提供比 grep、cut、awk 更简洁的 awk 命令。

【讨论】:

    【解决方案2】:

    有关如何确定要查看的界面,请参阅先前的答案。下面显示了如何用单个 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}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2014-05-31
      • 2018-02-23
      相关资源
      最近更新 更多