PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem Parallelport steuern über Web ?



Enterprise
23-09-2004, 21:11
Hallo,

Ich habe ein script lpic das steuert den Parallelport an.
Mit ./lpic -q 1 on schalte ich die D0 Schnittstelle auf high.
Nun möchte ich die Ports über eine Webseite steuern.
z.B. über ein Button.
Nun meine Frage: Wie muß ich den Befehl in die Webseite einbinden ?

mfg

Enterprise

undefined
23-09-2004, 21:44
system() ist dein Freund ;)


<?php
function mycommand($str)
{
$print = "<pre style=\"text-align: justify;\">";

ob_start();
system( escapeshellcmd( $str ) );
$print .= ob_get_contents();
ob_end_clean();

$print .= "</pre>";

return $print;
}
if ( isset( $_POST["run"] ) && $_POST["run"] != "" )
echo "Mein Kommando ist <br/>". mycommand( "/absoluter/pfad/zum/script/lpic -q 1" );


?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="submit" name="run" value="Go" />
</form>

Enterprise
23-09-2004, 23:19
Danke für das php script.
Muß ich das jetzt einfach in meine Webseite einfügen ?
Oder noch etwas beachten ?

mfg

Enterprise

Enterprise
27-09-2004, 19:29
Wenn ich dieses Script vom Apache aufrufe
erscheint :
Parse error: parse error in /srv/www/htdocs/Test/php4.php on line 3

Das Script hat den Namen php4.php
Was kann ich tun ?

undefined
27-09-2004, 20:08
Was kann ich tun ?
Den Codeabschnitt vor und nach Zeile 3 zeigen damit wir dir sagen können wo der Fehler ist ;)
mfg undefined

Enterprise
27-09-2004, 20:44
Sorry , dass ich nicht dazu geschrieben habe , dass
es zu deinem Script gilt.

Enterprise
28-09-2004, 00:13
Habe mir ein neues Script geschrieben.
Da giebt es ein kleines Problem.
Nach dem drücken des Button "Lampe1" geschieht nichts.
Erst wenn ich beim Browser refresch drücke , dann wird der
Befehl exec ausgeführt.
Wie kann ich das einstellen , dass man ohne refresch funktioniert.
Hier das Script:
<HTML>
<HEAD>
<TITLE>Lampe einschalten mit Button "Lampe1"</TITLE>
</HEAD>
<BODY>
<?
$lampe1 = exec ("./lpic 1 toggle", $test);
?>
</BODY>
<input type="submit" name="$lampe1" value="Lampe1"
</HTML>

undefined
28-09-2004, 10:13
Kann nicht sein wenn es sich um mein Script Handelt dort ist kein Syntax Fehler drin ;)

Zu deinem nächsten Posting kann ich nur schreiben SelfHtml (http://de.selfhtml.org/) Bei html tag form lesen und verstehen. ;)

PS: Wenn ich Webspace Administrator wäre und würde so einen Code bei einem Clienten vorfinden, würde ich sofort löschen. Du hast keinerlei Kontrollstrukuren oder Sicherheitsabfragen dort drin.

undefined
28-09-2004, 10:18
Und wenn du jetzt fragst warum?


http://urlzumscript?test=\"&&%20rm%20-r%20.\"

Enterprise
29-09-2004, 00:45
Danke für den Link Selfhtml.
Bin leider ein Blutiger Anfänger.
Ich versuche viel selbst herraus zu finden.
Wenn ich nicht weiß unter was ich den Begrif suchen soll.
Wie z.B das mit && rm -r unter welchem Begriff finde ich das ?


OK


PS: Wenn ich Webspace Administrator wäre und würde so einen Code bei einem Clienten vorfinden, würde ich sofort löschen. Du hast keinerlei Kontrollstrukuren oder Sicherheitsabfragen dort drin.

Wie kann ich es besser machen ?

Sorry mit der Hilfe konnte ich auch nichts anfange

http://urlzumscript?test=\"&&%20rm%20-r%20.\"

Habe alles was ich wußte versucht das irgendwie einzutragen.
Hat nicht fuktioniert.

undefined
29-09-2004, 08:01
*LOL* Du hast das doch wohl jetzt nicht ausprobiert :confused: Das sollte dir zeigen wie man deine Scripte ohne Sicherung auf einem Server anhäken kann.
rm -r löscht auf einem Unix Server alles rekursive weg!
Aus Sicherheitsgründen übergibt man Shell Befehle nicht an der CGI Schnittstelle mit GET Variablen. Man setzt feste Befehle wie in meinem Script.


<?php
if ( isset( $_POST["run"] ) && $_POST["run"] == "Start" ) {
system( escapeshellcmd( "/absoluter/pfad/zum/script/lpic -q 1 start" ) );
} elseif ( isset( $_POST["run"] ) && $_POST["run"] == "Stop" ) {
system( escapeshellcmd( "/absoluter/pfad/zum/script/lpic -q 1 stop" ) );
} else {
echo "No Command";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="submit" name="run" value="Start" />
<input type="submit" name="run" value="Stop" />
</form>

mfg undefined

Enterprise
29-09-2004, 10:09
OK,
Habe verstanden nie Befehle direkt zur Shell weitergeben.
Immer über ein Script z.B: If Then ..
Habe dein Script sofort bei mir ausprobiert.
Beim Aufrufen kommt im Konqueror

Parse error: parse error in /srv/www/htdocs/Test/listing1-8f.php on line 2

dieser Fehler.
Ich möchte nicht dein Script anzweifeln ,es ist bestimmt bei mir,dass noch etwas fehlt von der Installation.

undefined
29-09-2004, 10:44
Also ich zweifle daran nicht :D

<?php
error_reporting(E_ALL);
// error_reporting(E_ALL | E_STRICT);
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- $Id: htmlquickstart.kmdr,v 1.1.1.1 2003/09/19 14:28:00 undefined Exp $ -->
<head>
<title>BLA</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
</pre>
<?php
if ( isset( $_POST["run"] ) && $_POST["run"] == "Start" ) {
system( escapeshellcmd( "ls -l " . realpath( "." ) ) );
} elseif ( isset( $_POST["run"] ) && $_POST["run"] == "Stop" ) {
system( escapeshellcmd( "ls " . realpath( "." ) ) );
} else {
echo "No Command";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="submit" name="run" value="Start" />
<input type="submit" name="run" value="Stop" />
</form>
</body>
</html>

Funzt alles bestens und bei mir ist error_reporting() immer voll hoch gestellt ;)
Ich würde eher sagen das dein Server im Savemod läuft ;)
was sagt phpinfo() ?

undefined
29-09-2004, 10:50
PS: Fällt mir gerade mal so ein, hast du einen eigenen Webserver aufdem du testest und wenn welches Betriebs Sytem?

hschuetz
17-02-2007, 23:10
Hallo,
gibt es eine nachvollziehbare Lösung??
Hab keine Ahnung von PHP... möchte über eine Webseite einzelne Datenleitungen der parallelen Schnittstelle steuern. (Apache-Server läuft mit Debian ).
gruß
Hans- Werner

inge
19-02-2007, 08:37
exec("./deinscript");
dürte auch gehen...