In diesem Artikel geht es um [Schreiben von Python-Skripten zur Ausführung über die OCI Console Cloud Shell](https://medium.com/oracledevs/writing-python-scripts-to-run-from-the-oci-console-cloud-shell- Dies ist eine Ausführung des Inhalts von a0be1091384c).
OCI Cloud Shell OCI Cloud Shell ist ein Webbrowser-basiertes Shell-Terminal, auf das über die OCI-Webkonsole zugegriffen werden kann. Cloud Shell bietet die folgenden Funktionen:
list_ipaddress.py
#!/usr/bin/env python
import oci
delegation_token = open('/etc/oci/delegation_token', 'r').read()
signer = oci.auth.signers.InstancePrincipalsDelegationTokenSigner(
delegation_token=delegation_token
)
search_client = oci.resource_search.ResourceSearchClient({},signer=signer)
compute_client = oci.core.ComputeClient({},signer=signer)
network_client = oci.core.VirtualNetworkClient({},signer=signer)
resp = search_client.search_resources(
oci.resource_search.models.StructuredSearchDetails(
type="Structured",
query="query instance resources"
)
)
for instance in resp.data.items:
resp = compute_client.list_vnic_attachments(
compartment_id=instance.compartment_id,
instance_id=instance.identifier
)
for vnic_attachment in resp.data:
vnic = network_client.get_vnic(vnic_attachment.vnic_id).data
print("\t".join([
instance.display_name,
vnic.display_name,
vnic.private_ip,
vnic.public_ip
]))
$ python ./list_ipaddress.py
fmwf fmwf 10.0.0.4 150.136.236.XXX
db01 db01 10.0.0.3 150.136.37.XXX
gpu01 gpu01 10.0.0.5 150.136.89.XXX
fn fn 10.0.0.2 158.101.118.XXX
singer Beim Schreiben von Python-Skripten, die in Cloud Shell ausgeführt werden, können Sie die vorhandene Authentifizierung von Cloud Shell verwenden. Sie können die separaten API-Schlüsseleinstellungen weglassen, die zum Ausführen des Skripts erforderlich sind. Laden Sie ein vorhandenes Instanzprinzipaldelegationstoken und generieren Sie einen Unterzeichner.
#!/usr/bin/env python
import oci
delegation_token = open('/etc/oci/delegation_token', 'r').read()
signer = oci.auth.signers.InstancePrincipalsDelegationTokenSigner(
delegation_token=delegation_token
)
Suchen Sie nach allen Instanzen in der aktuellen Region Erkundigen Sie sich nach Instanzdetails und erhalten Sie eine IP-Adresse API-Client-Definition
search_client = oci.resource_search.ResourceSearchClient({},signer=signer)
compute_client = oci.core.ComputeClient({},signer=signer)
network_client = oci.core.VirtualNetworkClient({},signer=signer)
Finden Sie alle angehängten vnics für jede Instanz Holen Sie sich sowohl öffentliche als auch private IP-Adressen für jedes vnic
for instance in resp.data.items:
resp = compute_client.list_vnic_attachments(
compartment_id=instance.compartment_id,
instance_id=instance.identifier
)
for vnic_attachment in resp.data:
vnic = network_client.get_vnic(vnic_attachment.vnic_id).data
print("\t".join([
instance.display_name,
vnic.display_name,
vnic.private_ip,
vnic.public_ip
]))