ArubaOS-Switch API (2) – skript v Python

Část 2 z celkových 2 v seriálu ArubaOS-Switch API

ArubaOS-Switch API (2) – skript v Python

V minulém díle jsme si vyzkoušeli základní přístup na nové RESTful API prvků Aruba. Dnes ho už opravdu využijeme – tentokrát v Python.

Zalogování v Python

Předpokládám, že Python je ve vašem Ubuntu už připraven (ve verzi 14.04 určitě je), takže si přidejme jen návaznosti, které v aplikaci použijeme.

sudo apt-get install python-pip
sudo pip install argparse
sudo pip install requests
sudo pip install simplejson

Jak víme z předchozího dílu, musíme se do ArubaOS-Switch přihlásit a získat cookie, kterou budeme používat dál. Rozhodl jsem se to vyřešit tak, že nejprve napíšeme jednoduchý skript login.py. V něm přijmeme parametry zadané uživatelem jako je IP adresa prvku, jméno a heslo a následně zavoláme API, abychom získali cookie. Tuto pak společně s IP adresou uložíme do souboru na disk (zapíšeme si to ve formátu JSON). Další „aplikace“ pak tyto údaje už jen načtou, takže se nemusíme znova přihlašovat.

import argparse
import requests
import json

# Parse inputs
parser = argparse.ArgumentParser()
parser.add_argument('--ip', type=str, help="Controller IP address")
parser.add_argument('--user', type=str, help="Username")
parser.add_argument('--password', type=str, help="Password")
args = parser.parse_args()

# Use authentication call and pass credentials
url="https://" + args.ip + "/rest/v1/login-sessions"

data = {
 "userName":args.user,
 "password":args.password
}

r = requests.post(url, data=json.dumps(data), verify=False)

# Parse token
cookie = r.json()["cookie"].split("=")[1]
print("Cookie: " + cookie)

# Prepare JSON structure with ip address and token
login = {"ip":args.ip,"cookie":cookie}

# Write JSON to file to be read by other scripts
f = open('mylogin.txt', 'w')
f.write(json.dumps(login))
f.close

Použijte skript k zalogování – zadejte potřebné parametry a sledujte co se stane.

$ python login.py --ip 16.21.188.197 --user manager --password hpe
Cookie: 5qiBb0lphJynk7vfCS2Ayo6MZ0jmNaP9OzucX3m0jNRoupnR7FMsAj7YaKqQvbd

Vypadá to dobře. Zkontrolujme ještě zda vznikl soubor mylogin.txt a co v něm je.

$ cat mylogin.txt
{"ip": "16.21.188.197", "cookie": "5qiBb0lphJynk7vfCS2Ayo6MZ0jmNaP9OzucX3m0jNRoupnR7FMsAj7YaKqQvbd"}

Dejte vašim portům krásná náhodná jména

Vyzkoušejme si něco, kdy bude zřejmé, že náš skriptík bude daleko rychlejší, než ruční práce. Nebude to příklad bůh ví jak prakticky užitečný, ale tento vtip dobře demonstruje možnosti a přitom je to velmi snadné. O co jde?

Pojďme udělat skript, který si nejprve vytáhne seznam všech portů v přepínači. Pak tento seznam bude procházet a přejmenovávat porty. Jaké jim dá názvy? Na Internetu existuje služba, která umí náhodně generovat hezká anglická slova o dané délce. To se nám docela hodí – použijeme je. Takhle vypadá aplikace.

import argparse
import requests
import json

# Read login information from file
f = open('mylogin.txt', 'r')
login = json.loads(f.readlines()[0])
f.close

# Read installed apps
url="https://" + login["ip"]  + "/rest/v1/ports"

r = requests.get(url, verify=False, cookies=dict(sessionId=login["cookie"]))

randomword_url="http://randomword.setgetgo.com/get.php?len=8"

# Repeat for all ports in switch
for port in r.json()["port_element"]:
    # Get random word
    rword = requests.get(randomword_url)
    name = rword.text

    # Prepare port URL and JSON with new name
    porturi="https://" + login["ip"] + port["uri"]
    portdata={
        "name":name
    }

    # Change port name and print
    rport = requests.put(porturi, verify=False, cookies=dict(sessionId=login["cookie"]), data=json.dumps(portdata))
    print port["id"] + " is now " + rport.json()["name"]

Všimněte si, že to není nic složitého a při tom byste se ručně docela zapotili. Takhle to vypadá, když to spustíte.

$ python niceports.py
1 is now alterate
2 is now ptilinal
3 is now palmated
4 is now spicknel
5 is now mangling
6 is now subframe
7 is now Sinaitic
8 is now uncandor
9 is now wreckful
10 is now provoker
11 is now ironical
12 is now ateuchus
13 is now subspace
14 is now launcher
15 is now digitize
16 is now screwman
17 is now pycnotic
18 is now rearrive
19 is now Fossoria
20 is now encanker
21 is now purparty
22 is now masonite
23 is now maphrian
24 is now griseous

Hmm, opravdu to tak je? Co říká klasická příkazová řádka?

HP-2920-24G-PoEP# show interfaces custom all port name

 Status and Counters - Custom Port Status


  Port   Name
  ------ ----------
  1      alterate
  2      ptilinal
  3      palmated
  4      spicknel
  5      mangling
  6      subframe
  7      Sinaitic
  8      uncandor
  9      wreckful
  10     provoker
  11     ironical
  12     ateuchus
  13     subspace
  14     launcher
  15     digitize
  16     screwman
  17     pycnotic
  18     rearrive
  19     Fossoria
  20     encanker
  21     purparty
  22     masonite
  23     maphrian
  24     griseous

Dnes jsme si předvedli, že RESTful API v ArubaOS-Switch je snadno použitelné třeba z jazyka Python, ale i jakéhokoli dalšího. Přestaňte tedy používat TCL (to bolí…strašné) nebo SNMP (au) a zkuste moderní rozhraní!

Series Navigation<< ArubaOS-Switch API (1) – první kroky s cURL
Similar posts
  • ArubaOS-Switch 16.02: IP SLA i pro Ar... IP SLA Ve světě směrovačů už poměrně dlouho existuje možnost monitorovat dostupnost a kvalitu spojení s využitím L3 protokolů. Můžete například z pobočky v pravidelných intervalech testovat dostupnost brány datového centra nebo klíčového serveru včetně měření doby jeho reakce (round-trip-time). Dá se také namířit dva routery proti sobě tak, že jeden se ptá a druhý [...]
  • OpenSwitch a Ansible automatizace pra... Minule jsme napojili naši virtuální topologii na Ansible a spustili náš první testovací Playbook. Dnes provodeme automatizovanou konfiguraci L3 fabric a otestujeme síť. Příprava konfiguračních podkladů Pro zprovoznění L3 fabric potřebujeme Loopback adresu, IP adresy na jednotlivých spojeních mezi prvky a nastavení BGP (autonomní systémy, peering). V našem Ansible prostředí si vytvoříme jeden YAML soubor, [...]
  • OpenSwitch a Ansible automatizace pra... V minulém díle jsme si rozjeli Lead-Spine OpenSwitch topologii s využitím Dockeru a skript nám vygeneroval také hosts file pro Ansible. Dnes se vyzkoušíme napojení na Ansible 2.1. Příprava Ansible a vašeho VM První co potřebujeme udělat je nainstalovat Ansible minimálně ve verzi 2.1. Postup najdete zde: http://docs.ansible.com/ansible/intro_installation.html Dále vyřešíme nastavení SSH klienta v naší [...]
  • OpenSwitch a Ansible automatizace pra... Na stránkách netsvet.cz i cloudsvet.cz často píšeme o desired state konceptech v ovládání infrastruktury a o automatizaci. V tomto seriálu si ukážeme jak může vypadat moderní práce se sítí postavenou na OpenSwitch projektu, L3 BGP fabricu a Ansible automatizaci. Dnes začneme tím, že si sestavíme virtuální infrastrukturu. Jak získat Leaf-spine topologii několika OpenSwitchů? Pro testování [...]
  • HPE Networking na GitHub – skri... Zaměstnanci HPE publikovali zajímavé skripty a celé knihovny jako open source v licenci Apache2, tedy k volnému použití včetně jakýchkoli modifikací. https://github.com/HPENetworking/scriptsonly Obsah se bude jistě dost rozšiřovat… přidejte si záložku [...]

No Comments Yet

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *