Esta pagina se ve mejor con JavaScript habilitado

API OVH con Python

 ·  🎃 kr0m

OVH es uno de los ISPs de mayor importancia a nivel mundial, proporciona servicios de todo tipo, desde servidores y dominios a cuentas de mail o servidores con GPUs para procesamiento gráfico. En este artículo aprenderemos como utilizar su API desde un script en python, de este modo seremos capaces de automatizar multitud de tareas administrativas.

El primer paso será crear una app, para ello nos dirigimos a:
[https://eu.api.ovh.com/createApp/]

Nos proporcionarán dos parámetros:

  • APPLICATION_KEY
  • APPLICATION_SECRET

Creamos el fichero de configuración con los datos de acceso necesarios:

vi ovh.conf

[default]
; general configuration: default endpoint
endpoint=ovh-eu

[ovh-eu]
; configuration specific to 'ovh-eu' endpoint
application_key=XXXXXXXXXXXXXX
application_secret=YYYYYYYYYYYY
;consumer_key=ZZZZZZZZZZZZ

NOTA: Dejamos el consumer_key comentado por ahora.

Instalamos la librería de Python para poder interactuar con la API:

pip install ovh

Conseguimos el consumer_key mediante el siguiente script:

vi get_consumer_key.py

import ovh

# create a client using configuration
client = ovh.Client()

# Request RO, /me API access
ck = client.new_consumer_key_request()
# Allow all GET, POST, PUT, DELETE on /* (full API)
ck.add_recursive_rules(ovh.API_READ_WRITE, '/')

# Request token
validation = ck.request()

print("Please visit %s to authenticate" % validation['validationUrl'])
input("and press Enter to continue...")

# Print nice welcome message
print("Welcome", client.get('/me')['firstname'])
print("Btw, your 'consumerKey' is '%s'" % validation['consumerKey'])

Lo ejecutamos:

python get_consumer_key.py

Please visit https://eu.api.ovh.com/auth/?credentialToken=53EA76vsdfrrrrAGyN0M6HbjgGVa5qjXdYnnXsdQFowSh4ifmawon1otlGQk to authenticate
and press Enter to continue...

Visitamos la validationUrl y le damos el tiempo de validez que necesitemos.

Ahora que ya tenemos el consumer_key editamos el fichero de configuración descomentado el consumer_key y asignándoles el valor correcto:

vi ovh.conf

[default]
; general configuration: default endpoint
endpoint=ovh-eu

[ovh-eu]
; configuration specific to 'ovh-eu' endpoint
application_key=XXXXXXXXXXXXXX
application_secret=YYYYYYYYYYYY
consumer_key=ZZZZZZZZZZZZ

Escribimos un script de test:

vi test.py

import ovh
import json
client = ovh.Client()

result = client.get('/me')
print(json.dumps(result, indent=4))

Lo ejecutamos:

python test.py

{
    "zip": "03804",
    "language": "es_ES",
    "firstname": "Juan Jose",
    "nichandle": "XXXXXXX-ovh",
    "organisation": "",
    "state": "complete",
    "corporationType": "",
    "country": "ES",
    "legalform": "individual",
    "email": "kr0m@alfaexploit.com",
    "city": "ALCOI",
    "birthDay": "",
    "name": "Ivars Poquet",
    "nationalIdentificationNumber": "XXXXXXXXY",
    "ovhCompany": "ovh",
    "ovhSubsidiary": "ES",
    "customerCode": "XXXX-YYYY-ZZ",
    "area": "03",
    "fax": "",
    "phone": "+34.XXXYYZZWW",
    "currency": {
        "code": "EUR",
        "symbol": "\u20ac"
    },
    "address": "Calle inventada 123",
    "spareEmail": null,
    "birthCity": "",
    "companyNationalIdentificationNumber": null,
    "vat": "",
    "phoneCountry": "ES",
    "sex": null,
    "italianSDI": "0000000"
}

Si lo preferimos podemos asignar las credenciales por código, esto resulta útil si vamos a acceder a varias cuentas desde un único script:

vi test2.py

import ovh
import json

APPLICATION_KEY = 'XXXXXXXXXXXXXXX'
APPLICATION_SECRET = 'YYYYYYYYYYYYYYY'
CONSUMER_KEY = 'ZZZZZZZZZZZZZZZZZZZ'

client = ovh.Client(
  endpoint = 'ovh-eu',
  application_key = APPLICATION_KEY,
  application_secret = APPLICATION_SECRET,
  consumer_key = CONSUMER_KEY,
)

result = client.get('/me')
print(json.dumps(result, indent=4))

Todas las llamadas a la API están documentadas con ejemplos incluidos en la siguiente URL:
[https://api.ovh.com/console/]

Si te ha gustado el artículo puedes invitarme a un RedBull aquí