it-swarm.cn

用于获取IP地址的Shell命令?

是否有bash命令来查找Ubuntu盒的IP地址?我需要找到IP地址,以便以后可以通过SSH进入计算机。

25
opierce

/sbin/ifconfig -a

32
mpbloch

您可以使用:

/bin/ip addr
26
Robert Swisher

如果您正在使用内部地址,请检查

curl http://myip.dnsomatic.com

在Unix shell上可能是一个好主意。
或者,只需将该URL插入浏览器即可。


如果您从“ ifconfig -a”的结果,
ifconfig给出了您的内部地址-可能无法从外部使用。


即使一切正常,您也可以安装防火墙,以禁止传入的ssh连接。
这时您应该从计算机上的浏览器尝试关注的端口,

http://www.canyouseeme.org/

这将通过以下方式确认连接,

  • 外部IP地址(在该页面上显示给您)
  • NAT,端口转发
  • 防火墙
19
nik

/bin/hostname -i

19
James
13
chickeninabiscuit
/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'

如果您需要内部地址,请在ifconfig之后附加界面,例如.

 /sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
9
Johan

如果您位于NAT之后,并且需要公共IP,请使用以下命令:

wget -q -O-checkip.dyndns.org | sed -e's /.当前IP地址://'-e's /<.$ //'

摘自: http://www.go2linux.org/what-is-my-public-ip-address-with-linux

6
JakeRobinson

如果您有多个接口,则可以使用它来指定要使用哪个IP。如果要接口“ eth0”的IPV4地址:

ip addr show dev eth0 | grep "inet " | awk '{ print $2 }' 

如果要接口“ eth0”的IPV6地址:

ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }' 

如果要在笔记本电脑的两个常用接口wlan0和eth0之间搜索IP:

CURRENT_IP=''
for INTERFACE in wlan0 eth0; do
    if [ -z $CURRENT_IP ]; then
        CURRENT_IP=$(ip addr show dev $INTERFACE | grep "inet " | awk '{ print $2 }')
    fi
done
4
LoreLLo

如果需要找出路由器的IP地址,可以运行此命令。

挖+ short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

如果您将dns服务器使用OpenDNS,则可以将其缩短为:

挖+短myip.opendns.com

您也可以使用此命令。

卷曲http://myip.dnsomatic.com
3
Brad Gilbert

只需卷曲 page

$ curl wtfismyip.com/text

3
mansi
LOCAL_IP=`/bin/hostname -I | sed 's/ //g'`
2
Mohammed Saqib Rajput

这是一条同样适用于Linux和OS X的行,它将返回非本地的第一个地址:

ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'

发送积分到 https://stackoverflow.com/a/13322549/99834

2
sorin

最简单的方法可能是

ifconfig eth0

假设机器在默认的有线接口上有一个IP地址-您可能需要

ifconfig wlan0

如果在WiFi上。

1
David North
ip address show scope link

它将向您显示居住的IP地址-具有链接-接口。但这不是bash命令。 Bash根本不了解IP和网络。

1
Saabi

我了解的是您想连接具有动态IP的远程ubuntu机器。前往dyndns.org网站并开设一个免费帐户。然后,在远程计算机上,您需要安装动态IP工具。

Sudo aptitude install dyndns-client

所以你可以通过ssh远程机器

ssh [email protected]

因此,配置后,您将不再需要远程计算机的IP地址。

1
rainman

这是我正在使用的:

LC_ALL=C /sbin/ifconfig | awk '
    /inet addr/ {
        gsub("addr:","");
        if(($2!="127.0.0.1") && ($2!="0.0.0.0") && ($2!=""))
            { print $2 };
    }'
1
jlliagre

如果只需要给定接口的单个​​IP,则可以执行以下操作:

ifconfig eth0 | grep "inet " | awk '{gsub("addr:","",$2);  print $2 }' 
1
DmitrySemenov

如果要查找 盒子的公共IP地址 ,则可以使用以下命令:

  • _Dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \"_

您可以使用 Dig(1) 选项(例如_-4_或_-6_)来专门查找IPv4或IPv6地址。 Google会在TXT类型的记录中提供答案,当由Dig提出时会在其周围加上引号;如果您想随后将变量与traceroute等实用程序一起使用,则必须使用 tr(1) 之类的东西来删除引号。

其他选项包括_whoami.akamai.net_和_myip.opendns.com_,它们分别回答AAAAA记录(而不是上面示例中的TXT),因此,它们不需要删除引号:

  • _Dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short_

  • _Dig -4 @resolver1.opendns.com -t any myip.opendns.com +short_

  • _Dig -6 @resolver1.opendns.com -t any myip.opendns.com +short_

这是一个示例脚本,该脚本使用上述所有选项来设置变量:

_#!/bin/sh
IPANY="$(Dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv4="$(Dig -4 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv6="$(Dig -6 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
AKAMv4="$(Dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short)"
CSCOv4="$(Dig -4 @resolver1.opendns.com -t a myip.opendns.com +short)"
CSCOv6="$(Dig -6 @resolver1.opendns.com -t aaaa myip.opendns.com +short)"
printf '$GOOG:\t%s\t%s\t%s\n' "${IPANY}" "${GOOGv4}" "${GOOGv6}"
printf '$AKAM:\t%s\n$CSCO:\t%s\t%s\n' "${AKAMv4}" "${CSCOv4}" "${CSCOv6}"
_

如果要查找私有IP地址,或者要为分配给该框的所有IP地址中的一组寻找IP地址,则可以使用 ifconfig 的某种组合(在BSD和GNU/Linux上) ,_ip addr_(在GNU/Linux上), hostname (在GNU/Linux上的选项_-i_和_-I_)和 netstat 以查看发生了什么。

0
cnst
0
Peter Krumins