[GELÖST] DELL BIOS-Setup-Paket

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
seb b
Nachrichten: 23
Anmeldung: 26. Oktober 2017 - 15:12 Uhr

17. Dezember 2019 – 15:35 Uhr

Hallo zusammen,

Ich versuche, mit dem cctk-Tool von DELL ein Konfigurationspaket für das UEFI-BIOS zu erstellen.
Manche Computer sind durch ein BIOS-Passwort geschützt, andere nicht. Da wir nicht möchten, dass BIOS-Passwörter im Klartext übertragen werden, habe ich mit CCT zwei ausführbare Dateien erstellt: eine zum Entfernen des Passworts und eine zum Zurücksetzen.

Ich möchte in meinem WAPT-Paket folgende Schritte befolgen:
  • Prüfen Sie, ob ein Passwort festgelegt ist
  • Falls ja, führen Sie die ausführbare Datei aus, die es löscht
  • Die vorgegebenen Änderungen vornehmen
  • Starten Sie die ausführbare Datei, die das Passwort zurücksetzt
Die einzige Möglichkeit, die ich gefunden habe, um zu überprüfen, ob ein Passwort gesetzt ist, besteht darin, in cctk mit einem falschen Passwort einen Fehler zu verursachen; dann erhalte ich einen Rückgabecode, der mir mitteilt, ob ein Passwort gesetzt ist oder nicht.
Mein Problem ist, dass ich diesen Rückgabecode nicht erfassen kann.

Wenn ich meine Bestellung aufgebe:

Code: Alle auswählen

run (r'"C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd'")
Ich habe eine CalledProcessErrorOutput-Methode (normal), die diesen Rückgabecode anzeigt

Code: Alle auswählen

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.
Ich möchte diesen Exit-Code (in meinem Fall 58 und 106) abrufen können, um meine erste Bedingung überprüfen zu können.

Ich habe versucht, den Rückgabewert des Befehls in einem try/except-Block abzufangen. In PyScripter funktioniert das einwandfrei, aber auf den Clients lässt sich damit kein Paket starten.

Code: Alle auswählen

# -*- 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()
    
In der PyScripter-Umgebung wird beim Starten der Ausführungskonfiguration "install" der Wert True oder False sowie der entsprechende Rückgabecode korrekt angezeigt.

Code: Alle auswählen

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
True
Sobald das Paket im Repository vorhanden und auf einem Testrechner bereitgestellt ist, erhalte ich folgende Fehlermeldung:

Code: Alle auswählen

UnboundLocalError: local variable 'cctkerrorcode' referenced before assignment
Ich habe versucht, die Variable cctkerrorcode am Anfang der Funktion ispwddefined() zu definieren, und hier ist etwas noch Merkwürdigeres: Das Paket wird erfolgreich installiert, und das Ergebnis lautet:

Code: Alle auswählen

NumLock=Enabled

None
Ich habe den Eindruck, dass er in diesem Fall den cctk-Fehler nicht sieht...

Ich muss zugeben, dass ich langsam nicht mehr das umsetze, was ich eigentlich kann...

Weiß jemand, wie man Rückgabecodes auf einfachere Weise erfassen kann?

Vielen Dank im Voraus für Ihre Hilfe.

Seb.
seb b
Nachrichten: 23
Anmeldung: 26. Oktober 2017 - 15:12 Uhr

17. Dezember 2019 – 15:46 Uhr

Hallo nochmal,

Ich gieße Öl ins Feuer und entschuldige mich im Voraus...

Ich habe es gerade getestet, indem ich den Befehl ausgeführt habe, der einen Fehler auslösen sollte. Dabei habe ich angegeben, dass er den Rückgabecode 58 akzeptieren soll (ein Passwort ist definiert, Sie haben aber nicht das richtige angegeben). Es gab jedoch keinen Fehler. Der Rückgabecode, den ich abrufen möchte, wird tatsächlich vom Befehl „run“ zurückgegeben. Kann man diesen Code (einfach) in einer Variablen speichern?

Code: Alle auswählen

run (r'"C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd', accept_returncodes=[0,58])
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

17. Dezember 2019 – 15:54 Uhr

Der Befehl `run` gibt eine leicht angereicherte Zeichenkette zurück...
Das Attribut „returncode“ gibt den Rückgabecode an.

Code: Alle auswählen

result = run (r'"C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd'")
if result.returncode == 58:
    print('Probleme mot de passe')
seb b
Nachrichten: 23
Anmeldung: 26. Oktober 2017 - 15:12 Uhr

17. Dezember 2019 – 16:12 Uhr

DANKE!

Leider scheint das Ergebnis von `run` kein Objekt, sondern Unicode zu sein (ich gebe zu, ich bin mir meiner Terminologie nicht ganz sicher) :Hoppla: ).

Code: Alle auswählen

AttributeError: 'unicode' object has no attribute 'returncode'
Ich habe versucht, den Befehl „run“ direkt auszugeben, mit genau demselben Ergebnis.

Code: Alle auswählen

print (run (r'"C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd', accept_returncodes=[0,58]).returncode)
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

17. Dezember 2019 – 19:04 Uhr

Mit wapt 1.7.4 ist es Unicode angereichert mit dem Attribut...
Welche Version haben Sie?
Ruhige IT
seb b
Nachrichten: 23
Anmeldung: 26. Oktober 2017 - 15:12 Uhr

18. Dezember 2019 – 8:10 Uhr

Hallo,

wir verwenden Version 1.7.4.6229.
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

18. Dezember 2019 - 09:32 Uhr

Ich sehe das Problem...
Der Befehl `run` in der Wapt-Klasse (der in der `install`-Funktion des Pakets verfügbar ist) wurde so geändert, dass er Unicode zurückgibt (aus undurchsichtigen Gründen der Abwärtskompatibilität)
Der Befehl setuphelpers.run gibt jedoch entweder Unicode oder Bytes (rohe Zeichenkettenausgabe des gestarteten Befehls) mit dem Attribut returncode zurück, je nachdem, ob der gestartete Befehl in Unicode oder Bytes vorliegt.

https://github.com/tranquilit/WAPT/blob ... rs.py#L949

https://github.com/tranquilit/WAPT/blob ... s.py#L1075

In Ihrem Fall sollten Sie daher die direkte Ausführungsfunktion von setuphelpers verwenden:

Code: Alle auswählen

import setuphelpers

def install():
    result = setuphelpers.run (r'"C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" --numlock=enabled --valsetuppwd=impossiblepasswd'")
    if result.returncode == 58:
        print('Probleme mot de passe')
Ruhige IT
seb b
Nachrichten: 23
Anmeldung: 26. Oktober 2017 - 15:12 Uhr

18. Dezember 2019 - 10:07 Uhr

Super!

Es funktioniert, vielen Dank!
Jetzt muss ich nur noch den Rest des Pakets bearbeiten.

Nochmals vielen Dank!
Gälen
Nachrichten: 254
Anmeldung: 22. November 2015 - 08:37 Uhr

29. November 2023 – 16:21 Uhr

Guten Morgen,
Ich versuche dasselbe wie „Seb b“, kann aber den Rückgabewert nicht mit `result.returncode` abrufen. Ich vermute, die Installation stürzt beim ersten Start mit den unten stehenden Fehlern ab. Wenn das eingegebene Passwort mit dem BIOS-Passwort übereinstimmt, zeigt das Skript „Rückgabewert = 0“ an.
Dell BIOS-Setup mit
Fehler bei der Installation von ['dst-Bios_DELL_Update-wapt']: Fehler in Paketen [[PackageRequest(package='dst-Bios_DELL_Update-wapt',architectures=['x64'],locales=['fr'],maturities=['PROD', 'DEV'],tags=['windows-10', 'win-10', 'w-10', 'windows10', 'win10', 'w10', 'windows', 'win', 'w'], min_os_version=Version('10.0.22621'), max_os_version=Version('10.0.22621')), PackageEntry('dst-Bios_DELL_Update-wapt','1.0.0-62' maturity='DEV'), 'Traceback (most recent call last):\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 5192, in install\n result = self.install_wapt(p.localpath,\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 4176, in install_wapt\n raise e\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 4083, in install_wapt\n exitstatus = setup.install()\n Datei "C:\\Windows\\TEMP\\waptpzh4plq3\\setup.py", Zeile 16, in install\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 3860, in run\n return ensure_unicode(run(*arg, pidlist=self.pidlist,**args))\n Datei "C:\\Program Files (x86)\\wapt\\waptutils.py", Zeile 2118, in run\n raise CalledProcessErrorOutput(proc.returncode, cmd, \'\'.join(output))\nwaptutils.CalledProcessErrorOutput: Der Befehl \'"C:\\\\Program Files (x86)\\\\Dell\\\\Command Configure\\\\X86_64\\\\cctk.exe" -i cctk.ini --valsetuppwd=password -lc:\\\\dell_cctk.log\' hat den Exit-Status 58 zurückgegeben.\nAusgabe:CCTKAppEngVer=4.10.1.11\r\n\r\nDas angegebene Setup-Passwort ist falsch. Bitte versuchen Sie es erneut.\r\n\n']]
Traceback (letzter Aufruf):
Datei "C:\Program Files (x86)\wapt\waptservice\service.py", Zeile 1910, in run
self.running_task.run()
Datei "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", Zeile 716, in run
self._run()
Datei "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", Zeile 1288, in _run
raise Exception(_('Fehler bei der Installation von {}: Fehler in Paketen {}').format(
Ausnahme: Fehler bei der Installation von ['dst-Bios_DELL_Update-wapt']: Fehler in Paketen [[PackageRequest(package='dst-Bios_DELL_Update-wapt',architectures=['x64'],locales=['fr'],maturities=['PROD', 'DEV'],tags=['windows-10', 'win-10', 'w-10', 'windows10', 'win10', 'w10', 'windows', 'win', 'w'],min_os_version=Version('10.0.22621'),max_os_version=Version('10.0.22621')), PackageEntry('dst-Bios_DELL_Update-wapt','1.0.0-62' maturity='DEV'), 'Traceback (most recent call last):\n File "C:\\Program Files (x86)\wapt\common.py", line 5192, in install\n result = self.install_wapt(p.localpath,\n File "C:\\Program Files (x86)\\wapt\\common.py", line 4176, in install_wapt\n raise e\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 4083, in install_wapt\n exitstatus = setup.install()\n Datei "C:\\Windows\\TEMP\\waptpzh4plq3\\setup.py", Zeile 16, in install\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 3860, in run\n return ensure_unicode(run(*arg, pidlist=self.pidlist,**args))\n Datei "C:\\Program Files (x86)\\wapt\\waptutils.py", Zeile 2118, in run\n raise CalledProcessErrorOutput(proc.returncode, cmd, \'\'.join(output))\nwaptutils.CalledProcessErrorOutput: Der Befehl \'"C:\\\\Program Files (x86)\\\\Dell\\\\Command Configure\\\\X86_64\\\\cctk.exe" -i cctk.ini --valsetuppwd=password -lc:\\\\dell_cctk.log\' hat den Exit-Status 58 zurückgegeben.\nOutput:CCTKAppEngVer=4.10.1.11\r\n\r\nDas angegebene Setup-Passwort ist falsch. Bitte versuchen Sie es erneut.\r\n\n']]

Ausnahme: Fehler bei der Installation von ['dst-Bios_DELL_Update-wapt']: Fehler in Paketen [[PackageRequest(package='dst-Bios_DELL_Update-wapt',architectures=['x64'],locales=['fr'],maturities=['PROD', 'DEV'],tags=['windows-10', 'win-10', 'w-10', 'windows10', 'win10', 'w10', 'windows', 'win', 'w'], min_os_version=Version('10.0.22621'), max_os_version=Version('10.0.22621')), PackageEntry('dst-Bios_DELL_Update-wapt','1.0.0-62' maturity='DEV'), 'Traceback (most recent call last):\n File "C:\\Program Files (x86)\\wapt\\common.py", line 5192, in install\n result = self.install_wapt(p.localpath,\n Datei "C:\\Program Files (x86)\wapt\common.py", Zeile 4176, in install_wapt\n raise e\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 4083, in install_wapt\n exitstatus = setup.install()\n Datei "C:\\Windows\\TEMP\\waptpzh4plq3\\setup.py", Zeile 16, in install\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 3860, in run\n return ensure_unicode(run(*arg, pidlist=self.pidlist,**args))\n Datei "C:\\Program Files (x86)\\wapt\\waptutils.py", Zeile 2118, in run\n raise CalledProcessErrorOutput(proc.returncode, cmd, \'\'.join(output))\nwaptutils.CalledProcessErrorOutput: Der Befehl \'"C:\\\\Program Files (x86)\\\\Dell\\\\Command Configure\\\\X86_64\\\\cctk.exe" -i cctk.ini --valsetuppwd=password -lc:\\\\dell_cctk.log\' hat den Exit-Status 58 zurückgegeben.\nAusgabe:CCTKAppEngVer=4.10.1.11\r\n\r\nDas angegebene Setup-Passwort ist falsch. Bitte versuchen Sie es erneut.\r\n\n']]
Traceback (letzter Aufruf):
Datei "C:\Program Files (x86)\wapt\waptservice\service.py", Zeile 1910, in run
self.running_task.run()
Datei "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", Zeile 716, in run
self._run()
Datei "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", Zeile 1288, in _run
raise Exception(_('Fehler bei der Installation von {}: Fehler in Paketen {}').format(
Ausnahme: Fehler bei der Installation von ['dst-Bios_DELL_Update-wapt']: Fehler in Paketen [[PackageRequest(package='dst-Bios_DELL_Update-wapt',architectures=['x64'],locales=['fr'],maturities=['PROD', 'DEV'],tags=['windows-10', 'win-10', 'w-10', 'windows10', 'win10', 'w10', 'windows', 'win', 'w'],min_os_version=Version('10.0.22621'),max_os_version=Version('10.0.22621')), PackageEntry('dst-Bios_DELL_Update-wapt','1.0.0-62' maturity='DEV'), 'Traceback (most recent call last):\n File "C:\\Program Files (x86)\\wapt\\common.py", line 5192, in install\n result = self.install_wapt(p.localpath,\n File "C:\\Program Files (x86)\\wapt\\common.py", line 4176, in install_wapt\n raise e\n File "C:\\Program Files (x86)\\wapt\\common.py", Zeile 4083, in install_wapt\n exitstatus = setup.install()\n Datei "C:\\Windows\\TEMP\\waptpzh4plq3\\setup.py", Zeile 16, in install\n Datei "C:\\Program Files (x86)\\wapt\\common.py", Zeile 3860, in run\n return ensure_unicode(run(*arg, pidlist=self.pidlist,**args))\n Datei "C:\\Program Files (x86)\\wapt\\waptutils.py", Zeile 2118, in run\n raise CalledProcessErrorOutput(proc.returncode, cmd, \'\'.join(output))\nwaptutils.CalledProcessErrorOutput: Befehl \'"C:\\\\Program Files (x86)\\\\Dell\\\\Command Der Befehl "Configure\\\\X86_64\\\\cctk.exe" -i cctk.ini --valsetuppwd=password -lc:\\\\dell_cctk.log\" lieferte den Exit-Status 58 zurück.\nAusgabe:CCTKAppEngVer=4.10.1.11\r\n\r\nDas angegebene Setup-Passwort ist falsch. Bitte versuchen Sie es erneut.

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
cctk_binaries = makepath(programfiles32,'Dell','Command Configure','X86_64','cctk.exe')

def install():
    import wmi
    c = wmi.WMI()
    for computersystem in c.Win32_ComputerSystem():
        if(computersystem.Manufacturer == "Dell Inc."):
            if(isfile(cctk_binaries)):
                print(r'Configuration BIOS Dell avec pass')
                result = run (r'"%s" -i cctk.ini --valsetuppwd=password -l c:\dell_cctk.log' %cctk_binaries)
                print(f"Code retour = {result.returncode}.")
                if result.returncode == 58:
                    print(r"Le mot de passe BIOS n'est pas le pass habituel !")
                if result.returncode == 106:
                    print(r"Le mot de passe BIOS est vide, tentative d'ajout du mot de passe")
                    run (r'"%s" -i cctk.ini --setuppwd=password  ' %cctk_binaries)
                    print(r'Configuration BIOS Dell avec pass')
                    run (r'"%s" -i cctk.ini --valsetuppwd=password  -l c:\dell_cctk.log' %cctk_binaries)
                else:
                    print(r"Resultat de la config CCTK ok")
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

29. November 2023 – 22:45 Uhr

Die Fehlermeldung in Ihrem Fall lautet: Das angegebene Setup-Passwort ist falsch. Bitte versuchen Sie es erneut mit dem Exit-Code 58

Wenn Sie also den Fehlercode 58 abfangen möchten, empfehle ich die Verwendung von accept_returncodes:

Code: Alle auswählen

result = run (r'"%s" -i cctk.ini --valsetuppwd=password -l c:\dell_cctk.log' %cctk_binaries,accept_returncodes=[0, 3010,58])
if result.returncode = 58:
    print(r"Le mot de passe de configuration fourni est incorrect")
oder um auf Fehler umzuschalten:

Code: Alle auswählen

result = run (r'"%s" -i cctk.ini --valsetuppwd=password -l c:\dell_cctk.log' %cctk_binaries,accept_returncodes=[0, 3010,58])
if result.returncode = 58:
    error(r"Le mot de passe de configuration fourni est incorrect")
Gesperrt