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:
[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:
Conseguimos el consumer_key mediante el siguiente script:
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:
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:
[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:
import ovh
import json
client = ovh.Client()
result = client.get('/me')
print(json.dumps(result, indent=4))
Lo ejecutamos:
{
"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:
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/]