Abfrage Drucker-Tintenstand über ein PHP-Skript

Status
Für weitere Antworten geschlossen.

Jonas

Benutzer
Mitglied seit
02. Feb 2009
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo,

dass der Tintenstand nicht angezeigt wird hat mich auch gestört - ich habe darum auf meiner DS107+ ein PHP-Skript erstellt, das den Tintenstand anzeigt.

Voraussetzungen: Aktivierter Webserver mit PHP, Zugang vie SSH oder Telnet aktiviert (lässt sich per Admin-Pannel einstellen).

1. IPKG installieren
Siehe die Anleitung von http://www.synology-wiki.de/index.php/IPKG

2. ink installieren
Rich (BBCode):
ipkg install ink
Der Drucker muss von ink unterstützt sein damit das Skript funktioniert, eine Liste gibts hier: http://ink.sourceforge.net/

3. suid-bit für ink setzen
Notwendig, damit der Webserver auf den USB-Port zugreifen kann
Rich (BBCode):
chmod 4755 /volume1/@optware/bin/ink

4. exec-Restriktion aus der php.ini entfernen
Achtung: Wenn deine NAS von aussen erreichbar ist kann das, je nach dem was sonst noch auf dem Webserver läuft, eine schlechte Idee sein. Die Details gibts hier: http://www.synology.com/enu/forum/viewtopic.php?f=34&t=7291

Kurs gesagt muss in der Datei /usr/syno/etc/php.ini diese Zeile:
Rich (BBCode):
safe_mode_execdir = /usr/syno/bin
durch folgende ersetzt werden:
Rich (BBCode):
safe_mode_execdir =

5. Apache neu starten (oder die ganze NAS, wenn dir das einfach geht)
/usr/syno/apache/bin/httpd -k restart

6. Folgendes PHP-Skript irgendwo auf den Server hochladen:
PHP:
<?php
echo "<h1>Tintenstand</h2>";
$ret = exec("ink -p usb",$a);

foreach ($a as $row){
echo $row . "<br>";
}
?>

Ich habe unten dran noch die Druckerwarteschlange eingefügt:
PHP:
<?php
echo "<h2>Druckauftäge</h2>";
$ret = exec("lpq",$b);

foreach ($b as $row){
echo $row . "<br>";
}
?>

Das Skript könnte natürlich noch verschönert und verbessert werden - ist ein schneller Wurf, der aber seinen Zweck tut...

Hoffe das hilft weiter!

Gruss Jonas
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Dieser Beitrag hat ein eigenes Thema verdient! Deshalb habe ich ihn aus dem ursprünglichen Thread hierhin verschoben.

Klasse erster Beitrag, Jonas! Weiter so!

Trolli
 

Pax90

Benutzer
Mitglied seit
14. Aug 2008
Beiträge
122
Punkte für Reaktionen
0
Punkte
16
Wirklich sehr schönes script, dankeschön =)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Gefällt mir sehr, das Skript/die Idee ... gut gemacht!

Itari
 

gregor4005

Benutzer
Mitglied seit
06. Feb 2009
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hi, ich bin neu hier im Forum!
Ich habe mein DS 107+ seit ca 2Wochen und konnte auch schon einiges Einrichten, auch 3rdparty.
Doch leider steht ich grad mit meinen wenigen php und teilweise wenigen Linux kenntnissen etwas an.
Das Skript zeigt mir die Überschrifft Tintenstatus, doch darunter ist nichts mehr zu sehen-> Also keine Drucker- und Tinteninformationen, aber in der shell wird mir alles angezeigt!
Meine installierte ink version ist 0.4.1 und libinklevel v0.7.3.
Ich hoffe mir kann jemnd helfen!
Mfg Greg
PS: Beim ersten Skript gehört das erste h1 durch ein h2 ersetzt:
echo "<h2>Tintenstand</h2>";
 

Jonas

Benutzer
Mitglied seit
02. Feb 2009
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
hallo gregor4005

hast du alle Schritte in der Anleitung befolgt? Vor allem die Schritte die Berechtigungen betreffen (3/4)?

Wenn ja, was passiert wenn du im exec-befehl statt "ink -p usb" einen "harmlosen" Befehl reinschreibst, z.B. "ls -l"?

Gruss Jonas
 

jora

Benutzer
Mitglied seit
20. Okt 2008
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Ich habe das gleiche Problem,

mir ist aufgefallen dass ich keinen Ordner @optware habe sondern nur /opt und hier habe ich die chmod vorgenommen.

Alle exec Befehle funktionieren nur der ink nicht ???

Wer weiß Rat ?

gruß Joachim
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Versuch mal den kompletten Pfad für das Programm ink (könnte /opt/bin/ink sein??? habs nicht installiert, nur ne Vermutung) in das Skript rein und schau, ob es dann geht.

Itari
 

jora

Benutzer
Mitglied seit
20. Okt 2008
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Keine Ahnung auch das funktioniert nicht.

:confused:
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
PHP:
 <?php 
echo "<h1>Tintenstand</h2>"; 
$ret = exec("ink -p usb",$a); 

foreach ($a as $row){ 
echo $row . "<br>"; 
} 
?>
da würde ich mir die foreach Schleife sparen und direkt :D
PHP:
 <?php 
echo "<h1>Tintenstand</h2>"; 
$ret = exec("ink -p usb",$a); 
echo implode('<br />',$a); 
?>
machen. Spart ein paar Zeichen
 

-007-ß

Benutzer
Mitglied seit
27. Apr 2009
Beiträge
103
Punkte für Reaktionen
0
Punkte
0
also:
Rich (BBCode):
which ink
hat
ergeben, itari hatte mit seiner Vermutung also Recht. hab jetzt wie beschrieben auf ink das suid-Bit gesetzt, nur eben 4755 auf /opt/bin/ink
Hab dann auch im skript den Pfad geändert und das Ergebnis:
Tintenstand
ink v0.5.0 (c) 2009 Markus Heinz

Could not access '/dev/usb/lp0' or '/dev/usblp0'.
Could not get ink level.
 

-007-ß

Benutzer
Mitglied seit
27. Apr 2009
Beiträge
103
Punkte für Reaktionen
0
Punkte
0
Wie soll es jetzt weitergehen?
 

Welle1983

Benutzer
Mitglied seit
14. Jul 2008
Beiträge
38
Punkte für Reaktionen
0
Punkte
0
Hallo, Leute!

ich habe begeistert deinen php-code auf meinem Nas installiert für die Tintenstandabfrage. Allerdings fand ich es immer störend, den Stand nur über den browser erreichbar zu haben. Ich habe mich dann also mit anfänglich sehr bescheidenen Kenntnissen in Sachen Programmierung hingesetzt und mein Hirn mal ein bissl mit Visual Basic gefüttert. Herausgekommen ist ein kleines Tool, welches sich beim Absenden eines Druckbefehls öffnet und den Tintenstand grafisch darstellt.

Aus programmiertechnischen Gründen musste ich die von Jonas gepostete .php ein ganz klein wenig ändern, so dass am ende noch ein "end" im Quelltext der Ausgabe auftaucht. Das jedoch nur am Rande.

Ich würde gern in den nächsten Tagen das Programm hier zur Verfügung stellen, wenn es fertig ist. Hier schonmal als kleiner Vorgeschmack zwei Screenshots:



gruß, Stephan

PS: kleine Änderungen werden derzeit noch durchgeführt, die Bilder dienen daher nur als kleiner Vorgeschmack...
später gibts dann von mir das Komplettpaket incl. der php-Dateien und des Programms. Mehr dazu dann später....
 

ag_bg

Benutzer
Mitglied seit
19. Jan 2008
Beiträge
1.736
Punkte für Reaktionen
0
Punkte
0
Hallo, Leute!

ich habe begeistert deinen php-code auf meinem Nas installiert für die Tintenstandabfrage. Allerdings fand ich es immer störend, den Stand nur über den browser erreichbar zu haben. Ich habe mich dann also mit anfänglich sehr bescheidenen Kenntnissen in Sachen Programmierung hingesetzt und mein Hirn mal ein bissl mit Visual Basic gefüttert. Herausgekommen ist ein kleines Tool, welches sich beim Absenden eines Druckbefehls öffnet und den Tintenstand grafisch darstellt.

Aus programmiertechnischen Gründen musste ich die von Jonas gepostete .php ein ganz klein wenig ändern, so dass am ende noch ein "end" im Quelltext der Ausgabe auftaucht. Das jedoch nur am Rande.

Ich würde gern in den nächsten Tagen das Programm hier zur Verfügung stellen, wenn es fertig ist. Hier schonmal als kleiner Vorgeschmack zwei Screenshots:



gruß, Stephan

PS: kleine Änderungen werden derzeit noch durchgeführt, die Bilder dienen daher nur als kleiner Vorgeschmack...
später gibts dann von mir das Komplettpaket incl. der php-Dateien und des Programms. Mehr dazu dann später....

Na, dann mal gut Tau!

best regards
 

Welle1983

Benutzer
Mitglied seit
14. Jul 2008
Beiträge
38
Punkte für Reaktionen
0
Punkte
0
Beta-Release:

Hier die erste Vorabversion des Programms für Euch zum testen.

Zur Verwendung:

- DruckerMonitor ist ein zusätzliches Programm für Drucker, die am NAS hängen.

- Um das Programm verwenden zu können, muss Microsoft Framework 3.5 auf dem Rechner installiert sein!

- Um das Programm verwenden zu können, ist es zwingend notwendig, die Schritte 1 bis 5 aus dem Startpost (http://www.synology-forum.de/showpost.html?p=33339&postcount=1) durchzuführen!

- Um das Programm verwenden zu können, muss im "Web" Ordner des NAS die zwei php-Dateien gespeichert werden, welche sich ebenfalls im rar-Archiv befinden.
ACHTUNG: wer bisher schon das php Skript einsetzt, MUSS dieses ersetzen, da es für das Programm leicht modifiziert wurde.

- Funktion: Das Programm läuft im Hintergrund und ist im Info-Bereich von Windows zugänglich. Öffnen über Doppelklick, oder Rechtsklick auf das Symbol. Die Voreinstellungen können jederzeit angepasst werden. Wenn ein Druckauftrag in der Druckerwarteschlange eintrifft, ploppt das Programm auf, und zeigt für 15 Sekunden den aktuellen Füllstand oder ggf eine Warnmeldung. Anschließend minimiert sich das Tool wieder in den Infobereich. Ein ähnliches Verhalten kennt man von Original-Druckertreibern.

- stabil getestet unter Windows XP, Vista, 7.

- Das Programm ist kostenlos und ausschließlich für private zwecke bestimmt

- Das Programm ist in der Beta-Phase, eine stabile Funktion kann nicht garantiert werden. Testen auf eigene Gefahr.


Bekannte Bugs:

- Aufploppen der Füllstandsanzeige beim Drucken funktioniert (bei mir) nur, wenn Internetadresse der php Dateien angegeben ist (dyndns)

- Aufploppen der Füllstandsanzeige beim Drucken funktioniert bisher nur mit Anzeige einer Fehlermeldung. Der Füllstand wird aber korrekt angezeigt.

- der ein oder andere Rechtschreibfehler


Feedback:

Da es sich um eine Vorabversion handelt, möchte ich natürlich wissen, was Ihr für Erfahrungen damit gemacht habt, damit ich da nachbessern kann.
Also für sämtliche Fragen, Anregungen, Fehlerberichte bitte eine Meldung hier im Forum, oder per Mail an: stephan_wellendorf@arcor.de

Download:

http://rapidshare.com/files/289131367/DruckerMonitor.rar.html






Viel Spaß und happy testing!
Stephan
 

Welle1983

Benutzer
Mitglied seit
14. Jul 2008
Beiträge
38
Punkte für Reaktionen
0
Punkte
0
So, die endgültige Version ist fertig!

Vorabinformation:

Als Grundlage diente ein Canon IP4300 Drucker, auf dessen Basis das Programm entwickelt ist. Wenn der DruckerMonitor bei Euch keinen Tintenstand ausgibt, dann liegt das mit Sicherheit an der Rückmeldung des php-Skriptes. Dies stellt aber kein großes Problem dar, nehmt in diesem Fall bitte Kontakt mit mir auf, ich bastel Euch dann eine speziell auf Euren Drucker zugeschnittene Version.

Zur Verwendung:

- DruckerMonitor ist ein zusätzliches Programm für Drucker, die am NAS hängen.

- Um das Programm verwenden zu können, muss Microsoft Framework 3.5 auf dem Rechner installiert sein!

- Um das Programm verwenden zu können, ist es zwingend notwendig, die Schritte 1 bis 5 aus dem Startpost (http://www.synology-forum.de/showpos...39&postcount=1) durchzuführen!

- Um das Programm verwenden zu können, muss im "Web" Ordner des NAS die "tinte.php"-Datei gespeichert werden, welche sich ebenfalls im rar-Archiv befinden.
ACHTUNG: wer bisher schon das php Skript einsetzt, MUSS dieses ersetzen, da es für das Programm leicht modifiziert wurde.

- Funktion: Das Programm läuft im Hintergrund und ist im Info-Bereich von Windows zugänglich. Öffnen über Doppelklick, oder Rechtsklick auf das Symbol. Die Voreinstellungen können jederzeit angepasst werden. Wenn ein Druckauftrag in der Druckerwarteschlange eintrifft, ploppt das Programm auf, und zeigt für 10 Sekunden den aktuellen Füllstand oder ggf eine Warnmeldung. Anschließend minimiert sich das Tool wieder in den Infobereich. Ein ähnliches Verhalten kennt man von Original-Druckertreibern.

- stabil getestet unter Windows XP, Vista, 7.

- Das Programm ist kostenlos, Freeware und ausschließlich für private zwecke bestimmt

So, genug der Worte, hier nun die Finale Version zum Download:

Screenshots:



Download



So, ich bin nun fürs erste fertig. Alles weitere hängt von Euch ab, ob ihr das Prog nutzt, und welche Bugs ihr evtl findet.

Bug-Kontakt:

stephan_wellendorf@arcor.de

Bei Fehlern bitte angeben:
- Betriebssystem
- Druckerhersteller und -modell
- Fehlerbeschreibung

Anmerkung: Der Downlaod-Link hat sich geändert: welle1983.homeftp.net/Syno/DruckerMonitor.rar
Itari
 
Zuletzt bearbeitet von einem Moderator:

ag_bg

Benutzer
Mitglied seit
19. Jan 2008
Beiträge
1.736
Punkte für Reaktionen
0
Punkte
0
Darf man die Datei auch hier direkt zur Verfügung stellen und wie hältst du es mit der Lizenz?

best regards

PS natürlich ein dickes Danke zum Publizieren, wenn ich es auch selber nicht nutze
 

Welle1983

Benutzer
Mitglied seit
14. Jul 2008
Beiträge
38
Punkte für Reaktionen
0
Punkte
0
Darf man die Datei auch hier direkt zur Verfügung stellen und wie hältst du es mit der Lizenz?

Ist Freeware, habe ich oben jetzt nochmal ergänzt...
Darf natürlich auch hier direkt zur Verfügung gestellt werden.
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich greif das noch mal mit der Lizenz auf: Freeware ist ja kein Lizenztyp. Es geht auch nicht um die Frage: Kostenlos oder so. Wenn wir nach der Lizenz fragen und uns am liebsten GPL3 wünschen, dann hat das den Grund, dass man das Programm bzw. Skript halt beliebig einsetzen und auch abändern darf. Bei mir käme auch noch ein weitere Grund dazu, ich könnte es dann als Programmbeispiel in Schulungen verwenden (was ich sonst gemäß Urheberrecht nicht ohne Rücksprache mit dir dürfte). Auch ein Zitieren (also verlinken auf Webseiten) wäre ohne deine ausdrücklich Erlaubnis nicht möglich.

Also vielleicht verstehst du nun ein wenig, warum wir immer nach dem Lizenztyp fragen ...

Ansonsten finde ich es großartig, was du da als zum Thema "Tintenstand" geschrieben hast. Kompliment :)

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat