per http ein programm auf dem server ausführen

B

brusko

Mitglied
Guten Morgen,
nun weis ich nicht ob ich hier mit diesem Thema richtig bin,
aber ich versuch es mal.
Ich möchte gerne per Webseite ein programm auf einem server ausführen.
auf dem server befindet sich das programm mb_tcpclient. Dieses muss ich mit einigen parametern und ip starten:
mb_tcpclient 0.0.0.0 502 255 write_coil 0 1
es bewirkt das der ausgang eines gerätes das sich an der ip 0.0.0.0 befindet auf 1 gesetzt wird.
Wenn ich dies am server direkt eingebe geht das ganze aber nun möchte ich es gerne in einer Webseite einbinden.
Wenn es ein sript schreibe und dieses starte geht es nicht bsw. es pasiert nicht im browser.
Kann mir jemand sagen was ich da evtl falsch mache ?
ich benutze netobjektfusion 8

mfg Michael
 
PHP:
<?php
  shell_exec("mb_tcpclient 0.0.0.0 502 255 write_coil 0 1");
?>
 
Du speicherst das in eine PHP-Datei (also z.B. foobar.php) und lädst es auf den webserver. Wenn du dann die PHP-Datei aufrufst, wird der Befehl ausgeführt.
 
PHP:
<?php
  shell_exec("mb_tcpclient 0.0.0.0 502 255 write_coil 0 1");
?>

Du speicherst das in eine PHP-Datei (also z.B. foobar.php) und lädst es auf den webserver. Wenn du dann die PHP-Datei aufrufst, wird der Befehl ausgeführt.

Hallo Schneemann
also ich gebe dein Code einfach per edit test.php ein und dann z.b aufen server mit ./test.php starten um zu sehen ob es geht ?

dann sagt er mir keine zugriffrechte Permission denied.
 
Dann setzt du dir Rechte halt hoch, ein bisschen eigene initiative wäre nicht fehl am Platz.
Das gleiche könnte man auch mit perl und system realisieren falls du dich da besser auskennst.

Code:
#!/usr/bin/perl -w
system("mb_tcpclient 0.0.0.0 502 255 write_coil 0 1");
 
Dann setzt du dir Rechte halt hoch, ein bisschen eigene initiative wäre nicht fehl am Platz.
Das gleiche könnte man auch mit perl und system realisieren falls du dich da besser auskennst.

Code:
#!/usr/bin/perl -w
system("mb_tcpclient 0.0.0.0 502 255 write_coil 0 1");

im groben mus ich sagen kenne ich mich da garnicht mit aus.
Ich möchte es mal so sagen, haben ein platine die ich per IP schalten kann, mit diese möchte ich später eine hausteuerung bauen, Soweit kappt das ja alles auch ich kann ja mit direkten befehlen die platine per IP steuern. Nun möchte ich ja das ganze aber gerne vereinfachen in dem ich ein Touchscreen aufstelle wo dementsprechend die eine Webseite zum steuern der platine drauf läuft. Gebe zu ich dachte ich könnte einfach per http den befehl rübersenden. aber so ist es ja nicht .
 
Nein, du legst meinen PHP-Skript auf dem webserver und rufst die Datei dann per Browser auf.
 
Ich würde nur aufpassen was du da ausführst. Weil sowas kann auch Sicherheitslücken öffnen.
 
Ich würde nur aufpassen was du da ausführst. Weil sowas kann auch Sicherheitslücken öffnen.

nun bin etwas weiter gekommen wuste nicht das ich in /etc/rc.conf :
chmod +x /usr/local/www/apache22/cgi-bin/mb-test.sh
eingeben muste.
Habe ich damit zuviel freigegeben ?
Was ich nun für ein probem noch habe ist. wenn ich nu per browser diese datei aufmache ersscheint mir das download-fenster. das möchte ich ja nicht ich möchte das er dieses ausführt. kann es sein ich habe den link als dateilink gemacht wäre das der fehler ?
 
Shell scripte werden von cgi nicht interpretiert, cgi ist ein Perl Modul und kein bash interpreter.
Du hast da nicht zu viel freigegeben, du hast die Datei nur ausführbar gemacht.

Sorry wenn ich das sage aber ich glaube mit deinen Linuxkentnissen bist du relativ fehl am Platz mit solchen Konstruktionen, wie oben schon gesagt wurde kann das ziemliche Lücken aufreisen, die Konsequenzen musst du dann tragen.

Mein Script oben (perl) funktioniert unter cgi bestens, ersetz ihn durch die .sh Datei und es sollte funktionieren. Wenn nicht füg "use CGI::Carp qw(fatalsToBrowser);" in die zweite Zeile ein.

PS: Perl Dateien haben die Endung .pl, cgi Dateien die Endung .cgi.
 
Shell scripte werden von cgi nicht interpretiert, cgi ist ein Perl Modul und kein bash interpreter.
Du hast da nicht zu viel freigegeben, du hast die Datei nur ausführbar gemacht.

Sorry wenn ich das sage aber ich glaube mit deinen Linuxkentnissen bist du relativ fehl am Platz mit solchen Konstruktionen, wie oben schon gesagt wurde kann das ziemliche Lücken aufreisen, die Konsequenzen musst du dann tragen.

Mein Script oben (perl) funktioniert unter cgi bestens, ersetz ihn durch die .sh Datei und es sollte funktionieren. Wenn nicht füg "use CGI::Carp qw(fatalsToBrowser);" in die zweite Zeile ein.

PS: Perl Dateien haben die Endung .pl, cgi Dateien die Endung .cgi.

Danke ich werde es morgen mal versuchen. stimmt meine kentnisse sind "schlecht" ich mus mich da nach und nach mehr reinsetzten. Diese steuerung brauche ich blos fürs Haus und deswegen kann ich damit leider keine jahre warten :-(.
Eines wurde mich aber schon im vorum begbracht...unix ist nicht linux :-) ich hab freebsd 6.2 aufen server
 
Hast du die Zeile "chmod..." in die /etc/rc.conf eingetragen? Dann lösch die da mal schnell wieder raus. Die rc.conf ist für sowas nicht gedacht.

Wenn du auf der Konsole einmal den chmod-Befehl ausgeführt hast, dann reicht das. Damit ist das Ding ausführbar.

Der Server ist aber nicht aus dem Internet aus zugreifbar, oder? Besser nicht...
 
Hast du die Zeile "chmod..." in die /etc/rc.conf eingetragen? Dann lösch die da mal schnell wieder raus. Die rc.conf ist für sowas nicht gedacht.

Wenn du auf der Konsole einmal den chmod-Befehl ausgeführt hast, dann reicht das. Damit ist das Ding ausführbar.

Der Server ist aber nicht aus dem Internet aus zugreifbar, oder? Besser nicht...

Hallo, Doch die webseite ist ja aus dem internet aufrufbar, und chmod mus ich doch schin in der rc.conf reinschreiben was mach ich denn wenn ich aus der ferne mal den server neu starten mus ?.
 
chmod ist dafür da, um Rechte an Dateien zu vergeben. Löschst du die Datei jedesmal wieder? Aber auch dann ist die rc.conf dafür nicht gedacht.

chmod machst du einmal und nie wieder, außer du löschst die Datei.
 
Du lässt einen Server auf dem du etwas wichtiges wie deine "Haus Steuerung" laufen lässt einfach ungesichert im Internet ohne Vorkenntnisse?
Ich würde mir das aber zwei mal überlegen.
 
chmod ist dafür da, um Rechte an Dateien zu vergeben. Löschst du die Datei jedesmal wieder? Aber auch dann ist die rc.conf dafür nicht gedacht.

chmod machst du einmal und nie wieder, außer du löschst die Datei.


wie chmod bleib auch dann bestehen (die rechte) wenn ich den PC neu starte ?
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Du lässt einen Server auf dem du etwas wichtiges wie deine "Haus Steuerung" laufen lässt einfach ungesichert im Internet ohne Vorkenntnisse?
Ich würde mir das aber zwei mal überlegen.

Noch läuft es ja nicht , mir geht es erstmal darum das ich weis wie ich es laufen lassen kann, on es nu wirklich von "drausen" erreichbar ist überlegeich mir noch.
und die haustür läuft sicherlich nicht über dem server :-)
 
Zuletzt bearbeitet:
Wenn du chmod / chown / chgrp auf eine Datei anwendest bleiben die Rechte solange bis du Sie selber wie änderst.
Abgesehen von einigen speziellen Dateien dessen Rechte automatisch gesetzt werden bleiben die Rechte so wie du sie einstellst.
Ein Neustart verändert nichts daran.
 
Wenn du eine Datei umbenennst heißt sie nach einem Neustart auch nicht wieder so wie vorher (außer bei Windows ;)).

Du solltest dir wirklich erstmal Grundlagen aneignen bevor du darüber nachdenkst einen Server online zu stellen. Ein Server ist kein Spielzeug und oft wird vergessen, dass jede Privatperson die einen Server betreibt mit dem kompletten Privatvermögen im Schadensfall haftet. Und ganz ehrlich: Ich will keine Klage von einem Konzern kriegen, wegen Spamming, nur weil ich nen offenen Server irgendwo stehen habe...
 
Wenn du eine Datei umbenennst heißt sie nach einem Neustart auch nicht wieder so wie vorher (außer bei Windows ;)).

Du solltest dir wirklich erstmal Grundlagen aneignen bevor du darüber nachdenkst einen Server online zu stellen. Ein Server ist kein Spielzeug und oft wird vergessen, dass jede Privatperson die einen Server betreibt mit dem kompletten Privatvermögen im Schadensfall haftet. Und ganz ehrlich: Ich will keine Klage von einem Konzern kriegen, wegen Spamming, nur weil ich nen offenen Server irgendwo stehen habe...

Da mus ich euch ja recht geben, wie gesagt ich mus es eh erstmal am laufen haben umd zu sehen wie es ist, kann auch gut möglich sein das ich ihn nie von ausen zugänglich mache, daten ablegen usw will ich eh nicht es wird kein server wo ich daten usw ablegen möchte.
 

Ähnliche Themen

VHOST Problem, Debian Lenny

OS X SSH bereit machen

opensuse11 kabelgebundenes netzwerk geht aber lädt keine seiten

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Server einrichten

Zurück
Oben