示例#1
0
	def setDevice(self, dev):
		# We get the device IP
		self.cursor.execute("SELECT ip FROM device WHERE name = '%s'" % dev)
		pgres = self.cursor.fetchone()
		
		if pgres == None:
			return False
			
		self.device = dev
		self.deviceIP = pgres[0]
		
		# And next, the SNMP communities
		self.cursor.execute("SELECT snmpro, snmprw FROM z_eye_snmp_cache WHERE device = '%s'" % self.device)
		pgres = self.cursor.fetchone()
		
		if pgres != None:
			self.snmp_ro = pgres[0]
			self.snmp_rw = pgres[1]
		else:
			self.snmp_ro = "public"
			self.snmp_rw = "private"

		self.snmpCommunicator = SNMPCommunicator(self.deviceIP)
		
		return True
示例#2
0
class GenericSwitch:
	vendor = ""
	portId = ""
	device = ""
	deviceIP = ""
	snmp_ro = ""
	snmp_rw = ""
	snmpCommunicator = None
	mibs = None
	
	# TEMP: db related
	dbConn = None
	cursor = None
	
	def __init__(self):
		self.vendor = ""
		self.portId = ""
		self.device = ""
		self.deviceIP = ""
		self.snmp_ro = ""
		self.snmp_rw = ""
		self.snmpCommunicator = None
		self.mibs = None
		
		# TEMP: db connection
		self.dbConn = PgSQL.connect(host=zConfig.pgHost,user=zConfig.pgUser,password=zConfig.pgPwd,database=zConfig.pgDB)
		self.cursor = self.dbConn.cursor()

	#
	# Interface & handler functions, herited and modified by each vendor
	#

	def showStateOpts(self):
		return ""
		
	def handleState(self, logvals, port = "", shut = -1):
		return

	def showSpeedOpts(self):
		return ""
	
	def handleSpeed(self, logvals):
		return

	def showDuplexOpts(self):
		return ""
		
	def handleDuplex(self, logvals):
		return

	def showVlanOpts(self):
		return ""
		
	def handleVlan(self, logvals):
		return

	def showVoiceVlanOpts(self, voicevlanoutput):
		return ""
		
	def handleVoiceVlan(self, logvals):
		return

	def showPortSecurityOpts(self):
		return ""
		
	def handlePortSecurity(self, logvals):
		return

	def showDHCPSnoopingOpts(self):
		return ""
		
	def handleDHCPSnooping(self, logvals):
		return

	def showSaveCfg(self):
		return ""
		
	def handleSaveCfg(self):
		return

	def checkFields(self):
		return True
	
	
	#Generic port management

	def setPortDesc(self, value):
		return None

	def getPortDesc(self):
		return None

	#
	# Link Management
	#
	
	def setPortState(self, value):
		return None

	def getPortState(self):
		return None

	def getPortMtu(self):
		return None

	def setPortDuplex(self, value):
		return None

	def getPortDuplex(self):
		return None

	def setPortSpeed(self, value):
		return None

	def getPortSpeed(self):
		return None

	#
	# VLAN management
	#

	def setSwitchAccessVLAN(self, value):
		return None

	def getSwitchAccessVLAN(self):
		return None
		
	def setSwitchportMABEnable(self, value):
		return None

	def getSwitchportMABState(self):
		return None

	def setSwitchMABType(self, value):
		return None

	def getSwitchportMABType(self):
		return None

	def setSwitchportAuthFailVLAN(value):
		return None
		
	def getSwitchportAuthFailVLAN(self):
		return None
		
	def setSwitchportAuthNoRespVLAN(self, value):
		return None
		
	def getSwitchportAuthNoRespVLAN(self):
		return None
		
	def setSwitchportAuthDeadVLAN(self, value):
		return None
		
	def getSwitchportAuthDeadVLAN(self):
		return None
	
	def setSwitchTrunkNativeVlan(self, value):
		return None

	def getSwitchTrunkNativeVlan(self):
		return None

	def setSwitchTrunkVlan(self, values):
		return None

	def setSwitchNoTrunkVlan(self):
		return None

	def getSwitchportTrunkVlans(self):
		return None

	def setSwitchTrunkEncap(self, value):
		return None

	def getSwitchTrunkEncap(self):
		return None
	
	def setSwitchportMode(self, value):
		return None

	def getSwitchportMode(self):
		return None

	def setSwitchportVoiceVlan(self, value):
		return None

	def getSwitchportVoiceVlan(self):
		return None
	
	#
	# Authentication
	#
		
	# authentication port-control 1,2,3
	def setSwitchportControlMode(self, value):
		return None
		
	def getSwitchportControlMode(self):
		return None
		
	# authentication host-mode
	def setSwitchportAuthHostMode(self, value):
		return None

	def getSwitchportAuthHostMode(self):
		return None

	#
	# get Port list from a device. If there is a filter, only port with specified vlan are returned
	#

	def getPortList(self, vlanFltr = None):
		return None

	def replaceVlan(self, oldvlan, newvlan):
		return None

	# Saving running-config => startup-config
	def writeMemory(self):
		return None

	def restoreStartupConfig(self):
		return None

	# Save startup-config to TFTP Server
	def exportConfigToTFTP(self, server, path):
		return None

	# Restore startup-config to TFTP Server
	def importConfigFromTFTP(self, server, path):
		return None

	# Save startup-config to FTP/SCP/SFTP Server
	def exportConfigToAuthServer(self, server, _type, path, user, pwd):
		return None

	# Restore startup-config to FTP/SCP/SFTP Server
	def importConfigFromAuthServer(self, server, _type, path, user, pwd):
		return None

	# Get Copy state from switch, using previous randomized id
	def getCopyState(self, copyId):
		return None

	def getCopyError(self, copyId):
		return None
		
	#
	# Others
	#
		
	def connectToDevice(self, server,sshuser,sshpwd,enablepwd):
		return None

	def sendSSHCmd(self, stdio, cmd):
		return ""

	def showSSHRunCfg(self):
		return ""
		
	def showSSHStartCfg(self):
		return ""
		
	def showSSHInterfaceCfg(self, iface):
		return ""
		
	def showSSHInterfaceStatus(self, iface):
		return ""
		
	def setPortId(self, pid):
		if pid.isdigit() == False:
			return False
			
		self.portId = pid
		return True

	def setDevice(self, dev):
		# We get the device IP
		self.cursor.execute("SELECT ip FROM device WHERE name = '%s'" % dev)
		pgres = self.cursor.fetchone()
		
		if pgres == None:
			return False
			
		self.device = dev
		self.deviceIP = pgres[0]
		
		# And next, the SNMP communities
		self.cursor.execute("SELECT snmpro, snmprw FROM z_eye_snmp_cache WHERE device = '%s'" % self.device)
		pgres = self.cursor.fetchone()
		
		if pgres != None:
			self.snmp_ro = pgres[0]
			self.snmp_rw = pgres[1]
		else:
			self.snmp_ro = "public"
			self.snmp_rw = "private"

		self.snmpCommunicator = SNMPCommunicator(self.deviceIP)
		
		return True

	def unsetPortId(self):
		self.portId = -1
		
	def unsetDevice(self):
		self.device = ""
		self.deviceIP = ""
		self.snmp_ro = ""
		self.snmp_rw = ""
	
	def snmpget(self, mib):
		if self.snmpCommunicator == None:
			return -1
		
		# Mib[0] is the SNMP path
		# If there is a port ID, add it to MIB
		if self.portId != "":
			return self.snmpCommunicator.snmpget(self.snmp_ro, "%s.%s" % (mib[0], self.portId))
		else:
			return self.snmpCommunicator.snmpget(self.snmp_ro, mib[0])
	
	def snmpset(self, mib, value):
		if self.snmpCommunicator == None:
			return -1
		
		# If there is a port ID, add it to MIB
		if self.portId != "":
			mib = ("%s.%s" % (mib[0], self.portId), mib[1])
		
		return self.snmpCommunicator.snmpset(self.snmp_rw, mib,  value)