Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apache Error: (OS 193)%1 ist keine zulässige Win32-Anwendung. #64

Open
GIS-Norderstedt opened this issue Mar 10, 2022 · 3 comments
Open

Comments

@GIS-Norderstedt
Copy link

GIS-Norderstedt commented Mar 10, 2022

Hallo,

danke für die ausführlichen Antworten. Leider funktioniert es immer noch nicht. :/

Also nochmal step by step:

    • Testen, ob das CLI-Tool läuft:

$ echo "192.168.0.123" | anonip.py
192.168.0.0

Der Befehl echo funktioniert ja so bei Windows nicht. Was aber funktioniert ist:

C:\Apache24\Anonip-main>python anonip.py --input test.log
10.xxx.xxx.0 [11/Jan/2022:09:06:26 +0100] "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62"
10.xxx.xxx.0 [11/Jan/2022:09:06:26 +0100] "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62"

Die IP Adresse wird hier anonymisiert. Das Skript läuft also durch. Die anonymisierten IP-Adressen werden aber nicht in die test.log geschrieben, sondern lediglich in der Konsole ausgegeben.

    • In der Apache-config den vollen Pfad zu Anonip angeben.

Hab ich gemacht. Bringt nix.

    • In der Apache-config das Python-executable explizit angeben. "(OS
      193)%1 ist keine zulässige Win32-Anwendung." deutet darauf hin, dass das was bringen könnte:

CustomLog "|/usr/bin/python3.10 Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

Da verstehe ich nicht, was das bringen soll, bzw. ich verstehe nicht, warum hinte python 3.10 kein "/" kommt. Letztenendes würde die Anonip ja dann nur in einem anderen Ordner liegen. Pyhton ist global für alle User installiert, da ich Admin-Rechte habe.

Ich habe es also so probiert:

CustomLog "C:/Program Files (x86)/Python37-32 Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

=> bringt auch nichts, da gibt es nichtmal eine Fehlermeldung im error.log

    • Ein VirtualEnv einrichten und dann das Python-executable dieses VirtualEnvs angeben:

CustomLog "|/path/to/virtualenv/bin/python3.10 Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

Weiß nicht, wie das gehen soll, bzw. Python ist ja sowieso global installiert, Umgebungsvariable gesetzt und es müsste also so laufen.

    • A shot in the dark: Ev. ist's ein Architektur-mismatch. 64-bit Python oder so.

Wie gesagt, habe Python in 32 und 64 bit probiert. Der Server ist ein 64 bit Server, Apache als 64 bit Version installiert.

    • Anonip Version(en): 1.0.0 und 1.1.0
  • Python Version(en): Python37-32, Python37 als 64 bit, python 3.8.8

  • OS Version: Windows Server 2016 Standard, Version 1607

  • Apache Version:

C:\Apache24\bin>httpd -v
Server version: Apache/2.4.41 (Win64)
Apache Lounge VS16 Server built: Aug 9 2019 16:46:32

  1. Kannst Du unter apache einen Aufruf machen auf "C:\irgendow\phyton.EXE c:\hier\anonip.py" ?

Das verstehe ich nicht.

@open-dynaMIX
Copy link
Member

Hallo

Ich kann habe keinen Zugriff auf ein Windowssystem, geschweige denn die Expertise und kann das daher nicht reproduzieren. Daher nur eine Ferndiagnose.

Der Befehl echo funktioniert ja so bei Windows nicht. Was aber funktioniert ist:

C:\Apache24\Anonip-main>python anonip.py --input test.log
10.xxx.xxx.0 [11/Jan/2022:09:06:26 +0100] "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62"
10.xxx.xxx.0 [11/Jan/2022:09:06:26 +0100] "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62"

Wichtig ist, dass das mit den Rechten des Apache Users getestet wird. Kann der Besitzer des Apache-Prozesses anonip ausführen?

Die IP Adresse wird hier anonymisiert. Das Skript läuft also durch. Die anonymisierten IP-Adressen werden aber nicht in die test.log geschrieben, sondern lediglich in der Konsole ausgegeben.

Das ist normal, es wurde kein --output mitgegeben und daher wird nach stdout geschrieben.

CustomLog "|/usr/bin/python3.10 Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

Da verstehe ich nicht, was das bringen soll, bzw. ich verstehe nicht, warum hinte python 3.10 kein "/" kommt. Letztenendes würde die Anonip ja dann nur in einem anderen Ordner liegen. Pyhton ist global für alle User installiert, da ich Admin-Rechte habe.

Die Idee ist, dass nicht anonip.py ausgeführt wird, sondern das Python executable (wohl mit einer .exe file extension) und anonip.py ist dann das Argument. "(OS 193)%1 ist keine zulässige Win32-Anwendung." deutet darauf hin, dass anonip.py nicht ausgeführt werden kann/darf. Vielleicht kann ja python selbst ausgeführt werden.

Ich habe es also so probiert:

CustomLog "C:/Program Files (x86)/Python37-32 Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

=> bringt auch nichts, da gibt es nichtmal eine Fehlermeldung im error.log

Unter Windows haben Pfade Backslashs, oder nicht? Zudem muss nicht das directory, sondern das executable angegeben werden.

Weiß nicht, wie das gehen soll, bzw. Python ist ja sowieso global installiert, Umgebungsvariable gesetzt und es müsste also so laufen.

Mittels VirtualEnvs lässt sich einfacher definieren welche Python Version verwendet wird (https://docs.python.org/3/library/venv.html). Es gibt keinen Grund anzunehmen, dass das was bringt und an der Pythonversion wird es nicht liegen. Aber es ist halt etwas, das man probieren könnte.

  1. Kannst Du unter apache einen Aufruf machen auf "C:\irgendow\phyton.EXE c:\hier\anonip.py" ?

Das verstehe ich nicht.

Da ist dasselbe gemeint wie oben Beschrieben: anonip.py als Argument dem Python executable mitgeben (hat wohl ne .exe file extension).

@GIS-Norderstedt
Copy link
Author

GIS-Norderstedt commented Mar 21, 2022 via email

@tolimar
Copy link

tolimar commented Aug 4, 2022

Hi!

Ich habe es also so probiert:

CustomLog "C:/Program Files (x86)/Python37-32 Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

=> bringt auch nichts, da gibt es nichtmal eine Fehlermeldung im error.log

Ich habe kein Windows zur Hand, auf dem ich es ausprobieren kann, aber ein paar Sachen sind mir aufgefallen:

  • In der CustomLog Zeile fehlt das | Zeichen. Dadurch versucht Apache sehr warhscheinlich eine Log Datei mit Diesem Name zu erzeugen, statt seine Ausgabe an dieses Programm zu weiter zu geben.
  • Der Pfad zum Python-Interpreter ist nicht vollständig, er sollte bis zum python.exe (oder so ähnlich) gehen.
  • Der Pfad enthält Leerzeichen, die vermutlich auch stören können. Es wäre eventuell einen Versuch wert, entweder Python in einem Verzeichnis ohne Leerzeichen zu installieren, oder zu versuchen, die Leerzeichen im Pfad zu escapen. Und den vollen Pfad zum python Programm, nicht nur den Pfad dorthin.

Wie gesagt, ohne es ausprobiert zu haben, könnte folgendes funktionieren (\ vor Leerzeichen):

CustomLog "| C:/Program\ Files\ (x86)/Python37-32/python.exe Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

Eventuell geht auch sowas (kompletter Pfad mit ' umschlossen):

CustomLog "| 'C:/Program\ Files\ (x86)/Python37-32/python.exe' Anonip-main/anonip.py --ipv4mask 8 --output logs/test.log" combined

Mit besten Grüßen,
Tolimar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants