#!/usr/bin/env python # -*- coding: utf-8 -*- # # This module provides a python interface to D-Link 500G CLI. # # written by Arthur Furlan import re, telnetlib # default configuration DEFAULT_ADDRESS = '10.0.0.1' DEFAULT_PORT = 23 DEFAULT_USERNAME = 'admin' DEFAULT_PASSWORD = 'admin' class DLink500G: def __init__(self, address, port): self.address = address self.port = port self.connected = False def __del__(self): if self.connected: self.command('quit') self.telnet.close() def connect(self, username, password): self.telnet = telnetlib.Telnet(self.address, self.port) self.telnet.read_until('login: ') self.telnet.write("%s\n" % username) self.telnet.read_until('password: ') self.telnet.write("%s\n" % password) response = self.telnet.expect(['\$'], 5) if response[0] == -1: raise Exception('Login failed.') self.connected = True def command(self, cmd): if not self.connected: raise Exception('Not logged in.') self.telnet.write("%s\n" % cmd) self.connected = not (cmd == 'quit') if self.connected: response = self.telnet.read_until('$').replace('\r', '').split('\n') if re.match('^Error: ', response[1]): raise Exception(re.sub('^Error: ', '', response[1])) return '\n'.join(response[1:len(response)-1])