[RESUELTO] Paquete de configuración del BIOS de DELL
Publicado: 17 de diciembre de 2019 - 15:35
Hola a todos,
Estoy intentando crear un paquete de configuración para DELL UEFI BIOS usando su herramienta cctk.
Algunas computadoras tienen contraseña de BIOS, otras no. Tampoco queremos que las contraseñas de BIOS se transmitan en texto plano, así que generé ejecutables con CCT: uno que elimina la contraseña y otro que la restablece.
Me gustaría seguir estos pasos en mi paquete WAPT:
Mi problema es que no puedo capturar este código de retorno.
Cuando hago mi pedido:
Tengo un CalledProcessErrorOutput (normal) que muestra este código de retorno
Me gustaría poder recuperar este código de salida (58 y 106 en mi caso específico) para poder verificar mi primera condición.
Probé un try/except en el comando para capturar el código de retorno, funciona muy bien en pyscripter pero es imposible iniciar un paquete en los clientes.
En el entorno de PyScripter, al iniciar la configuración de ejecución "install" se muestra correctamente el valor Verdadero o Falso, así como el código de retorno correspondiente.
Una vez que el paquete está en el repositorio y se implementa en una máquina de prueba, aparece este error:
Intenté definir la variable cctkerrorcode al comienzo de la función ispwddefined(), y aquí hay algo aún más curioso: el paquete es exitoso y el resultado es:
Tengo la impresión que en este caso no ve el error cctk...
Debo admitir que estoy empezando a quedarme corto en lo que sé hacer...
¿Alguien sabe cómo capturar códigos de retorno de una manera más básica?
Gracias de antemano por su ayuda.
Seb.
Estoy intentando crear un paquete de configuración para DELL UEFI BIOS usando su herramienta cctk.
Algunas computadoras tienen contraseña de BIOS, otras no. Tampoco queremos que las contraseñas de BIOS se transmitan en texto plano, así que generé ejecutables con CCT: uno que elimina la contraseña y otro que la restablece.
Me gustaría seguir estos pasos en mi paquete WAPT:
- Compruebe si la contraseña está configurada
- Si es así, ejecute el ejecutable que lo elimina
- realizar los cambios programados
- Ejecute el ejecutable que restablece la contraseña
Mi problema es que no puedo capturar este código de retorno.
Cuando hago mi pedido:
Código: Seleccionar todo
run (r'"C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd'")Código: Seleccionar todo
Traceback (most recent call last):
File "C:\Program Files (x86)\wapt\common.py", line 3851, in install_wapt
exitstatus = setup.install()
File "C:\waptdev\iut-dell-bios-configuration-wapt\setup.py", line 39, in install
run (r'"C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd', return_stderr=errlist, accept_returncodes=[0,3])
File "C:\Program Files (x86)\wapt\common.py", line 3630, in run
return ensure_unicode(setuphelpers.run(*arg,pidlist=self.pidlist,**args))
File "C:\Program Files (x86)\wapt\setuphelpers.py", line 1066, in run
raise CalledProcessErrorOutput(proc.returncode,cmd,''.join(output+return_stderr))
CalledProcessErrorOutput: Command '"C:\\Program Files (x86)\\Dell\\Command Configure\\X86_64\\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd' returned non-zero exit status 58.
Output:
The setup password provided is incorrect. Please try again.Probé un try/except en el comando para capturar el código de retorno, funciona muy bien en pyscripter pero es imposible iniciar un paquete en los clientes.
Código: Seleccionar todo
# -*- coding: utf-8 -*-
from setuphelpers import *
import subprocess
uninstallkey = []
def ispwddefined():
try:
print (subprocess.check_output(["C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe", "--numlock=enabled", "--valsetuppwd=impossiblepasswd "]).decode())
except subprocess.CalledProcessError, e:
cctkerrorcode = e.returncode
print cctkerrorcode
if (cctkerrorcode == 58):
print "password configured"
return True;
elif(cctkerrorcode == 106):
print ("no password configured")
return False
def install():
print ispwddefined()
Código: Seleccionar todo
Ligne de Commande : install "C:\waptdev\iut-dell-bios-configuration-wapt\WAPT\.."
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
Installing WAPT files C:\waptdev\iut-dell-bios-configuration-wapt
58
password configured
TrueCódigo: Seleccionar todo
UnboundLocalError: local variable 'cctkerrorcode' referenced before assignmentCódigo: Seleccionar todo
NumLock=Enabled
NoneDebo admitir que estoy empezando a quedarme corto en lo que sé hacer...
¿Alguien sabe cómo capturar códigos de retorno de una manera más básica?
Gracias de antemano por su ayuda.
Seb.