Il PC si spegne prima che gli script siano completati

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
Avatar utente
Radice
Messaggi: 10
Iscrizioni: 2 agosto 2017 - ore 14:05

2 agosto 2017 - 14:23

Buongiorno,
Utilizzo uno script Python per avviare altri script (spesso file batch o ps1).
Nel mio pacchetto, setup.py termina con l'istruzione:

Codice: Seleziona tutto

os.system("cd C:\dossier0\dossier1 && start setup.bat")
Nella mia mazza lancio comandi wmic (disinstalla) e utilizzo altre funzioni che potrebbero richiedere del tempo per essere completate.

La mia domanda è: come posso impedire a Wapt di spegnere il computer prima che l'elaborazione batch sia completata? Come posso far capire a Wapt che il lavoro non è terminato e che deve attendere prima di spegnersi?

Ho pensato di usare `time.sleep(10)`... ma beh, non è molto... pulito :ugeek: Inoltre, lo script non impiega la stessa quantità di tempo su ogni macchina.

A proposito:
Ho scoperto WAPT durante i miei studi, mentre cercavo un software di distribuzione; lo uso sul mio computer personale e, da quest'anno, anche nell'azienda in cui lavoro! È un prodotto eccellente.
Vorrei anche sapere dove posso segnalare problemi relativi ai miei pacchetti o al mio utilizzo.

MODIFICA: Ops, forum sbagliato
Avatar utente
agauvrit
Esperto WAPT
Messaggi: 238
Registrazione: 17 nov 2016 - 10:25
Posizione: Nantes
Contatto:

2 agosto 2017 - 17:20

Argomento spostato.

Riguardo alla tua domanda: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Per la tua funzione, potresti scriverla così:

Codice: Seleziona tutto

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Buon sviluppo del pacchetto!
Avatar utente
Radice
Messaggi: 10
Iscrizioni: 2 agosto 2017 - ore 14:05

3 agosto 2017 - 09:13

agauvrit ha scritto: 2 agosto 2017 - 17:20 Argomento spostato.

Riguardo alla tua domanda: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Per la tua funzione, potresti scriverla così:

Codice: Seleziona tutto

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Buon sviluppo del pacchetto!
Buongiorno,
Grazie per la risposta. Proverò la tua soluzione nel prossimo aggiornamento del mio pacchetto.

Sto pensando di abbandonare l'elaborazione batch e di riscrivere il mio script in Python, ma temo che incontrerò lo stesso problema se terminerò il mio script Python con:
os.popen('prodotto wmic dove name="SoftwareName" chiama disinstallazione')
Buona giornata
swbsf
Messaggi: 8
Registrazione: 27 luglio 2017 - 09:50

4 agosto 2017 - 10:25

CIAO,
Lo uso con successo:

Codice: Seleziona tutto

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
        proc.wait()
La funzione `proc.wait()` funziona bene nel mio caso, poiché riavvia anche la macchina al termine del processo. Ovviamente, devi importare `subprocess`. E sostituire `cmd` con il tuo comando, qualunque esso sia.
La soluzione timeout=xxx è imperfetta; è ideale per.. condizione di gara.
Avatar utente
Radice
Messaggi: 10
Iscrizioni: 2 agosto 2017 - ore 14:05

10 agosto 2017 - 11:43

swbsf ha scritto: 4 agosto 2017 - 10:25 CIAO,
Lo uso con successo:

Codice: Seleziona tutto

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
        proc.wait()
La funzione `proc.wait()` funziona bene nel mio caso, poiché riavvia anche la macchina al termine del processo. Ovviamente, devi importare `subprocess`. E sostituire `cmd` con il tuo comando, qualunque esso sia.
La soluzione timeout=xxx è imperfetta; è ideale per.. condizione di gara.
Grazie, ho provato con proc.wait() e funziona bene
Bloccato