Programm auf Server automatisieren

nietaL

NGBler
Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
Hey Leute,

ich erstelle mit php ein paar Textdateien mit entsprechendem Inhalt. Allerdings sollen diese zusammen in eine Art gepacktes Archiv umgewandelt werden - also zu einer Datei. Dazu gibt es ein kleines Programm. Allerdings muss das ganze von alleine laufen: Starten, Ordner mit Text-Dateien suchen, packen, schließen.

Kann man das irgendwie automatisieren?
Starten geht ja bei PHP mit exec(), aber dann ist ja theoretisch die GUI zu sehen. Wie kann ich dann weitergehen,ohne dass ein Mensch die GUI zugesicht bekommt.

Die Parameter sind immer dieselben (also hier Öffnungs- und Speicherorte).
 
Suchst Du ? Ansonsten verstehe ich nicht ganz, worauf Du hinaus willst.
 
  • Thread Starter Thread Starter
  • #3
mhh, nee. ich glaub, das ist es nicht. Das Programm soll nicht nach einem Zeitplan aufgerufen werden, sondern quasi per Click auf meine HP.

Angenommen ich habe eine Datei, die möchte ich auf meiner HP packen lassen und das Packet auf dem Server ablegen. Dazu habe ich aber nur WinRAR zur Verfügung. Nun kann ich zwar die WinRAR-Exe auf den Server laden und sicher auch per PHP starten. Aber wie sag ich dem Programm, was es auf dem Server machen soll, wenn es erst einmal gestartet ist?! Theoretisch öffnet sich dann ja die Benutzeroberfläche. Da ich das Programm ja aber nicht sehe, kann ich nix anklicken. Das muss irgendwie automatisiert passieren.

Meinetwegen lade ich 3 JPGs hoch, drücke einen button "packen & hochladen".

Dann soll das Skript die Dateien hochladen, im Hintergrund WinRAR starten, die Datei Packen und auf dem Server ablegen.


Das ist nur ein Beispiel. Es geht nicht wirklich um WinRAR. Aber um's zu Verstehen, sollte das Parallelbsp genügen :-|
 
Das Beispiel mit dem erst Hochladen könnte komplizierter werden, aber wenns nur um bestehende Files auf dem Server geht, dann würde ich das mit Rar-Command-Line-Arguments (je nach laufendem Server vielleicht minimal anders lautend) machen (oder halt welches Packprogramm auch immer beliebt). Die sollten AFAIR in so einer exec()-Funktion nutzbar sein, wobei ich ehrlich gesagt noch nicht damit gearbeitet habe. Also erst einmal exec() zum Starten eines Komprimiervorgangs und dann nochmal sowas aufrufen zum Kopieren mit normalen Linux-Befehlen. - Hoffe es nun richtig verstanden zu haben.
 
  • Thread Starter Thread Starter
  • #5
wir kommen dem ganzen naeher :-)
Das Problem besteht darin, dass das Packprogramm nicht wirklich weit verbreitet ist. Nun mal doch Tacheles:

Mein Skript schreibt je nach Benutzereingaben eine Missionsdatei (ARMA) und speichert diese (*.sqm). Leider will das Spiel aber eine Art gepackte Datei (*.pbo). Im Normalfall uebernimmt das Spiel selbst die Konvertierung beim Speichern der Editor-Mission als spielbare Mission.
Aber es gibt auch Tools mit denen man die Missionsdateien in PBOs umwandeln kann. Dieses Tool muss nun automatisch meine vom PHP-Skript generierte SQM in PBO umwandeln, ohne dass jmd Hand anlegen muss.

Dieses Tool hat ne normale Benutzeroberflaeche. Mit Schaltern und Menues. :-( Wie soll ich dem Server sagen, dass er auf diese und jene Knoepfe druecken soll?
 
Immerhin. :-) Das verbuche ich als kleinen Erfolg. ;-)

Ok, aber ansonsten müsste ich dann hier im konkreten Fall leider passen.
 
Naja, wenn du es über nem Script ausführen möchtest, musst du dir mal anschauen wie du das programm mit der cmd bedienen kannst.
Da php etc. ja lediglich commands ausführen und mit ner GUI nichts anfangen können.
 
Es gibt auch Programme, die zwar 'ne GUI haben, aber trotzdem über Command Line bedienbar sind. Wenn man dort die Parameter hinter das Startkommando schreibt, wird die GUI eben nicht gestartet.

Allerdings über PHP eine standalone GUI-Anwendung zu automatisieren, dürfte nahezu unmöglich sein. Dann ist die Anwendung eben schlicht und einfach nicht für Server geeignet.
 
  • Thread Starter Thread Starter
  • #9
okay, ihr habt mir schon mal sehr geholfen. Wenn ich musv richtig verstehe, heißt das, dass sich einige, aber nicht alle Programm über zB CMD steuern lassen. Wie bekommt man denn die Parameter heraus, so es denn welche gibt? Sind die in der EXE versteckt erlesbar?

EDIT: Nach eurer Hilfe habe ich mich noch einmal nach einer Alternative umgeschaut und siehe da: es gibt ein älteres Programm, das genau das tut. Auf CMD-Basis packen und entpacken. Es funktioniert auch alles.

Wie sähe denn jetzt die Syntax in PHP aus, wenn ich in der CMD selbst eingebe:
[src=text]cpbo -y -p Name_des_zu_packenden_Ordners[/src]

(Alles ist im Selben Verzeichnis: cmd.exe, cpbo.exe, Zu verpackender Ordner)


EDIT: Ich habe es jetzt mit system(), passthru() und exec() probiert. Es kommt immer derselbe Fehler: 127. Daraufhin habe ich geprüft, ob safe_mode OFF ist. Ist es. Was kann es noch sein?

[src=php] passthru("/html/***/***/missions/cpbo.exe -p pbotest.Altis",$err);
echo 'Error: '.$err; [/src]

Ich frage mich gerade, ob es ein Problem mit der EXE an sich gibt. Wenn der Server auf LINUX oder so läuft, kann er dann etwas mit EXE anfangen? Wie bekomme ich bei einem gemieteten Server heraus, mit welchem OS er läuft?
 
Zuletzt bearbeitet:
Ich frage mich gerade, ob es ein Problem mit der EXE an sich gibt. Wenn der Server auf LINUX oder so läuft, kann er dann etwas mit EXE anfangen?
Natürlich nicht.

Du müsstest dann auf dem Ding installieren. Aber das willst du auf einem öffentlich zugänglichen Server definitiv nicht.

Wie bekomme ich bei einem gemieteten Server heraus, mit welchem OS er läuft?
Nach Shellzugriff frag ich erst mal nicht.

Leg Dir einfach 'ne Datei an:

phpinfo.php
[src=php]<?php phpinfo(); ?>[/src]

Die rufst du dann auf. Bei mir steht da gleich ganz oben:
Code:
Expand Collapse Copy
System | 	Linux Nas 3.14.4-1-ARCH #1 PREEMPT Thu May 15 19:38:21 MDT 2014 armv5tel
 
Bei Webspace hast du weder die Möglichkeit per exec() oder anderen Befehlen Systembefehle auszuführen (außer bei manchen Webhoster ein paar wenige Befehle wie unzip z.B.) - noch die Möglichkeit eigene Anwendungen auf dem Server zu verwenden. Sonst könntest du ja auch jeden Virus hoch laden und fröhlich die anderen Kunden mit denen du dir den Server teilst hacken...

Insofern du einen eigenen Server oder vServer betreiben solltest - macht mir deine Frage wie man heraus bekommt welches Betriebssystem genutzt wird, ernsthaft Angst! Dann sollten wir uns noch mal über den Sinn deiner Tagen unterhalten ;)

Für Linux-Systeme scheint der Entwickler den Code zum de und dekompromieren in c++ entwickelt zu haben sodass die Anwendung auch für Linux zu compilieren wäre. Was dann noch Fehlt ist jedoch ein Programm das die Funktion zum packen und entpacken jeweils auf eine einzelne Datei anwendet - das bedeutet du müsstest etwas c / c++ entwickeln können.

Die Andere Möglichkeit wäre anhand des Quellcodes die Funktionen in PHP direkt zu implementieren.. auf die schnelle habe ich niemand gefunden der dies schon einmal selber umgesetzt hätte und öffentlich zur Verfügung stellt. Wenn du das Packen und Entpacken direkt in PHP implementierst wäre das auch die einzige Möglichkeit das Packen direkt auf dem Webspace laufen zu lassen. Technisch dürfte dies kein Problem sein, du musst "nur" herausfinden wie das Format .pbo in diesem Fall aufgebaut ist ;D

Alles in allem hast du dir nach meiner Einschätzung aber etwas vorgenommen was für dich leider - so hart es klingt - nicht umsetzbar ist.

Edit: Hier ist die Strukturbeschreibung für eine pbo Datei
 
Zuletzt bearbeitet:
Wie die netten Personen über mir schon gesagt haben..

1. Es ist nicht möglich .exe Programme auf Linux auszuführen.
2. Auf Webspace ist es ansich schwirg sowas umzusetzen.

Lösung wäre..

1. Diesen teil der PHP anwendung auf einen Windows Server installieren.
2. Dein .exe tool über wine ausführen.
3. Schauen ob die möglichkeit besteht, dieses tool für Linux zu compilieren (-> drfuture)
4. Schauen ob es dieses Tool sogar schon fertig für Linux gibt.


Ich möchte dir nicht zu nahe treten, aber auf grund der fragen, welche du bisher gestellt hast,
denke ich nicht, dass es sonderlich einfach für dich wird..
 
  • Thread Starter Thread Starter
  • #13
Vielen Dank für die Vorschläge. Wenn es einfach wäre, stellte ich hier nicht die Fragen. Ich habe keinen eigenen Server gemietet, sondern nur Webspace. Meine Fragen ergeben sich, weil ich zum ersten Mal eine Anwendung serverseitig ausführen lassen möchte. Deshalb kenne ich solche Probleme noch gar nicht. Aber irgendwann ist immer das erste Mal.

1. Also mein erster Gedanke war tatsächlich, alles einfach in PHP umzuschreiben, aber das ist mir erstens zu viel Arbeit und zweitens kann ich es nicht, weil ich die Struktur einer PBO Datei schlichtweg nicht verstehe.
2. Für Linux kompilieren kann ich ebenso nicht.
3. Das Tool ist sehr alt, aber immernoch funktionsfähig. Da es mittlerweile viel neuere Versionen mit GUI gibt, macht sich natürlich niemand die Mühe, sowas für LINUX zu schreiben

Am interessantesten klingt für mich WINE. Ich habe gelesen, dass es um so eher klappt, wenn das Programm einfach und alt ist :-D Das wäre ja der Fall. Wie bekomme ich denn WINE auf den Server installiert?
 
"apt-get install wine" :D

Geht aber nur bei einem eigenen Server.
Also musst du zuerst nen Dedi oder vps kaufen ^^


Wenn das tool in .net gecoded ist, kannst du das evl. auch mit mono unter linux zum laufen bringen.
Kenne aber dein Programm nicht, kann es dir daher nicht genau sagen.
 
  • Thread Starter Thread Starter
  • #16
Jut, lass wir das. Ich hätte ja kein Problem damit, nen vServer zu mieten und den Webspace samt Datenbanken dahinzuschieben, aber ich fürchte dann dazu stehen und nicht zu wissen, wie :-D
 
mit mieten ist es bei einem eigenen vServer / dedicated Server auch nicht getan...
Das ist schließlich ein Computer der mit 100mbit rund um die Uhr am Internet hängt... das heißt Weltweit kann jeder der langeweile hat versuchen dort einzubrechen...
Das solltest du als Admin des Servers zu verhindern wissen - denn wenn jemand in den Server einbricht und dann damit etwas anstellt - musst du für den Schaden haften.

Aber du sagtest ja eh schon du lässt es, wollte ich nur noch mal ergänzen.

Der einzige für dich Sinnvolle Weg wäre eben die Dateistruktur in PHP zu implementieren - oder zur Not einen manuellen Service anbieten, wenn du die Möglichkeit eines online-Editors bieten möchtest...
Das heißt das du halt über Nacht immer manuell alle .pbt erstellst ;D
 
  • Thread Starter Thread Starter
  • #18
Ja, nee. So geht das leider nicht :D Ich verlagere das alles auf einen Windows-Server eines Freundes. Der kennt sich besser aus als ich.
Ich danke auf jeden Fall für die vielen Infos.
 
Zurück
Oben