• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

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).
 

MSX

Retro-Nerd-Hippie

Registriert
14 Juli 2013
Beiträge
15.091
Ort
v01d
Suchst Du Cronjobs? Ansonsten verstehe ich nicht ganz, worauf Du hinaus willst.
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • 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 :-|
 

MSX

Retro-Nerd-Hippie

Registriert
14 Juli 2013
Beiträge
15.091
Ort
v01d
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.
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • 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?
 

MSX

Retro-Nerd-Hippie

Registriert
14 Juli 2013
Beiträge
15.091
Ort
v01d
Immerhin. :-) Das verbuche ich als kleinen Erfolg. ;-)

Ok, aber ansonsten müsste ich dann hier im konkreten Fall leider passen.
 

Tree

Xancom Management

Registriert
28 Mai 2014
Beiträge
10
Ort
San Jose, Costa Rica
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.
 

musv

Bekannter NGBler

Registriert
15 Juli 2013
Beiträge
3.454
Ort
/dev/null
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.
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • 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:

musv

Bekannter NGBler

Registriert
15 Juli 2013
Beiträge
3.454
Ort
/dev/null
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 Wine 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:
System | 	Linux Nas 3.14.4-1-ARCH #1 PREEMPT Thu May 15 19:38:21 MDT 2014 armv5tel
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.754
Ort
in der Zukunft
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 http://dev.withsix.com/projects/mikero-pbodll/wiki/DePbo_Project 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 https://community.bistudio.com/wiki/PBO_File_Format
 
Zuletzt bearbeitet:

Tree

Xancom Management

Registriert
28 Mai 2014
Beiträge
10
Ort
San Jose, Costa Rica
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..
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • 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?
 

Tree

Xancom Management

Registriert
28 Mai 2014
Beiträge
10
Ort
San Jose, Costa Rica
"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.
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • 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
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.754
Ort
in der Zukunft
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
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • 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.
 
Oben