Esempio n. 1
0
    def __guessBurnerType(self, deviceFile):
        """
		Função que utiliza os dados fornecidos pelo teste informativo para identificar
		qual o tipo do gravador (ou se é só um leitor). Caso a informação não esteja
		disponível, a aplicação cdrecord é utilizada para tentar obtê-la.

		O retorno é a string 'DVDRW' ou 'CDRW', caso um gravador seja identificado, ou None,
		caso o dispositivo seja apenas um leitor.

		"""
        ret = None

        commands = []

        cmd_base = "cdrecord -prcap dev=%s | grep write | grep media | grep -v not" % deviceFile

        for cmd in cmd_base.split("|"):
            commands.append(prepare_command(cmd))

        cmd_awk = ['awk', '{print $3}']

        commands.append(cmd_awk)

        i, o_str, e_str, ret_code = exec_command_parms(commands)

        if (o_str.__contains__('DVD')):
            ret = 'DVDRW'
        elif (o_str.__contains__('CD')):
            ret = 'CDRW'

        return ret
Esempio n. 2
0
    def compat(self, info_list):
        """Executa o teste de compatibilidade como definido na RFQ07.B.'

		Parâmetro:
		info_list -- Lista contendo as informções detectadas para o HD (lista de 'InfoResHarddisk')

		Retorna uma lista contendo o resultado do teste e uma string de mensagem para cada dispositivo.
		"""
        self._compat_res = None

        if (info_list):
            self._compat_res = []

            for info in info_list:
                i, o_str, e_str, ret_code = exec_command_parms(
                    [['/sbin/badblocks', '-v', info.deviceFile, '1000000']])

                qtde = e_str.split()[-4]

                if qtde != "trying" and int(qtde) > 0:
                    self._compat_res.append((
                        False,
                        u'HD incompatível com o Librix. %d setores defeituosos (bad blocks) encontrados'
                        % int(qtde)))
                else:
                    self._compat_res.append(
                        (True, u'HD compatível com o Librix.'))
Esempio n. 3
0
	def __guessBurnerType(self, deviceFile):
		"""
		Função que utiliza os dados fornecidos pelo teste informativo para identificar
		qual o tipo do gravador (ou se é só um leitor). Caso a informação não esteja
		disponível, a aplicação cdrecord é utilizada para tentar obtê-la.

		O retorno é a string 'DVDRW' ou 'CDRW', caso um gravador seja identificado, ou None,
		caso o dispositivo seja apenas um leitor.

		"""
		ret = None

		commands = []

		cmd_base = "cdrecord -prcap dev=%s | grep write | grep media | grep -v not" % deviceFile

		for cmd in cmd_base.split("|"):
			commands.append(prepare_command(cmd))

		cmd_awk = ['awk', '{print $3}']

		commands.append(cmd_awk)

		i, o_str, e_str, ret_code = exec_command_parms(commands)

		if(o_str.__contains__('DVD')):
			ret = 'DVDRW'
		elif(o_str.__contains__('CD')):
			ret = 'CDRW'

		return ret
Esempio n. 4
0
    def __checkLive(self):
        """Verifica se a execucao esta sendo feita a partir de um livecd, testando a existencia de alguma particao do
		tipo squashfs montada"""
        ret = False

        commands = [['mount'], ['awk', '{print $5}'], ['grep', 'squashfs']]

        i, o_str, e_str, ret_code = exec_command_parms(commands)

        if (o_str.__contains__('squashfs')):
            ret = True

        return ret
Esempio n. 5
0
	def __checkLive(self):
		"""Verifica se a execucao esta sendo feita a partir de um livecd, testando a existencia de alguma particao do
		tipo squashfs montada"""
		ret = False

		commands = [['mount'], ['awk', '{print $5}'], ['grep', 'squashfs']]

		i, o_str, e_str, ret_code = exec_command_parms(commands)

		if(o_str.__contains__('squashfs')):
			ret = True

		return ret
Esempio n. 6
0
	def compat(self, info_list):
		"""Executa o teste de compatibilidade como definido na RFQ07.B.'

		Parâmetro:
		info_list -- Lista contendo as informções detectadas para o HD (lista de 'InfoResHarddisk')

		Retorna uma lista contendo o resultado do teste e uma string de mensagem para cada dispositivo.
		"""
		self._compat_res = None

		if (info_list):
			self._compat_res = []

			for info in info_list:
				i, o_str, e_str, ret_code = exec_command_parms([['/sbin/badblocks', '-v', info.deviceFile, '1000000']])

				qtde = e_str.split()[-4]

				if qtde != "trying" and int(qtde) > 0:
					self._compat_res.append((False, u'HD incompatível com o Librix. %d setores defeituosos (bad blocks) encontrados' % int(qtde)))
				else:
					self._compat_res.append((True, u'HD compatível com o Librix.'))
Esempio n. 7
0
    def validateCurrentPage(self):
        """
		Função chamada por QWizard quando o usuario clica em Next ou Finish.
		Usada para validar a pagina atual.
		Se retornar True, a proxima pagina eh exibida; se retornar False, permanece na pagina atual.
		"""
        cur = self.currentId()
        ret = True

        if (not self.__canceled):
            if (cur == self.NUMBER):
                n = self.numberLineEdit.text()
                if (unicode(n).isdigit()):
                    self.NUMBER_OF_PORTS = int(n)
                    self.REMAINING_PORTS = int(n)
                    self.numberWarningLabel.hide()
                    ret = True

                    # ls /sys/bus/usb/devices/ --dired --ignore=usb* --ignore=*:* | grep - | sed :a;$!N;s/\\n/;/g;ta
                    #					cmd = [['ls', '/sys/bus/usb/devices/', '--dired', '--ignore=usb*', '--ignore=*:*'], ['grep', '-'], ['sed', ':a;$!N;s/\\n/;/g;ta']]
                    cmd = [[
                        'ls', '/sys/bus/usb/devices/', '--dired',
                        '--ignore=usb*', '--ignore=*:*'
                    ]]
                    i, o_str, e_str, returncode = exec_command_parms(cmd)
                    internal_devices = o_str.strip()
                    #					print "DEBUG: strip ", internal_devices
                    if internal_devices:
                        internal_devices = internal_devices.split()
                    self.internal_ports = internal_devices
#					print "DEBUG: internal ports ", self.internal_ports

                else:
                    self.numberWarningLabel.show()
                    self.numberLineEdit.setFocus()
                    ret = False
            elif (cur == self.INSERT):
                time.sleep(1)  #tempo para o SO reconhecer o device
                #				cmd = [['ls', '/sys/bus/usb/devices/', '--dired', '--ignore=usb*', '--ignore=*:*'], ['grep', '-'], ['sed', ':a;$!N;s/\\n/;/g;ta']]#, ["sed", ':a;$!N;s/\\n/; /g;ta']]
                cmd = [[
                    'ls', '/sys/bus/usb/devices/', '--dired', '--ignore=usb*',
                    '--ignore=*:*'
                ]]
                i, o_str, e_str, returncode = exec_command_parms(cmd)
                port = o_str.strip()
                ports = []
                if port:
                    ports = port.split()
#				print "DEBUG: ports ", ports

                def list_sub(a, b):
                    c = []
                    for i in a:
                        if i not in b:
                            c.append(i)
                    return c

                non_internal_ports = list_sub(ports, self.internal_ports)
                #				print "DEBUG: non_internal_ports ", non_internal_ports
                if len(non_internal_ports) == 0:
                    #					print "DEBUG: Nenhuma porta nova foi reconhecida"
                    msg = "Não foi possível reconhecer a porta onde o pen drive está inserido. \n\n\n Pressione <b>Avançar</b> para continuar."
                    self.messageLabel.setText(
                        QtGui.QApplication.translate(
                            "Wizard", msg, None,
                            QtGui.QApplication.UnicodeUTF8))
                    self.messageLabel.setTextFormat(QtCore.Qt.RichText)
                    self.FAILED_PORTS = self.FAILED_PORTS + 1
                    self.insertWarningLabel.setVisible(False)
                    ret = True
                    #failed ports + 1
                else:
                    non_visited_ports = list_sub(non_internal_ports,
                                                 self.visited_ports)
                    #					print "DEBUG: non_visited_ports", non_visited_ports
                    if len(non_visited_ports) == 0:
                        #						print "DEBUG: Porta já testada"
                        self.insertWarningLabel.setVisible(True)
                        ret = False
                    else:
                        if len(non_visited_ports) == 1:
                            port = non_visited_ports[0]

                            self.visited_ports.append(port)
                            self.SUCCESSFUL_PORTS = self.SUCCESSFUL_PORTS + 1

                            msg = "Teste realizado com sucesso. \n\nPressione <b>Avançar</b> para continuar."
                            self.messageLabel.setText(
                                QtGui.QApplication.translate(
                                    "Wizard", msg, None,
                                    QtGui.QApplication.UnicodeUTF8))
                            self.messageLabel.setTextFormat(QtCore.Qt.RichText)
                            self.insertWarningLabel.setVisible(False)
                            ret = True
                        else:
                            #							print "DEBUG: Comportamento indesejado"
                            pass


#				print "DEBUG:", port, self.visited_ports, self.internal_ports

            elif (cur == self.MESSAGE):
                if (self.REMAINING_PORTS > 0):
                    self.back()
                    self.back()
            else:
                pass

        return ret
	def validateCurrentPage(self):
		"""
		Função chamada por QWizard quando o usuario clica em Next ou Finish.
		Usada para validar a pagina atual.
		Se retornar True, a proxima pagina eh exibida; se retornar False, permanece na pagina atual.
		"""
		cur = self.currentId()
		ret = True

		if (not self.__canceled):
			if (cur == self.NUMBER):
				n = self.numberLineEdit.text()
				if (unicode(n).isdigit()):
					self.NUMBER_OF_PORTS = int(n)
					self.REMAINING_PORTS = int(n)
					self.numberWarningLabel.hide()
					ret = True

					# ls /sys/bus/usb/devices/ --dired --ignore=usb* --ignore=*:* | grep - | sed :a;$!N;s/\\n/;/g;ta 
#					cmd = [['ls', '/sys/bus/usb/devices/', '--dired', '--ignore=usb*', '--ignore=*:*'], ['grep', '-'], ['sed', ':a;$!N;s/\\n/;/g;ta']]
					cmd = [['ls', '/sys/bus/usb/devices/', '--dired', '--ignore=usb*', '--ignore=*:*']]
					i, o_str, e_str, returncode = exec_command_parms(cmd)
					internal_devices = o_str.strip()
#					print "DEBUG: strip ", internal_devices
					if internal_devices:
						internal_devices = internal_devices.split()
					self.internal_ports = internal_devices
#					print "DEBUG: internal ports ", self.internal_ports

				else:
					self.numberWarningLabel.show()
					self.numberLineEdit.setFocus()
					ret = False
			elif (cur == self.INSERT):
				time.sleep(1) #tempo para o SO reconhecer o device
#				cmd = [['ls', '/sys/bus/usb/devices/', '--dired', '--ignore=usb*', '--ignore=*:*'], ['grep', '-'], ['sed', ':a;$!N;s/\\n/;/g;ta']]#, ["sed", ':a;$!N;s/\\n/; /g;ta']]
				cmd = [['ls', '/sys/bus/usb/devices/', '--dired', '--ignore=usb*', '--ignore=*:*']]
				i, o_str, e_str, returncode = exec_command_parms(cmd)
				port = o_str.strip()
				ports = []
				if port:
					ports = port.split()
#				print "DEBUG: ports ", ports

				def list_sub(a, b):
					c = []
					for i in a:
						if i not in b:
							c.append(i)
					return c

				non_internal_ports = list_sub(ports, self.internal_ports)
#				print "DEBUG: non_internal_ports ", non_internal_ports
				if len(non_internal_ports) == 0:
#					print "DEBUG: Nenhuma porta nova foi reconhecida"
					msg = "Não foi possível reconhecer a porta onde o pen drive está inserido. \n\n\n Pressione <b>Avançar</b> para continuar."
					self.messageLabel.setText(QtGui.QApplication.translate("Wizard", msg, None, QtGui.QApplication.UnicodeUTF8))
					self.messageLabel.setTextFormat(QtCore.Qt.RichText)
					self.FAILED_PORTS = self.FAILED_PORTS + 1
					self.insertWarningLabel.setVisible(False)
					ret = True
					#failed ports + 1
				else:
					non_visited_ports = list_sub(non_internal_ports, self.visited_ports)
#					print "DEBUG: non_visited_ports", non_visited_ports
					if len(non_visited_ports) == 0:
#						print "DEBUG: Porta já testada"
						self.insertWarningLabel.setVisible(True)
						ret = False
					else:
						if len(non_visited_ports) == 1:
							port = non_visited_ports[0]

							self.visited_ports.append(port)
							self.SUCCESSFUL_PORTS = self.SUCCESSFUL_PORTS + 1

							msg = "Teste realizado com sucesso. \n\nPressione <b>Avançar</b> para continuar."
							self.messageLabel.setText(QtGui.QApplication.translate("Wizard", msg, None, QtGui.QApplication.UnicodeUTF8))
							self.messageLabel.setTextFormat(QtCore.Qt.RichText)
							self.insertWarningLabel.setVisible(False)
							ret = True
						else:
#							print "DEBUG: Comportamento indesejado"
							pass

#				print "DEBUG:", port, self.visited_ports, self.internal_ports

			elif (cur == self.MESSAGE):
				if (self.REMAINING_PORTS > 0):
					self.back()
					self.back()
			else:
				pass

		return ret