Cet article concerne [l'écriture de scripts Python à exécuter à partir de la console OCI Cloud Shell](https://medium.com/oracledevs/writing-python-scripts-to-run-from-the-oci-console-cloud-shell- Ceci est une exécution du contenu de a0be1091384c).
OCI Cloud Shell OCI Cloud Shell est un terminal Shell basé sur un navigateur Web accessible depuis la console Web OCI. Cloud Shell présente les fonctionnalités suivantes:
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 Lorsque vous écrivez des scripts Python qui s'exécutent dans Cloud Shell, vous pouvez utiliser l'authentification existante de Cloud Shell. Vous pouvez omettre les paramètres de clé API séparés requis pour exécuter le script. Chargez un jeton de délégation de principal d'instance existant et générez un signataire.
#!/usr/bin/env python
import oci
delegation_token = open('/etc/oci/delegation_token', 'r').read()
signer = oci.auth.signers.InstancePrincipalsDelegationTokenSigner(
delegation_token=delegation_token
)
Rechercher toutes les instances de la région actuelle Renseignez-vous sur les détails de l'instance et obtenez une adresse IP Définition du client API
search_client = oci.resource_search.ResourceSearchClient({},signer=signer)
compute_client = oci.core.ComputeClient({},signer=signer)
network_client = oci.core.VirtualNetworkClient({},signer=signer)
Trouvez tous les vnics attachés pour chaque instance Obtenez des adresses IP publiques et privées pour chaque 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
]))