2017-11-07 10 views
0

異なるクラウドプロバイダによって提供されているdebianインスタンスで実行するときに、少し違った動作をするシェルスクリプトが必要です。シェルスクリプトがGoogle Cloud Compute Engineのインスタンスで実行されているかどうかを判断する最も良い方法は何ですか?

スクリプトを使って、EC2上で実行されている場合、私は判断することができます。それが「EC2」を返します

head -c 3 /sys/hypervisor/uuid 

Google Cloud Compute Engineインスタンスでスクリプトが実行されているかどうかを知るために使用できるのと同じことは何ですか?

答えて

0

Google Compute Engineのインスタンス内でスクリプトが実行されているかどうかを確認する方法はいくつかあります。

まず、スクリプトがGCEインスタンスからメタデータサーバーに照会すると、応答には「Metadata-Flavor: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/ 

また、あなたはGCE特定の文字列を検索することができます/ procの/ MEMにDMI/SMBIOS情報にアクセスするためのdmidecodeのツールを使用することができます。例えば

、次のコマンドは、GCEインスタンスから実行された場合:

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

これはあなたのコマンドはGCEインスタンスから実行されていることを確認なり、次の出力を生成します:

Google Compute Engine 
関連する問題