如果我在 Google Compute Engine 实例中,请签入 bash

Check in bash if I am in a Google Compute Engine instance

我想签入 bash 脚本,无论我是在 Google Compute Engine 实例中还是在我的 Linux 笔记本电脑中。我怎样才能区分它们?

请参阅 GCE 文档中的 Detect if a VM is running in Compute Engine

$ curl metadata.google.internal -i
HTTP/1.1 200 OK
Metadata-Flavor: Google
Content-Type: application/text
Date: Tue, 23 Nov 2021 01:27:16 GMT
Server: Metadata Server for VM
Content-Length: 22
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

0.1/
computeMetadata/

您可以使用内部 IP (169.254.169.254) 作为元数据服务器。

文档(link 以上)还提供了使用操作系统工具的替代方法:

sudo dmidecode -s system-product-name | grep "Google Compute Engine"
case $? in
(0) echo On a GCE instance;;
(*) echo Not a GCE instance;;
esac

$ dmesg | grep -q "BIOS Google"
case $? in
(0) echo On a GCE instance;;
(*) echo Not a GCE instance;;
esac

在 dmesg 输出中检查相关字符串如“google”、“virt”或“kvm”也可以提供提示。