Gibt es eine Möglichkeit, über eine Befehlszeilenshell zu wissen, ob ich mich gerade auf einem Google Compute Engine-Computer oder an einem anderen Ort (Entwicklungscomputer) befinde?Wissen, ob ein Computer eine Google Compute Engine-Instanz ist
Antwort
Per der metadata docs:
können Sie leicht erkennen, ob Ihre Anwendungen oder Skripte innerhalb einer Compute Engine-Instanz ausgeführt werden, indem die Metadaten-Server. Wenn Sie eine Anforderung an den Server senden, enthält jede Antwort vom Metadatenserver den Header
Metadata-Flavor: Google
. Sie können nach diesem Header suchen, um zuverlässig zu erkennen, ob Sie in Compute Engine ausgeführt werden.Zum Beispiel gibt die folgende curl-Anforderung einen
Metadata-Flavor: Google
-Header zurück, der angibt, dass die Anforderung innerhalb einer Compute Engine-Instanz erfolgt.[email protected]:~$ curl metadata.google.internal -i HTTP/1.1 200 OK Metadata-Flavor: Google Content-Type: application/text Date: Thu, 10 Apr 2014 19:24:27 GMT Server: Metadata Server for VM Content-Length: 22 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN 0.1/ computeMetadata/
Sie können auch use the dmidecode
utility to probe the virtual hardware, wenn Sie nicht wollen, ein Netzwerk Anruf tätigen:
[email protected]:~$ sudo dmidecode -s bios-vendor | grep Google
Google
Sie können auch einen DNS-Lookup für den Metadaten-Server zu tun, anstatt es tatsächlich aufgerufen wird.
Zum Beispiel tun dig +short metadata.google.internal
innerhalb eine Google Compute Instanz ausgeben würde, so etwas wie dieses:
[[email protected]]# dig +short metadata.google.internal
169.254.169.254
Wenn aber tun Sie den gleichen Befehl (dig +short metadata.google.internal
) in einem Standard-Server, außerhalb von Google Cloud , Sie könnten eine leere Antwort bekommen.
So zu überprüfen alles, was Sie tun müssen (in bash
zum Beispiel) ist:
GMETADATA_ADDR=`dig +short metadata.google.internal`
if [[ "${GMETADATA_ADDR}" == "" ]]; then
echo "I am NOT in a Google VM!"
else
echo "I AM INSIDE a Google VM! Whoohoo!"
fi
- 1. Wissen, ob ein Dienst installiert ist
- 2. Google Compute Engine
- 3. Wie kann ich wissen, ob mein Computer hinter NAT steht?
- 4. Python - Erkennen, ob Remote-Computer eingeschaltet ist
- 5. Wie kann ein Computertyp in Google Compute Engine geändert werden?
- 6. Wie Sie wissen, ob eine PropertyInfo eine Sammlung ist
- 7. Google Compute Engine + Buchse
- 8. Ruht eine Google Compute Engine-Instanz?
- 9. google compute engine tool gcloud ist außergewöhnlich langsam
- 10. Wie kann überprüft werden, ob ein Remote-Computer verfügbar ist?
- 11. Wie kann ich wissen, ob ein TableView leer ist?
- 12. Google Compute Engine - Clone Instanz
- 13. Wie zu wissen, ob ein Android-Gerät in der Nähe einer Adresse ist Google Maps API
- 14. Wie kann man wissen, ob ein Xul-Fenster minimiert ist?
- 15. UiAutomator - Wissen ob ein Objekt an bestimmten Koordinaten vorhanden ist
- 16. C++ - Wissen, ob ein Typ/Klasse verschachtelt ist?
- 17. Google Compute-Maschine HAXM installieren
- 18. Wie kann man wissen, ob eine JTable leer ist?
- 19. FreeBSD auf Google Compute Engine
- 20. wissen, ob ein Punkt an Land oder Wasser ist mit Google Maps api
- 21. Google Compute Engine externe IP
- 22. Google Compute Engine FTP-Firewall
- 23. Wissen, ob mein Element übergelaufen ist
- 24. Amazon EC2 Compute Unit und GCEU (Google Compute Engine Unit)
- 25. Wie kann man wissen, ob .keyup() eine Zeichentaste (jQuery) ist
- 26. Wie kann ich wissen, ob eine Smartcard eingelegt ist?
- 27. Cant VNC in Google Compute Engine
- 28. Java: Gibt es eine Möglichkeit zu wissen, ob ein InputStream eine Readonly-Datei ist
- 29. Docker auf Google Compute f1-micro-Instanz
- 30. Wissen, ob eine Zukunft gestartet wird