Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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
访问Linux虚拟机内部的Azure公共IP_Linux_Azure_Ip_Virtual Machine - Fatal编程技术网

访问Linux虚拟机内部的Azure公共IP

访问Linux虚拟机内部的Azure公共IP,linux,azure,ip,virtual-machine,Linux,Azure,Ip,Virtual Machine,我已经在Azure上创建了一个Ubuntu16.04LTS虚拟机,我需要访问它面向公众的IP,以便配置我试图在服务器上运行的docker容器。但是,当我从VM中的终端执行以下命令时: ip addr show 我只取回私有的本地IP,而不是面向公众的IP。我需要采取什么步骤从VM的终端访问公共IP 我希望能够编写获取公共IP的脚本的原因是,我们正在VM上运行一个docker容器(我们正在创建多个VM,这是我们在JMeter中开发的负载测试框架的一部分),如果我们能够在服务器启动脚本中编写获取I

我已经在Azure上创建了一个Ubuntu16.04LTS虚拟机,我需要访问它面向公众的IP,以便配置我试图在服务器上运行的docker容器。但是,当我从VM中的终端执行以下命令时:

ip addr show
我只取回私有的本地IP,而不是面向公众的IP。我需要采取什么步骤从VM的终端访问公共IP


我希望能够编写获取公共IP的脚本的原因是,我们正在VM上运行一个docker容器(我们正在创建多个VM,这是我们在JMeter中开发的负载测试框架的一部分),如果我们能够在服务器启动脚本中编写获取IP的脚本并将其传递给docker容器,然后,我们将能够自动启动服务器,以便当我们从Azure门户按start server时,jmeter服务器可以使用正确的IP正常运行。如果不能从bash脚本访问公共IP,我们将不得不手动SSH到每台机器中,运行docker并将公共IP作为参数传递给docker以启动每个jmeter服务器,这将非常耗时

在AWS和Azure中都有这个虚拟机元数据东西:

但目前该提要返回的信息很少:

UbuntuInJapan:~$curl-shttp://169.254.169.254/metadata/latest/InstanceInfo
{“ID”:“u ubuntunijapan”,“UD”:“0”,“FD”:“0”}
…只是升级和故障域,这对您的努力是无用的

对于公共IP,我通常会这样做:

#/bin/bash
公共_IP=$(curl-shttp://checkip.amazonaws.com ||printf“0.0.0.0”)
#然后,要么在变量中获取公共IP地址,要么获取0.0.0.0
#这意味着您无法拨打亚马逊的电话,或者亚马逊正在遭受DDoS攻击。
#阿米丽特?
#取消对echo的注释(也称为调试模式)
echo$PUBLIC\u IP
你可以链接多个什么是我的ip?服务,以提高您的SLA。 i、 e:

#第一个有效的人获胜。
#您可以通过正则表达式检查输出来改进这一点。
#
#比如:
#
#如果[$PUBLIC_IP=~[:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}\/]
#那好。有效的IPv4。继续。”
#否则就不好了。停下来。”
#fi
日本:约$curl-shttp://checkip.amazonaws.FAILS ||curl-shttp://canihazip.com/s
13.78.92.21
如果您与某些服务对话IPv6,它们将返回IPv6,请确保将地址族显式传递给
curl

$curl-4http://l2.io/ip
13.78.92.21
$curl-6http://l2.io/ip
2a02:2f0b:4xxx:fxxx:4xxx:xxxx:xxxx:1072

以下作品供将来参考:

curl -s -H Metadata:true \
http://169.254.169.254/metadata/instance?api-version=2017-04-02 \
| jq -r .network.interface[].ipv4.ipAddress[].publicIpAddress

你需要点击一些外部url来告诉你连接来自哪个IP,例如,点击一个“what is my IP”站点。也许azure有一个Web服务,你可以点击它来告诉你,而不需要“走到外面”。谢谢你的建议!我花了一两个小时浏览了Azure的文档,但他们似乎没有这样的内容。根据您的建议,我可以找到“”,然后运行“curl ifconfig.me”可以获得我的公共ip。谢谢
curl ifconfig.co
如果您还需要一个:D。