在不同云提供商提供的debian实例上运行时,我需要一个shell脚本,行为略有不同。
我可以使用以下命令确定脚本是否在EC2上运行:
head -c 3 /sys/hypervisor/uuid
将返回" ec2"如果是的话。
我可以使用什么来判断脚本是否在Google Cloud Compute Engine实例上运行?
答案 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