Changeset 452
- Timestamp:
- 05/21/08 14:21:43
- Arquivos:
Legenda:
- Não modificado
- Adicionado
- Removido
- Modificado
- Copiado
- Movido
cacic/trunk/agente-linux/pycacic/src/coletores/lib/computador.py
r450 r452 41 41 42 42 class MotherBoard: 43 """Classe MotherBoard, cont ém informações sobre a Placa Mae"""43 """Classe MotherBoard, contᅢᄅm informaᅢ대ᄉes sobre a Placa Mae""" 44 44 45 45 def __init__(self): … … 56 56 57 57 class CPU: 58 """Classe CPU, cont ém informações sobre a CPU"""58 """Classe CPU, contᅢᄅm informaᅢ대ᄉes sobre a CPU""" 59 59 60 60 def __init__(self) : … … 115 115 116 116 class Video : 117 """Classe contendo as informacoes de v Ãdeo"""117 """Classe contendo as informacoes de vᅢï¾deo""" 118 118 119 119 def __init__(self) : … … 134 134 135 135 def getResolucao (self) : 136 """ retorna a resolu ção do video """136 """ retorna a resoluᅢ댃o do video """ 137 137 # returns double 138 138 return self.res 139 139 140 140 def setResolucao (self, res) : 141 """ define a resolu ção do video """141 """ define a resoluᅢ댃o do video """ 142 142 # returns 143 143 self.res = res … … 203 203 204 204 class Rede: 205 """Classe respons ável por conter as informações de rede"""205 """Classe responsᅢᄀvel por conter as informaᅢ대ᄉes de rede""" 206 206 207 207 def __init__(self): … … 321 321 322 322 def __getDNSDomain__(self): 323 """ Pega o dom Ãnio """323 """ Pega o domᅢï¾nio """ 324 324 dns = commands.getoutput("cat /etc/resolv.conf") 325 325 pos = dns.find("search ") … … 369 369 370 370 def getDHCP(self): 371 """ retorna o endere ço IP do servidor DHCP """371 """ retorna o endereᅢᄃo IP do servidor DHCP """ 372 372 return self.dhcp 373 373 374 374 def getMascara(self): 375 """ retorna a m áscara de rede da máquina """375 """ retorna a mᅢᄀscara de rede da mᅢᄀquina """ 376 376 # returns string 377 377 return self.mascara … … 383 383 384 384 def getMAC(self): 385 """ retorna o endereco mac da m áquina """385 """ retorna o endereco mac da mᅢᄀquina """ 386 386 # returns string 387 387 return self.mac … … 398 398 399 399 def getDNSDomain(self): 400 """ retorna o dom Ãnio do DNS """400 """ retorna o domᅢï¾nio do DNS """ 401 401 #return string 402 402 return self.dnsdomain … … 404 404 405 405 class Bios: 406 """Classe respons ável por conter as informações da Bios"""406 """Classe responsᅢᄀvel por conter as informaᅢ대ᄉes da Bios""" 407 407 408 408 def __init__(self) : … … 443 443 444 444 class HardDisk: 445 """Classe respons ável por conter as informações sobre o HD"""445 """Classe responsᅢᄀvel por conter as informaᅢ대ᄉes sobre o HD""" 446 446 447 447 def __init__(self) : … … 484 484 class PC_XML: 485 485 """ 486 Classe intermedi ária responsavel por executar o binario lshw,486 Classe intermediᅢᄀria responsavel por executar o binario lshw, 487 487 que ira gerar um xml, e entao tratar o xml setando os atributos 488 488 do Computador atraves do mesmo e por comandos bash. … … 496 496 self.placaRede = [] # list 497 497 self.hardDisk = [] # list 498 self.partitions = [] # list 498 499 self.bios = Bios() # Bios 499 500 self.video = [] # list … … 626 627 if c.getDescricao() != "": 627 628 self.cpu.append(c) 628 # Caso exista um novo processador mas a descri ção está vazia629 # Caso exista um novo processador mas a descriᅢ댃o estᅢᄀ vazia 629 630 # assuma que sao mais de um nucleo e replica as informacoes do 630 631 # ultimo adicionado. Compara tambem com o total de cpu encontrada pelo lshw … … 797 798 # convertendo de bytes para megas 798 799 hd.setTamanho(int(filho.firstChild.nodeValue) / 1024) 800 elif filho.nodeName == 'node' and filho.attributes['id'].nodeValue[0:6] == 'volume': 801 self.getPartitionInfo(filho) 799 802 self.hardDisk.append(hd) 800 803 804 def getPartitionInfo(self, no): 805 """Pega as informacoes das particoes atraves do no do XML""" 806 p = Particao() 807 for filho in no.childNodes: 808 if filho.nodeName == 'description': 809 p.description = filho.firstChild.nodeValue 810 elif filho.nodeName == 'physid': 811 p.physid = int(filho.firstChild.nodeValue) 812 elif filho.nodeName == 'businfo': 813 p.businfo = filho.firstChild.nodeValue 814 elif filho.nodeName == 'logicalname' and p.name == '': 815 p.name = filho.firstChild.nodeValue 816 elif filho.nodeName == 'dev': 817 p.dev = filho.firstChild.nodeValue 818 elif filho.nodeName == 'version': 819 p.version = filho.firstChild.nodeValue 820 elif filho.nodeName == 'serial': 821 p.serial = filho.firstChild.nodeValue 822 elif filho.nodeName == 'capacity': 823 p.size = round(int(filho.firstChild.nodeValue)/1048576) 824 p.__setFreeSize__() 825 elif filho.nodeName == 'configuration': 826 for folha in filho.childNodes: 827 if folha.nodeName == 'setting' and folha.attributes['id'].nodeValue in ('filesystem', 'mount.fstype'): 828 p.filesystem = (folha.attributes['value'].nodeValue).upper() 829 self.partitions.append(p) 830 return 831 elif filho.nodeName == 'node' and filho.attributes['id'].nodeValue[0:13] == 'logicalvolume': 832 self.getPartitionInfo(filho) 833 return 834 801 835 802 836 class SO_Info: … … 966 1000 return '' 967 1001 968 def isInstalled(self, pkg_installed, os):1002 def isInstalled(self, os, package): 969 1003 """ 970 1004 Retorna true ou false verificando se o pacote passado por parametro … … 972 1006 """ 973 1007 mng = self.__getMng__(os) 974 output = commands.getoutput(self.__getMethod__(os) + pkg_installed)975 1008 if mng == 'dpkg': 976 if 'install' in output:1009 if not 'deinstall' in package and 'install' in package: 977 1010 return 1 # True 978 1011 else: 979 1012 if output != '': 980 1013 return 1 # True 981 return False1014 return 0 982 1015 983 1016 def getAllInstalled(self, os): … … 985 1018 mng = self.__getMng__(os) 986 1019 if mng == 'slack': 987 return commands.getoutput(self.__getMethod__(os)[0:-6]) 988 return commands.getoutput(self.__getMethod__(os)) 1020 ret = commands.getoutput(self.__getMethod__(os)[0:-6]) 1021 else: 1022 ret = commands.getoutput(self.__getMethod__(os)) 1023 plist = ret.split("\n") 1024 packages = [] 1025 for package in plist: 1026 if self.isInstalled(os, package): 1027 pos = package.find("\t") 1028 packages.append(package[0:pos]) 1029 return packages 1030 1031 1032 class Particao: 1033 """ 1034 Classe Particoes contem as informacoes da(s) 1035 particao(oes) do computador (montagem, tamanho, etc) 1036 """ 1037 1038 def __init__(self): 1039 self.size = 0 1040 self.freesize = 0 1041 self.name = '' 1042 self.serial = '' 1043 self.description = '' 1044 self.filesystem = '' 1045 self.physid = 0 1046 self.businfo = '' 1047 self.dev = '' 1048 self.version = '' 1049 1050 def getSize(self): 1051 """Retorna o tamanho em megas da particao""" 1052 return self.size 1053 1054 def __setFreeSize__(self): 1055 desc = commands.getoutput("df -l %s" % self.getName()).split('\n') 1056 if len(desc) > 1: 1057 inf = desc[1].split() 1058 if len(inf) > 3: 1059 self.freesize = round(int(inf[3]) / 1024) 1060 return 1061 self.freesize = self.size 1062 1063 def getFreeSize(self): 1064 """Retorna o tamanho livre em megas da particao""" 1065 return self.freesize 1066 1067 def getName(self): 1068 """Retorna o nome logico da particao, ex.: /dev/hda1""" 1069 return self.name 1070 1071 def getSerial(self): 1072 """Retorna uma string contendo o serial da particao""" 1073 return self.serial 1074 1075 def getDescription(self): 1076 """Retorna a descricao da particao""" 1077 return self.description 1078 1079 def getFileSystem(self): 1080 """Retorna o tipo do sistema de arquivo da particao, ex.: EXT3, NTFS""" 1081 return self.filesystem 989 1082 990 1083 … … 1003 1096 self.teclado = devices['teclado'] 1004 1097 self.pacote = Pacotes() 1098 self.jreversion = self.__get_jre_version__() 1005 1099 self.ram = '' 1006 1100 self.rom = '' … … 1024 1118 try: 1025 1119 if not self.isRoot(): 1026 raise ComputerException('Para executar o programa é necessário estar como super usuário (root).')1120 raise ComputerException('Para executar o programa ᅢᄅ necessᅢᄀrio estar como super usuᅢᄀrio (root).') 1027 1121 pc_xml = PC_XML() 1028 1122 self.ram = pc_xml.ram … … 1031 1125 self.placaRede = pc_xml.placaRede 1032 1126 self.hardDisk = pc_xml.hardDisk 1127 self.particoes = pc_xml.partitions 1033 1128 self.bios = pc_xml.bios 1034 1129 self.video = pc_xml.video … … 1039 1134 raise Exception('%s\n\nO programa foi abortado de forma prematura.\n' % e.message) 1040 1135 sys.exit() 1136 1137 def __get_jre_version__(self): 1138 """Retorna o hostname da maquina atraves de socket""" 1139 java = commands.getoutput('java -version') 1140 pos = java.find("java version ") 1141 if pos == 0: 1142 pos2 = java.find('"', pos+14) 1143 java = java[pos+14:pos2] 1144 return java 1041 1145 1042 1146 def __get_host_name__(self): … … 1069 1173 1070 1174 def getSO (self) : 1071 """ retorna string contendo sistema operacional """1175 """Retorna string contendo sistema operacional """ 1072 1176 # returns string 1073 1177 return self.so 1178 1179 def getJREVersion(self): 1180 """Retorna a versao do Java Runtime Environment """ 1181 return self.jreversion 1074 1182 1075 1183 def getPacotes(self): … … 1082 1190 1083 1191 def getHostName(self) : 1084 """ retorna host name """1192 """Retorna host name """ 1085 1193 # returns string 1086 1194 return self.hostName 1087 1195 1088 1196 def getPlacaMae(self) : 1089 """ retorna objeto MotherBoard com as informacoes da placa mae """1197 """Retorna objeto MotherBoard com as informacoes da placa mae """ 1090 1198 # returns string 1091 1199 return self.placaMae 1092 1200 1093 1201 def getCPU(self) : 1094 """ retorna lista de cpus do micro """1202 """Retorna lista de cpus do micro """ 1095 1203 # returns list 1096 1204 return self.cpu 1097 1205 1098 1206 def getRam(self) : 1099 """ retorna objeto RAM com descricao das memorias ram do micro """1207 """Retorna objeto RAM com descricao das memorias ram do micro """ 1100 1208 # returns RAM 1101 1209 return self.ram 1102 1210 1103 1211 def getHardDisk(self) : 1104 """ retorna lista de objetos HD """1212 """Retorna lista de objetos HD """ 1105 1213 # returns list 1106 return self.hardDisk 1214 return self.hardDisk 1215 1216 def getPartitions(self): 1217 """Retorna lista de objetos Particao """ 1218 # returns list 1219 return self.particoes 1107 1220 1108 1221 def getAudio(self) : … … 1112 1225 1113 1226 def getVideo(self) : 1114 """ retorna lista de placa de video """1227 """Retorna lista de placa de video """ 1115 1228 # returns list 1116 1229 return self.video 1117 1230 1118 1231 def getRom(self) : 1119 """ retorna lista de midias ROM """1232 """Retorna lista de midias ROM """ 1120 1233 # returns list 1121 1234 return self.rom 1122 1235 1123 1236 def getPlacaRede(self) : 1124 """ retorna lista de placas de redes """1237 """Retorna lista de placas de redes """ 1125 1238 # returns list 1126 1239 return self.placaRede 1127 1240 1128 1241 def getIPAtivo(self, server): 1129 """ retorna o endereco de IP que conecta no server especificado"""1242 """Retorna o endereco de IP que conecta no server especificado""" 1130 1243 ips = urlparse(server)[1] 1131 1244 if ips == "": 1132 raise ComputerException("Endere ço do Servidor inválido. Não foi possÃvel detectar o ip ativo.")1245 raise ComputerException("Endereᅢᄃo do Servidor invᅢᄀlido. Nᅢᆪo foi possᅢï¾vel detectar o ip ativo.") 1133 1246 ips = socket.gethostbyname(ips) 1134 1247 return Rede().getIPAtivo(ips) 1135 1248 1136 1249 def getMACAtivo(self, ip): 1137 """ retorna o endereco de IP que conecta no server especificado"""1250 """Retorna o endereco de IP que conecta no server especificado""" 1138 1251 return Rede().__getMac__(ip).replace(':','-') 1139 1252 1140 1253 def getModem(self) : 1141 """ retorna lista de modens"""1254 """Retorna lista de modens""" 1142 1255 # returns list 1143 1256 return self.modem 1144 1257 1145 1258 def getBios(self) : 1146 """ retorna um objeto do tipo Bios"""1259 """Rtorna um objeto do tipo Bios""" 1147 1260 # returns Bios 1148 1261 return self.bios
