Hilfe bei Script Anpassung

Status
Für weitere Antworten geschlossen.

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Heh,

wieder mal was dazugelernt. Ich hätte es wohl mal zuende machen sollen.
Allerdings wird HPLIP in jedem Fall kompiliert, oder sehe ich das falsch - link -.

Struppix
 

Drain

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
144
Punkte für Reaktionen
0
Punkte
0
Wenn du Schritt 9 meinst, ja hört sich so an.
Step 9: './configure' and 'make' will run
./configure prepares HPLIP for install as well as your system is verified to have all the required dependencies for HPLIP.
'make' is then executed. Make compiles ("builds") HPLIP for your system.

Allerdings sehe ich schon vorher ein Problem.
Step 4: Verify your Linux Distribution
Note:
Ensure the installer detected the correct Linux distribution. Different Linux versions use different install procedures if the incorrect version is selected, the installer may fail.

Da müßte sich mal jmd hier im Forum dazu äußern, der sich mit dem Linux auf der DS auskennt.

Sind die Mindestvoraussetzungen überhaupt erfüllt? What are the minimum system requirements?
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Genau darauf ziehlt meine Frage. Das mit dem Kompilieren werde ich die Tage machen. Habe ein zwei Pakete., die nicht im ipkg sind.
 

Drain

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
144
Punkte für Reaktionen
0
Punkte
0

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Wie meinst Du das. Ich denke ich formuliere das mal um. Das Paketmanagment stellt leider nicht alle Pakete bereit, die ich hierzu bräuchte, da ich mich nun entschieden habe, direkt auf der DS zu kompilieren. Beim Cross-Kompilieren befürchte ich, das es noch schwieriger wird.

Außerdem habe ich noch ein paar vielversprechende Beiträge gefunden, die vielleicht meine Fehlermeldungen erklären und helfen könnten, diese zu beseitigen ....

Struppix
 

Drain

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
144
Punkte für Reaktionen
0
Punkte
0
Na dann viel Glück. Ab hier kann ich dir erst mal nicht mehr weiterhelfen.
Wenn du es hinbekommen hast gib aber auf jeden Fall Bescheid. Würde mich auch interessieren. Wäre ein nice2have-feature.

Hoffe du bekommst noch etwas Unterstützung vom Forum hier, damit es dann klappt.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Datei wird nicht gefunden - cups - sane-backend

Da bin ich wieder. In der Zwischenzeit bin ich ein ganzes Stück weiter.

Allerdings habe ich jetzt mit cups, bzw. dem sane-backend ein kleines Problem.

Rich (BBCode):
/ #  lpstat -t
scheduler is running
system default destination: hp_color_laserjet_2840
device for hp_color_laserjet_2840: hp:/net/HP_Color_LaserJet_2840?ip=192.168.1.7
hp_color_laserjet_2840 accepting requests since Thu Mar 29 18:47:56 2012
printer hp_color_laserjet_2840 disabled since Thu Mar 29 18:47:56 2012 -
        Backend /usr/lib/cups/backend/hp does not exist!
/ #

Die Datei backend/hp steht eigentlich unter /opt/lib/cups/backend/hp. Leider bringt das linken / kopieren / Pfad angeben rein gar nichts.
Die Datei wird nicht gefunden.

Kann es daran liegen, das /usr/lib ja selbst auf /lib gelinkt ist ? Verstehe das nicht.
Eine Suche mit 'find -name hp -print' spuckt mir den original Pfad aus, den anderen leider nicht ....

Somit:
1) Könnt Ihr mir helfen hinsichtlich dem "richtigen" Dreh, um den Pfad vernünftig weiterzugeben ?
oder
2) Wo steht der Eintrag dieses Pfades in cups ? Kann man das editieren ? Habe es bisher nicht gefunden.

Danke
Struppix
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Problem mit backend/hp gelöst.

Ein 'Resume' im cups Fontend startet vermutlich die Dienste vernüftig neu. Ein Neustart der DS brachte nichts. Im Übrigen findet 'find ...' noch immer nichts.

Rich (BBCode):
/ # lpstat -t
scheduler is running
system default destination: hp_color_laserjet_2840
device for hp_color_laserjet_2840: hp:/net/HP_Color_LaserJet_2840?ip=192.168.1.7
hp_color_laserjet_2840 accepting requests since Fri Apr 20 15:51:39 2012
printer hp_color_laserjet_2840 is idle.  enabled since Fri Apr 20 15:51:39 2012
        ready to print
/ #

Struppix
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Habe wieder mal ein kleineres Problem.

Inzwischen hatte ich bis auf sane den Netzwerkscanner per tcp am laufen. Jetzt habe ich aber irgendwas verstellt ...

Rich (BBCode):
/ # saned -d5
[saned] main: starting debug mode (level 5)
[saned] read_config: searching for config file
[saned] read_config: done reading config
[saned] saned (AF-indep+IPv6) from sane-backends 1.0.22 starting up
[saned] do_bindings: trying to get port for service "sane-port" (getaddrinfo)
[saned] do_bindings: [0] socket () using IPv6
[saned] do_bindings: [0] setsockopt ()
[saned] do_bindings: [0] bind () to port 6566
[saned] do_bindings: [0] bind failed: Address already in use
[saned] do_bindings: [1] socket () using IPv4
[saned] do_bindings: [1] setsockopt ()
[saned] do_bindings: [1] bind () to port 6566
[saned] do_bindings: [1] bind failed: Address already in use
[saned] do_bindings: couldn't bind an address. Exiting.
[saned] FATAL ERROR; bailing out, waiting for children...
[saned] bail_out: all children exited
/ #

Diese Zeile ist das Ärgernis.
bind failed: Address already in use

Dann habe ich testweise experimentiert was folgendes zeigt:

Rich (BBCode):
/ # xinetd -d
12/4/20@20:26:00: DEBUG: 14384 {handle_includedir} Reading included configuration file: /op                                    t/etc/xinetd.d/sane-port [file=/opt/etc/xinetd.conf] [line=15]
Service defaults
        Instances = 60
        CPS = max conn:25 wait:30
        Bind = All addresses.
        Only from:  localhost(HOST) 127.0.0.1(NUMERIC) 192.168.1.0/255.255.255.0(NET)
        No access: No blocked sites
        Logging to syslog. Facility = authpriv, level = info
        Log_on_success flags = HOST PID
        Log_on_failure flags = HOST

Service configuration: sane-port
        id = sane-port
        flags = IPv4
        socket_type = stream
        Protocol (name,number) = (tcp,6)
        port = 6566
        wait = no
        user = 0
        group = 0
        Groups = no
        PER_SOURCE = -1
        Bind = All addresses.
        Server = /opt/sbin/saned
        Server argv = saned
        Only from:  localhost(HOST) 127.0.0.1(NUMERIC) 192.168.1.0/255.255.255.0(NET)
        No access: No blocked sites
        Logging to syslog. Facility = authpriv, level = info
        Log_on_success flags = HOST PID
        Log_on_failure flags = HOST

12/4/20@20:26:00: ERROR: 14384 {activate_normal} bind failed (Address already in use (errno                                     = 98)). service = sane-port
12/4/20@20:26:00: ERROR: 14384 {cnf_start_services} Service sane-port failed to start and i                                    s deactivated.
12/4/20@20:26:00: DEBUG: 14384 {cnf_start_services} mask_max = 0, services_started = 0
12/4/20@20:26:00: CRITICAL: 14384 {init_services} no services. Exiting...
/ #

Wie gesagt das lief schon. Hab keine blassen Schimmer, was los ist.

Das sieht ja so aus, als würde da schon was laufen ?! Wie kann ich das prüfen ?

Wenn ich mir /etc/services anschaue, wird saned ( war ja vorher aktiv ) immer wieder mit gestartet, obwohl es in der inetd.conf auskommentiert ist. Wo könnte der noch gestartet werden ? Bzw. wie kann ich das beenden ?

Hat jemand vielleicht ne Idee ?

Danke
Struppix
 

Drain

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
144
Punkte für Reaktionen
0
Punkte
0
Manual: Network scanning with HPLIP and Sane

Hi Struppix,
kann dir zu deinem letzten Post nicht wirklich helfen, hab aber doch nen heißen Tipp für dich.


Hast du schon mal in englischen Synology-Forum nachgesehen?:cool:
Manual: Network scanning with HPLIP and Sane (HP all in one)
Dort auch mal die Suchfunktion nach HPLIP und so benutzen.

Ein schönes WE

Drain
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Hi Drain,

danke, aber ich kenne den Post. Auch hier im Forum gibt es ein paar interessante, die tw. noch einfacher und super beschrieben sind. Such zB. mal nach 'sane'.

Jedoch beziehen die sich alle auf USB Scanner oder Multis, die direkt an der DS hängen. Ich hingegen versuche den Scanner direkt im NW zu nutzen.

Gleich mal vorweg:
Das funktioniert auch inzwischen ohne Probleme, dh. das ich mittels Cups, HPLIP und Sane übers NW scannen kann. Ich habe aber irgendwie heute einen Wurm reingebaut, sodaß mir sane die Fehlermeldung siehe #29 raushaut. Das ist verhext.

Scannen mittels 'scanimage <von NW Scanner> auf <Ziel Deiner Wahl> funktioniert.

Struppix

Gut mein nächstes Ziel sollte ja der ScanTo Button sein. Hierzu bräuchte ich SaneTwain ja eigentlich nicht. :mad:
 

Drain

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
144
Punkte für Reaktionen
0
Punkte
0
Hallo Struppix,
nachdem du dich in diese Thema ja schon gut eingearbeitet hast und dich auch mit hplip, sane, etc. auskennst, kannst du mir vielleicht folgende Frage beantworten.

Bei meinem HP Officejet 6500 e710 gibt es zu Scannen folgende Möglichkeiten:
1) Scan von der Scansoftware von Windows aus starten (auf beliebigen Pfad, auch Netzlaufwerk)
2) Scan vom Gerät aus
a) auf das eingebaute Speicherkartenlaufwerk schreiben
b) auf den PC schreiben. Hierfür muß der PC an sein und die Option "An Computer scannen" aktiviert sein.

zu 2b:
Wenn die Option am PC aktiviert wurde und der PC an ist, dann erscheint am Scanner der Speicherort "PC". Da mein PC nicht den ganzen lieben Tag an ist und man auch nur mal was schnell zwischendurch scannen will, wäre es genial, wenn man dafür die Diskstation einrichten könnte.
Sprich auf der Diskstation muß irgendwas laufen, was dem Netzwerkdrucker (Scanner) (ähnlich wie die Option vom PC "An Computer scannen") die Diskstation als Speicherort zur Verfügung stellt.
Hab ich mich verständlich ausgedrückt?

Geht das in die Richtung was du bei dir gerade versuchst zu lösen? Läßt sich dies mit hplip, sane, etc. überhaupt realisieren oder haben diese einen anderen Sinn.

Grüße Drain
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Hi Drain,

auskennen, würde ich dann doch übertrieben nennen. :eek: Aber ich mache Fortschritte.

Den eigentlichen Beitrag findest Du hier.

Das Scanner von einem PC, der nicht neben dem Scanner steht, macht ja eigentlich wenig Sinn. Hier ist die Taste 'ScanTo' direkt am Gerät ideal. Man braucht keinen "laufenden" PC oä. Geräte die das wirklich können sind eher teuer.
Eine Alternative wäre noch, den Scan Befehl den man per PC absetzt, mit einer Warteschleife ( vielleich t 30 sec ) zu versehen, sodaß man zum Scanner trabt, die Vorlage reinschmeißt und fertig. Allerdings läuft dann wieder der PC.

Struppix

PS: Könnt mir bitte einer mal bei dem Problem helfen. Danke
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Ja, tust Du. So lange das nicht läuft, sind die Skripte wertlos.

scan-command ist ein Ordner in dem verschiedene Skripte liegen, wo unterschiedliche Einstellungen für hp-scan drin sind. Das zweite Skript macht nichts weiter den Button zu überwachen, dann die Einstellungen vom Drucker auszulesen, ggf. das Zielverzeichnis hinzuzufügen und dann das zu den Einstellungen passende Skript (also hp-scan) aufzurufen.

Hi Merthos,

inzwischen funktioniert das Scannen im NW mittels sane. Allerdings habe ich feststellen müssen, das im derzeitigen ipkg Paket von hplip scannen deaktiviert wurde. Bisher habe ich mich ums kompilieren drücken können ...

Also würde ich per sane scannen, was funktioniert, wobei wir nun wieder beim Script von #1 wären. Den Scanner habe ich inzwischen auch so eingerichtet, das er in ein Zielverzeichnis scannt.

Ich Dussel hatte im übrigen den falschen Zeilenumbruch drin, sodaß jetzt Script 1 läuft. Das Script spuckt zwar einen Fehler bei "=~" aus, legt aber die "Destination" an, läuft also dennoch.

Das zweite Script bringt abgesehen von Fehlern bei 3x dem Eintrag "./scanto_destination -l", egal welchen Pfad ich einstelle Fehler, bisher keinen Erfolg. Habe den zweiten Block einfach mal auskommentiert.
Was habe ich gemacht.

Wie hier beschrieben habe ich nun einen Ordner namens "scan-command" angelegt, und habe 3 scripte ( mit zB. 'scanimage --format tiff --source Auto > /volume1/download/scan.tiff' ) abgelegt, da hp-scan ja nicht geht.
Das script startet ohne Fehler aber es passiert nichts.

Wie kann ich sehen was es treibt ? Nach dem Start sehe ich unter Prozesse das "Script" und ein "sleep 5".
Wie kann ich das überwachen was es macht, und sollte es trotz des anderen scan Befehls funktionieren ?

Mal ne dumme Frage zum Schluß: Ich habe mein Zielverzeichnis mit in den Scan Befehl geschmissen. Wo finde ich das im Script ?

Danke
Struppix

PS: So wie ich das verstanden habe, sollte die DS ja nun die IP "belauschen" ob ein Scan ansteht, und den dann mit einem eigenen Scan Befehl abholen. Richtig ? Passen dafür, recht trivial von jemanden der es nicht versteht, dafür die Befehle im Script ?
 
Zuletzt bearbeitet:

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Das macht ja auch erst was, wenn Du auf den Button drückst. Ansonsten schläft es. Das schaut soweit OK aus. Ansonsten kannst Du einfach mal das innere if durch ein echo in eine Datei ersetzen, um zu sehen, ob es auch auslöst.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Ansonsten kannst Du einfach mal das innere if durch ein echo in eine Datei ersetzen, um zu sehen, ob es auch auslöst.

Habe schon ein paar Bierse intus. Vielleicht liegts ja daran, aber bei mir kommen da nur Fehlermeldungen.

PS: Das mit dem "Button drückst" ist lustig.

Sei mal so nett, und zeig mir mal was ich ändern müßte. Im Übriger irritiert mich, das das Script und das sleep als 2 Prozesse auftauchen.

Struppix
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Ungefähr so:
Rich (BBCode):
#!/bin/bash
cd "`dirname $0`"
set -o pipefail
while true; do
	# if scan-to button pressed - run the command corresponding to the destination name
	name=`wget -q -O - http://192.168.0.43/hp/device/notifications.xml \
			| egrep -o '<ScanToDeviceDisplay>(.*)</ScanToDeviceDisplay>' \
			| sed -e 's/<ScanToDeviceDisplay>//' \
			| sed -e 's/<\/ScanToDeviceDisplay>//' \
			| sed -e 's/.*://'` && {
		if [ "$name" != "" ]; then
			echo "$name" >> /DATEI
		fi
	}
	sleep 5
done

Das mit den zwei Prozessen ist OK, sleep ist ein Programm, das vom Skript gestartet wird.
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63
Hi Merthos,

danke für den Stups. Ich war nah dran. :eek:

Die Ausgabe bringt leider nur:

Rich (BBCode):
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST
DISKST

Also mal von vorne.

1) Ich habe das Script 1
Rich (BBCode):
#!/bin/bash
# command to maintain the scan-to destination list in the HP Color LaserJet 2840 printer
if [ "$1" == "-a" ]; then
	name=$2
	[[ ! "$name" =~ ":" ]]&& name="$HOSTNAME:$name"
	postdata="AddScanToDest_1=127.0.0.1-$HOSTNAME%5e${name/:/%3a}%5eDestFolder"
	wget -q -O - --post-data="$postdata" http://192.168.1.7/hp/device/set_config.html
elif [ "$1" == "-d" ]; then
	name=$2
	[[ ! "$name" =~ ":" ]]&& name="$HOSTNAME:$name"
	postdata="RemoveScanToDest_1=${name/:/%3a}"
	wget -q -O - --post-data="$postdata" http://192.168.1.7/hp/device/set_config.html
elif [ "$1" == "-l" ]; then
	wget -q -O - http://192.168.1.7/hp/device/info_scanto_destinations.xml \
	| sed -n '/<DeviceDisplay>/s/<\/*DeviceDisplay>//gp'
else
	echo 'usage: scanto_destination -l -a <destname> -d <destname> for listing adding and deleting destinations'
fi

ausgeführt mit

Rich (BBCode):
sh scanto_destination -a TOSHI:DISKST

Das TOSHI entspricht den ersten Buchstaben des PC Hostnamen, das DISKST habe ich gewählt. Ist der Name aus der HP-Toolbox.

Es kommt ein Fehler mit "=~" ...

Dennoch bringt

Rich (BBCode):
/# sh scanto_destination -l
TOSHI:DISKST
/#

Jetzt habe ich Dein Stript 2 genommen

Rich (BBCode):
#!/bin/bash
cd "`dirname $0`"
set -o pipefail
while true; do
	# if scan-to button pressed - run the command corresponding to the destination name
	name=`wget -q -O - http://192.168.1.7/hp/device/notifications.xml \
			| egrep -o '<ScanToDeviceDisplay>(.*)</ScanToDeviceDisplay>' \
			| sed -e 's/<ScanToDeviceDisplay>//' \
			| sed -e 's/<\/ScanToDeviceDisplay>//' \
			| sed -e 's/.*://'` && {
		if [ "$name" != "" ]; then
			echo "$name" >> /volume1/download/HPLIP-Scan_to_Ehternet/ausgabe
		fi
	}
	sleep 5
done

was die Ausgabe oben bringt.

Der Scan startet im übrigen gar nicht. Es vergehen etwa 30 sec bis der Scanner mit einer Fehlermeldung "Kann PC nicht finden oder so ..." abbricht. Denke aber, das die Fehlermeldung auch bei Erfolg kommen wird, da der Scanner das ja nicht merken wird.

Hast Du eine Idee ?

Struppix
 

Struppix

Benutzer
Mitglied seit
10. Apr 2009
Beiträge
882
Punkte für Reaktionen
184
Punkte
63

Anhänge

  • destination_120422.JPG
    destination_120422.JPG
    47,5 KB · Aufrufe: 18

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Die Ausgabe ist doch super, er hat den Button erkannt und auch Dein Verzeichnis (DISKST). Nun mach mal anstelle von dem echo Dein Scankommando.
 
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