Ausgabe von subprocess run vollständig

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
nieselfriem
User
Beiträge: 135
Registriert: Sonntag 13. Januar 2013, 16:00

Hallo zusammen

In einem Script, das mit aller Regelmäßigkeit gestartet wird, starte ich eine Javaprozess um eine CSV an ein URL hochzuladen. Dazu starte ich den Prozess wie folgt

Code: Alles auswählen

 out = subprocess.run(['java', '-jar', 'uploadtool.jar', '-H', 'https://URL.de/', '-U',
                              user_name, '-P', passwort , '-M', 'Listen', '-p', '"Infos"', '-v',
                              doc_id, file_name], check=True, stdout=subprocess.PIPE, universal_newlines=True)
dieser Prozess schlägt ab und zu leider fehl und Subprozess zeigt mir leider nur von der Ausgabe eine gekürzte Fassung der Ausgabe vom diesem Java-Tool.

Ich sehe dann halt nur

Code: Alles auswählen

"INFO  de.uploadtool - have 1 projects\nINFO  de.uploadtool - have 1 files\nERROR d... " 
Wie komme ich an die vollständige Ausgabe, damit ich raus finde was das Tool für ein Problem hat?
Hier mal die vollständige Ausgabe

Code: Alles auswählen

subprocess.CalledProcessError: Command '['java', '-jar', 'uploadtool.jar', '-H', 'https://url.de/', '-U', 'username', '-P', 'geheimespasswort', '-M', 'Liste', '-p', '"System"', '-v', 'docf964671', 'liste_26_1_2021_11_25.csv']' returned non-zero exit status 2.
2021-01-26T11:26:43.204343+0100 An error has been caught in function '<module>', process 'MainProcess' (1), thread 'MainThread' (140533234947968):
Traceback (most recent call last):
> File "//listenexport.py", line 439, in <module>
    main()
    └ <function main at 0x7fd066bb8158>
  File "//listenexport.py", line 426, in main
    upload_code = upload_to_host(file_name, args.pos)
                  │             │          │    └ 'musterstadt'
                  │             │          └ Namespace(output='/', pos='musterstadt')
                  │             └ '/liste_26_1_2021_11_25.csv'
                  └ <function upload_to_host at 0x7fd066bb5400>
  File "//listenexport.py", line 297, in upload_to_host
    doc_id, file_name], check=True, stdout=subprocess.PIPE, universal_newlines=True)
    │       │                              │          └ -1
    │       │                              └ <module 'subprocess' from '/opt/rh/rh-python36/root/usr/lib64/python3.6/subprocess.py'>
    │       └ 'liste_26_1_2021_11_25.csv'
    └ 'docf964671'
  File "/opt/rh/rh-python36/root/usr/lib64/python3.6/subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
           │              └ None
           └ 'INFO  de.uploadtool - have 1 projects\nINFO  de.uploadtool - have 1 files\nERROR d... 
subprocess.CalledProcessError: Command '['java', '-jar', 'uploadtool.jar', '-H', 'https://url/', '-U', 'username', '-P', 'geheimespasswort', '-M', 'liste', '-p', '"System"', '-v', 'docf964671', 'liste_26_1_2021_11_25.csv']' returned non-zero exit status 2.
VG Georg
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich frage jetzt nicht, warum man zum Upload java braucht.

Die Exception, die Du bekommst, hat Attribute, die stdout enthalten, obwohl im Fehlerfall wohl stderr interessanter wäre?
Benutzeravatar
nieselfriem
User
Beiträge: 135
Registriert: Sonntag 13. Januar 2013, 16:00

Ich frage jetzt nicht, warum man zum Upload java braucht.
Weil die API der URL leider sehr kompliziert ist, das Tool dafür verwendet werden muss und es nicht einfach nur ein Upload ist dorthin hist.

Code: Alles auswählen

Die Exception, die Du bekommst, hat Attribute, die stdout enthalten, obwohl im Fehlerfall wohl stderr interessanter wäre?
STERR ist in diesem Fall leer und es steht was im stdout

Code: Alles auswählen

   output=stdout, stderr=stderr)
           │              └ None
           └ 'INFO  de.uploadtool - have 1 projects\nINFO  de.uploadtool - have 1 files\nERROR d... 

VG Georg
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@nieselfriem: Die Antwort von Sirius3 bleibt im Grunde die gleiche: Die Ausnahme behandeln und da dann halt die Standardausgabe abfragen wenn die die Informationen enthält.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten