确定shell脚本是否在Google Cloud Compute Engine实例上运行的最佳方法是什么?

时间:2017-11-07 10:25:25

标签: shell google-compute-engine

在不同云提供商提供的debian实例上运行时,我需要一个shell脚本,行为略有不同。

我可以使用以下命令确定脚本是否在EC2上运行:

head -c 3 /sys/hypervisor/uuid

将返回" ec2"如果是的话。

我可以使用什么来判断脚本是否在Google Cloud Compute Engine实例上运行?

1 个答案:

答案 0 :(得分:0)

您可以使用几种方法来发现您的脚本是否在Google Compute Engine实例中运行。

首先,如果您的脚本从GCE实例查询元数据服务器,则任何响应都将包含“元数据 - 风味:Google”标题。例如,运行curl metadata.google.internal -i会生成输出,例如:

HTTP/1.1 200 OK Metadata-Flavor: Google 
Content-Type: application/text 
Date: Tue, 07 Nov 2017 16:33:41 GMT 
Server: Metadata Server for VM 
Content-Length: 22 
X-XSS-Protection: 1; mode=block 
X-Frame-Options: SAMEORIGIN 0.1/ computeMetadata/

您还可以使用dmidecode工具访问/ proc / mem中的DMI / SMBIOS信息,这样您就可以搜索特定于GCE的字符串。

例如,如果从GCE实例运行以下命令:

sudo dmidecode -s system-product-name | grep "Google Compute Engine"

这将生成以下输出,这将确认您的命令是从GCE实例执行的:

Google Compute Engine