Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
公共ip地址的Linux命令_Linux_Shell_Terminal_Command - Fatal编程技术网

公共ip地址的Linux命令

公共ip地址的Linux命令,linux,shell,terminal,command,Linux,Shell,Terminal,Command,我想要命令获取Linux机器(amazon)外部/公共IP地址 我尝试了hostname-I和其他来自博客和stackoverflow之类的命令 ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' 还有更多。但是他们都给了我内部IP地址 然后我找到了一些提供API的网站 示例:curlhttp://ipecho.net/plain; 回声 但我不想依赖第三方网站服务。那么,是否有任何命

我想要命令获取Linux机器(amazon)
外部
/
公共
IP地址

我尝试了
hostname-I
和其他来自博客和stackoverflow之类的命令

ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
还有更多。但是他们都给了我
内部
IP地址

然后我找到了一些提供API的网站

示例:
curlhttp://ipecho.net/plain; 回声


但我不想依赖第三方网站服务。那么,是否有任何命令行工具可用于获取
外部
IP地址?

它可能在amazon上不起作用,因为您可能正在使用NAT或其他工具让服务器访问世界其他地方(您也可以通过ssh访问)。如果您无法通过ssh连接到ifconfig中列出的ip,那么您可能处于不同的网络中,或者没有启用ssh

它可能在amazon上不起作用,因为您可能正在使用NAT或其他东西让服务器访问世界其他地方(您也可以通过ssh访问)。如果您无法通过ssh连接到ifconfig中列出的ip,那么您可能处于不同的网络中,或者没有启用ssh

更清洁的输出

ifconfig eth0 | awk '/inet / { print $2 }' | sed 's/addr://'
更清洁的产品

ifconfig eth0 | awk '/inet / { print $2 }' | sed 's/addr://'

你可以使用这个脚本

# !/bin/bash 
#
echo 'Your external IP is: '
curl -4 icanhazip.com
但这依赖于第三方,尽管这是一个可靠的第三方。 我不知道您是否可以在不询问某人/某个站点(即第三方)的情况下获得外部IP,但我知道什么

您也可以只运行:

curl -4 icanhazip.com

这与命令的作用相同,
-4
用于获取Ipv4中的输出

您可以使用此脚本

# !/bin/bash 
#
echo 'Your external IP is: '
curl -4 icanhazip.com
但这依赖于第三方,尽管这是一个可靠的第三方。 我不知道您是否可以在不询问某人/某个站点(即第三方)的情况下获得外部IP,但我知道什么

您也可以只运行:

curl -4 icanhazip.com

这与命令的作用相同,
-4
用于获取Ipv4中的输出

您可以使用此命令获取公用ip和专用ip(第二行是专用ip;第三行是公用ip)


您可以使用此命令获取公用ip和专用ip(第二行是专用ip;第三行是公用ip)


最简单的方法是:
curl ifconfig.me

最简单的方法是:
curl ifconfig.me

我建议您使用命令
external ip
sudo-apt-get-install-miniupnpc
),因为它(我几乎可以肯定)使用upnp协议来询问路由器,而不是询问外部网站,所以速度应该更快,但是当然路由器必须启用upnp。

我建议您使用命令
外部ip
sudo apt get install miniupnpc
),因为它(我几乎可以肯定)使用upnp协议来询问路由器,而不是询问外部网站,所以速度应该更快,但当然路由器必须启用upnp。

这是我能做的最好的(仅依赖于我的ISP):

或者,同一行上的功能相同:

ISP=`traceroute -M 2 -m 2 -n -q 1 8.8.8.8 | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'` | ping -R -c 1 -t 1 -s 1 -n $ISP | grep RR | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' 
要将其保存到临时隐藏文件,请将
.extIP
添加到最后一行的末尾,然后
cat.extIP
查看它

如果您的ISP地址从未更改(老实说,我不确定它是否会更改),那么您可以获取它一次,然后用它替换第二行中的$ISP

这已经在mac上进行了测试,取得了巨大的成功。 到目前为止,我发现linux上唯一的调整是traceroute“-M”标志可能需要改为“-f” 它严重依赖ping的“-R”标志,该标志告诉它发回“记录路由”信息,而主机并不总是支持该信息。但是值得一试

在不依赖任何外部服务器的情况下完成此操作的唯一其他方法是从卷曲调制解调器的状态页获取它。。。我用我们的frontier DSL调制解调器成功地做到了这一点,但它脏、慢、不可靠,并且需要硬编码调制解调器的密码。 以下是这方面的“过程”:

curl http://[user]:[password]@[modem's LAN address]/[status.html] | grep 'WanIPAddress =' | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
它获取原始html,搜索包含“WanIpAddress=”的任何行(更改为适合调制解调器的结果),然后将这些结果缩小到IPv4样式的地址

希望有帮助

这是我能做的最好的(仅依赖于我的ISP):

或者,同一行上的功能相同:

ISP=`traceroute -M 2 -m 2 -n -q 1 8.8.8.8 | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'` | ping -R -c 1 -t 1 -s 1 -n $ISP | grep RR | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' 
要将其保存到临时隐藏文件,请将
.extIP
添加到最后一行的末尾,然后
cat.extIP
查看它

如果您的ISP地址从未更改(老实说,我不确定它是否会更改),那么您可以获取它一次,然后用它替换第二行中的$ISP

这已经在mac上进行了测试,取得了巨大的成功。 到目前为止,我发现linux上唯一的调整是traceroute“-M”标志可能需要改为“-f” 它严重依赖ping的“-R”标志,该标志告诉它发回“记录路由”信息,而主机并不总是支持该信息。但是值得一试

在不依赖任何外部服务器的情况下完成此操作的唯一其他方法是从卷曲调制解调器的状态页获取它。。。我用我们的frontier DSL调制解调器成功地做到了这一点,但它脏、慢、不可靠,并且需要硬编码调制解调器的密码。 以下是这方面的“过程”:

curl http://[user]:[password]@[modem's LAN address]/[status.html] | grep 'WanIPAddress =' | grep -m 1 -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
它获取原始html,搜索包含“WanIpAddress=”的任何行(更改为适合调制解调器的结果),然后将这些结果缩小到IPv4样式的地址


希望有帮助

正如其他人所建议的,我们必须依赖第三方服务,我觉得使用它不安全。因此,我在以下网站上找到了Amazon API:


如需了解更多详细信息,

正如其他人所建议的,我们必须依赖第三方服务,我觉得使用它不安全。因此,我在以下网站上找到了Amazon API:


有关详细信息,请执行以下操作:

curl https://ipinfo.io/ip

您可以简单地执行以下操作:

curl https://ipinfo.io/ip

超级简单的方法是使用“浏览”工具。您可以使用以下方式在Ubuntu上安装它:

$ sudo apt install glances
然后将其用于:

$ glances
在航站楼的顶部,它很高