Bash-如何知道我的Linux服务器IP地址?

Bash-如何知道我的Linux服务器IP地址?,bash,ip,command-line-interface,Bash,Ip,Command Line Interface,有没有办法只回显Bash的服务器ip地址?我使用的是Linux/Debian6 我的目的是向“/etc/hosts”写入我在服务器中注册的每个新域的成对域名IP 由于这个bash脚本将开放供公众使用,因此我试图找到一种通过cli获取此信息的方法 结论: 这是最后的代码,基于我的朋友们帮助我的线索: newhost() { DMN=$1 X=`ifconfig | grep Bcast` Y=`echo "${X#*:}"` DNS=`echo "${Y%\ B*

有没有办法只回显Bash的服务器ip地址?我使用的是Linux/Debian6

我的目的是向“/etc/hosts”写入我在服务器中注册的每个新域的成对域名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
}
newhost(){
DMN=1美元
X=`ifconfig | grep Bcast`
Y=`echo“${X}*:}”`
DNS=`echo“${Y%\B*}”`#服务器DNS(207.112.37.222)
H='/etc/hosts'#主机文件
PAIR=“$DNS\t$DMN”
如果grep-i--silent“$DMN”“$H”;那么
echo-e“$DMN已存在于$H中”
其他的
bash“$H”
EOF
echo-e“$PAIR添加到$H”
fi
}
顺便问一下,一些天生就很聪明的家伙投票结束了这个问题,这不是很有趣吗

谢谢

ip -4 a l dev $DEVICE  | grep inet | awk '{ print $2 }'
将$DEVICE替换为设备名称
eth0
在大多数情况下应该是正确的

将$DEVICE替换为设备名称<代码>eth0在大多数情况下应该是正确的

使用:

ifconfig
-在本例中,您的ip将位于
inet addr:
之后
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,
使用:

ifconfig
-在本例中,您的ip将位于
inet addr:
之后
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,


你有更多的信息给我们吗?您是否在需要IP的服务器上?换句话说,您感兴趣的是本地IP吗?一台计算机通常有多个IP(例如环回IP和internet IP)和IPv4或IPv6?服务器在NAT后面吗?你也可以检查/proc/net/tcp,读取“local_address”字段:你有更多信息给我们吗?您是否在需要IP的服务器上?换句话说,您感兴趣的是本地IP吗?一台计算机通常有多个IP(例如环回IP和internet IP)和IPv4或IPv6?服务器是NAT背后的吗?你也可以检查/proc/net/tcp,读取“local_address”字段:问题只是关于ip,而ifconfig是一个旧工具,今天你应该使用
ip
“ifconfig”是“ip”的一个非常合适的答案,伙计![…]大多数网络配置手册仍然将ifconfig和route作为主要的网络配置工具,但众所周知,ifconfig在现代网络环境中的表现不充分。它们应该被弃用,但大多数发行版仍然包含它们。大多数网络配置系统使用ifconfig,因此提供的功能集有限。/etc/net项目旨在支持大多数现代网络技术,因为它不使用ifconfig,允许系统管理员使用所有iproute2功能,包括流量控制。[…]来源:iproute2manifest@pst:“ifconfig只返回本地IP地址”什么???嘿,老兄,不要在不知道你在说什么的情况下发表评论。@Tuga看到IP地址报告了吗?属于本地接口的。请尽量文明一点。问题只是关于ip,而ifconfig是一个老工具,今天你应该使用
ip
“ifconfig”是对“ip”的完美回答,伙计![…]大多数网络配置手册仍然将ifconfig和route作为主要的网络配置工具,但众所周知,ifconfig在现代网络环境中的表现不充分。它们应该被弃用,但大多数发行版仍然包含它们。大多数网络配置系统使用ifconfig,因此提供的功能集有限。/etc/net项目旨在支持大多数现代网络技术,因为它不使用ifconfig,允许系统管理员使用所有iproute2功能,包括流量控制。[…]来源:iproute2manifest@pst:“ifconfig只返回本地IP地址”什么???嘿,老兄,不要在不知道你在说什么的情况下发表评论。@Tuga看到IP地址报告了吗?属于本地接口的。请尽量做到更加文明。ifconfig更具可移植性(几乎所有*nix平台,以及所有Linux发行版),包含更多信息,而且可以说更易于使用。如果您只需要记住一个命令,我会记住“ifconfig”(而不是“ip”)。如果用户不知道设备名称,那么问题是只显示ip。所以我想他知道应该用哪种设备。我提到默认设置为
eth0
。alAnd ifconfig很旧,在许多现代设置中不可用,并且它不是一个命令:
ip地址
ip路由
,它更符合逻辑。根据项目页面,“ifconfig”的上一次更新是2001年。任何其他版本都是特定于发行版的补丁集。如果你需要一个在所有发行版上表现相同的工具,你必须使用
ip
这无疑是一个非常聪明的解决方案:
ip-4a l dev eth0 | grep inet | awk'{print$2}'
我们中的一些人已经超越了旧的grep+awk+管道模式。这里有另一种方法,这是一个更准确的答案,因为它只返回没有子网的IP:
perl-e'for(`IP-4 a l dev eth0`){print$1 if(/inet([.0-9]+)\/')}
ifconfig更具可移植性(几乎所有*nix平台以及所有Linux发行版),具有更多信息,而且可以说更易于使用。如果您只需要记住一个命令,我会记住“ifconfig”(而不是“ip”)。如果用户不知道设备名称,那么问题是只显示ip。所以我想他知道应该用哪种设备。我提到默认设置为
eth0
。alAnd ifconfig很旧,在许多现代设置中不可用,并且它不是一个命令:
ip地址
ip路由
,它更符合逻辑。根据项目页面,“ifconfig”的上一次更新是2001年。任何其他版本都是特定于发行版的补丁集。