API OVH con Python


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

Asignamos los permisos que necesite nuestra app:

curl -XPOST -H"X-Ovh-Application: APPLICATION_KEY" -H "Content-type: application/json" https://eu.api.ovh.com/1.0/auth/credential  -d '{
    "accessRules": [{"method":"GET","path":"/*"},{"method":"POST","path":"/*"},{"method":"PUT","path":"/*"},{"method":"DELETE","path":"/*"}]
}'

Nos responderá con una URL y un CONSUMER_KEY:

"validationUrl":"https://eu.api.ovh.com/auth/?credentialToken=CREDENTIAL_TOKEN","consumerKey":"CONSUMER_KEY","state":"pendingValidation"}

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


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

pip install ovh

Escribimos un script de test:

vi test.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))

Le asignamos los permisos correctos:

chmod 700 test.py

Probamos el script:

 python3 test.py
{
  "companyNationalIdentificationNumber": "123123123123",
    "sex": "male",
  "zip": "10033",
    "ovhCompany": "ovh",
  "name": "XXXXXXXXXX",
  "phone": "+346665566",
  "nationalIdentificationNumber": "ASRfdfdfsdfs",
    "spareEmail": null,
  "country": "ES",
  "corporationType": "srs",
  "city": "alfaexploitCity",
  "birthDay": "01/01/1970",
  "area": "AL",
  "ovhSubsidiary": "AL",
    "fax": "",
  "vat": "AL123456789",
    "legalform": "corporation",
  "organisation": "AlfaExploit",
  "customerCode": "3333-3333-33",
  "state": "complete",
  "address": "PaperStreet",
    "currency": {
        "symbol": "\u20ac",
        "code": "EUR"
    },
  "email": "kr0m@alfaexploit.com",
  "phoneCountry": "ES",
  "birthCity": "SPAIN",
  "firstname": "kr0m",
  "language": "es_ES",
  "nichandle": "xxxxxxx-ovh"
}

Todas las llamadas a la API están documentadas con ejemplos incluidos en la siguiente URL:

https://api.ovh.com/console/

Si no queremos tener las credenciales en el propio script podemos tenerlo en un fichero externo, en caso de utilizar Git ignoraremos el fichero de credenciales mediante gitignore para evitar subir passwords al repositorio.

En el path del script generaremos el siguiente fichero:

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

[ovh-eu]
application_key=APPLICATION_KEY
application_secret=APPLICATION_SECRET
consumer_key=CONSUMER_KEY

Y el script con configuración externa quedaría del siguiente modo:

vi test.py
import ovh
import json
client = ovh.Client()

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

Otra posibilidad para tener las credenciales en un fichero externo es leerlas manualmente mediante código en Python de dicho fichero externo sin necesidad de generar un fichero ovh.conf

Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Si tienes cualquier pregunta siempre puedes enviarme un Email o escribir en el grupo de Telegram de AlfaExploit.
Autor: kr0m -- 28/06/2017 23:24:27 -- Categoria: Sysadmin Programacion