PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : batch script funktioniert nicht :(



hainbloedchen
27-03-2021, 21:20
Hallöchen Leute,
Bin neu hier ...
und habe natürlich ein problem mit einem script.
schon mal zu Anfang ... ich habe nicht den blassesten schimmer vom sripten und compilieren und Rechteverwaltung
ich versuche mich schon seit ein paar tagen an einem script das ich nicht zum laufen bringe:
Meine Daten vom Notebook :

Betriebssystem: PCLinuxOS 2021
KDE-Frameworks-Version: 5.80.0
Qt-Version: 5.15.2
Kernel-Version: 5.10.25-pclos1
Art des Betriebssystems: 64-bit
Graphics Platform: X11
Prozessoren: 2 × Intel® Core™2 Duo CPU P8600 @ 2.40GHz
Speicher: 7,7 GiB Arbeitsspeicher
Grafikprozessor: Mesa DRI Mobile Intel® GM45 Express Chipset

Das Script sieht folgendermaßen aus :

#!/bin/bash
case $(file -bi "$1") in
application/pdf*)
lpr "$1" #
sleep 10
rm -f "$1"
esac
~/drucken/*.pdf 7,1 All

die Ausgabe der Konsole Lautet:

[hain@localhost drucken]$ foo.sh
/home/hain/drucken/foo.sh: Zeile 8: /home/hain/drucken/knopfel.pdf: Keine Berechtigung

Was mache ich falsch ?
der scheiß Netzwerkdrucker Canon mx860 will auch nicht ansprechen
Die foo Shell wird über Thunderbird angesteuert
Das ganze soll so funktionieren ... Eine mail wird empfangen der PDF anhang wird in den Ordner "drucker" kopiert ....
foo.sh soll den befehl über thunderbird kriegen um das Script auszuführen

Das exportieren von Thunderbird zum "drucken" Ordner klappt
ansonsten funktioniert anscheinend nichts :(

ich hoffe das mir jemand helfen kann
best regards
Hain

rais
29-03-2021, 23:13
Aloha,

Hallöchen Leute,
Bin neu hier ...
und habe natürlich ein problem mit einem script.

dann wäre Deine Frage besser im Scriptsprachen-Unterforum aufgehoben.


schon mal zu Anfang ... ich habe nicht den blassesten schimmer vom sripten und compilieren und Rechteverwaltung
ich versuche mich schon seit ein paar tagen an einem script das ich nicht zum laufen bringe:

Sorry, das klingt etwas nach ``ich versteh zwar kein englisch, versuche aber gerade, ein Buch ins Englische zu übersetzen''.
Ein paar Grundlagen zur verwendeten Sprache (hier bash) darfst Du Dir ruhig zulegen -- besonders, wenn Du damit rumhantierst.


#!/bin/bash
case $(file -bi "$1") in
application/pdf*)
lpr "$1" #
sleep 10
rm -f "$1"
esac
~/drucken/*.pdf 7,1 All

die Ausgabe der Konsole Lautet:

[hain@localhost drucken]$ foo.sh
/home/hain/drucken/foo.sh: Zeile 8: /home/hain/drucken/knopfel.pdf: Keine Berechtigung

Was mache ich falsch ?

keine Ahnung, aber wenn ich mir


#!/bin/bash
case $(file -bi "$1") in
application/pdf*)
lpr "$1" #
sleep 10
rm -f "$1"
esac
ansehe, würde ich davon ausgehen, daß das Script (foo.sh) die zu druckende Datei als Parameter erwartet, also z.B.


$ foo.sh ~/drucken/knopfel.pdf

Damit würde zumindest der hier getätigte file-Aufruf so etwas wie ``application/pdf; charset=binary'' o.ä. liefern, womit dann die case-Anweisung auch einen Match finden kann, wonach dann die Datei per lpr zum Drucker geschubst wird und nach einer kurzen Wartezeit wird die Datei dann gelöscht (rm).
Was hingegen


~/drucken/*.pdf 7,1 All
in dem Script machen soll, erschließt sich mir nicht.
Du versuchst hier, alle in ~/drucken/ befindlichen pdf-Dateien auszuführen, was erhoffst Du Dir davon?
Na, vllt kammt da ja schon Deine ``keine Berechtigung''-Meldung her...

Disclaimer: meine bash-Kenntnisse sind eher rudimentär.

Gruß

hainbloedchen
30-03-2021, 23:47
Danke für deine Antwort:)
Ich sage ja,,, habe absolut keinen Schimmer von der Materie :(
also um es ein bisken verständlicher auszudrücken..
Meine Frau ist im Homeoffice... ich habe ihr ein kleines Büro im Spitzboden eingerichtet.Damit sie ihre Ruhe hat .
mit allem Zip und Zap. Der Firmen-Laptop den sie bekommen hat bietet keine möglichkeiten nen Drucker anzuschliessen bzw. keine Administrations Rechte. Nun muss sie am Tag bis zu 30 Dokumente ausdrucken.
Das passiert im mom. so ... sie schickt sich von dem Laptop ne mail auf ihr privates Mailpostfach.. der private PC steht allerdings 2 Etagen tiefer .... Also ist es eine heiden rennerei für sie...
Der Firmenlaptop hat Win 10 inst. und der priv. hat PClinuxos auf dem Thunderbird installiert ist . Der Canon-Drucker hangt am Netzwerk und steht bei ihr im Spitzboden-Büro
Thunderbird bietet die möglichkeit den Anhang der Mail automatisch zum Ordner "drucken" zu schicken... die funktion Drucken bei Thunderbird druckt die ganze Mail aus und nicht den Anhang.
Nun dachte ich mir das ein Script das ganze erledigen könnte . Das Script scheint ja schonmal nicht ungeeignet zu sein.
die ~/drucken Geschichte habe ich wieder gelöscht. nun komme ich nicht weiter .... Thunderbird bietet die möglichkeit das foo.sh Script anzusteuern... Ich weiss nur nicht ob es Klappt...Ich weiss eben nicht wie ich es prüfen kann .da anscheinend zuviele Fehler vorhanden sind... für mich sieht es eben auch so aus das Thunderbird nicht das macht was es machen sollte mit der foo.sh geschichte .
eine Idee wäre noch vielleicht ein Script zu erstellen das den "drucken " ORdner auf das auftauchen eines PDFs überwacht und dann der foo.sh bescheid sagt....
Vielleicht hast du ja ne Idee wie man weiter vorgehen könnte.
Lieben Dank
Hain

rais
01-04-2021, 22:24
Der Firmen-Laptop den sie bekommen hat bietet keine möglichkeiten nen Drucker anzuschliessen bzw. keine Administrations Rechte. Nun muss sie am Tag bis zu 30 Dokumente ausdrucken.

Nun, wenn Deine Frau einen Firmenrechner hat, mit dem sie irgend etwas ausdrucken soll, dann sollte doch die Firma Deiner Frau dafür eine Lösung bieten.


Thunderbird bietet die möglichkeit den Anhang der Mail automatisch zum Ordner "drucken" zu schicken...
Was Du für foo.sh in etwa versuchen könntest:


#!/bin/bash
BASIS=~/drucken # der Ordner mit den zu druckenden pdf-Dateien
if [ -d $BASIS ]; then # wenn es diesen Ordner denn auch gibt:
DONE=$BASIS/gedruckt # Ordner für `zum Drucker abgeschickte' Dateien
STRANGE=$BASIS/seltsam # Ordner für Dateien, die zwar .pdf heißen, laut `file' jedoch keine sind
# die beiden folgenden Zeilen testen zunächst, ob's einen entsprechenden Ordner bereits gibt. Wenn nicht, wird dieser angelegt (was fehlschlagen kann, wenn es bereits eine Datei mit selbem Namen gibt)
test -d $DONE || mkdir $DONE
test -d $STRANGE || mkdir $STRANGE
# hier geht's eigentlich erst los: weise nacheinander der Variablen I den Namen der gefundenen pdf zu:
for I in $BASIS/*.pdf; do
TST=`file -bi "$I"` # Ergebnis von file -bi "$I" in TST speichern
case $TST in # weiter wie bisher (fast)
application/pdf*)
lpr "$I" && mv $I $DONE/. # drucke I, wenn erfolgreich, verschiebe I in den `zum Drucker abgeschickte Dateien'
;;
*)
echo "$I ist wohl doch kein pdf ($TST)."
mv $I $STRANGE/.
;;
esac
done
fi

OTOH hab ich hier keinen Drucker, mit dem ich das Script hätte testen können...

Wie dem auch sei, die pdf-Dateien werden hier bestenfalls verschoben und nicht gelöscht.Du kannst Dir im Zweifelsfall die (Original-)pdf nochmal ansehen.

Gruß

hainbloedchen
02-04-2021, 15:07
Mahlzeit Rainer :)

Danke für die tolle Arbeit :)
leider funtioniert es nicht ...Ich weiss nicht wo der Fehler liegt..
Die pdf Datei wird nach wie vor in dem Ordner "drucken" kopiert
aber ne verarbeitung findet anscheinend nicht statt
Ich habe den Ordner "gedruckt " und "seltsam" angelegt aber auch dort tut sich nichts
dein Script habe ich im Ordner /bin abgelegt und es ausführbar sowie und chmod 744 rechte vergeben
muss ich der bashrc auch den ornder "seltsam und gedruckt " bekannt geben ?

vielleicht kannste mir wieter helfen
es wäre auch zu schade für die tolle arbeit
lieben Gruß
Hain


achja... der scheiss Konzern hat über 1500 Laptops raus gegeben und die Admins stellen sich quer ... mit der Begründung das sie das dann bei 1500 Laptops machen müssten....
Ich finde das sie schon im Vorfeld den Fehler gemacht haben.#
nun gut .. ich werde es nicht ändern können

rais
02-04-2021, 19:09
Moin moin,


leider funtioniert es nicht ...Ich weiss nicht wo der Fehler liegt..
Die pdf Datei wird nach wie vor in dem Ordner "drucken" kopiert
aber ne verarbeitung findet anscheinend nicht statt

in dem Fall würde ich erstmal testen, was bei


lpr ~/drucken/name-einer-der-pdfs

passiert. Wenn damit schon kein Zettel aus dem Drucker kommt, kann's mit dem Script auch nicht klappen. Evtl. musst Du dem lpr-Befehl den Druckernamen bzw. wo dieser Drucker denn zu finden ist, mitgeben, siehe `man lpr'.
Wenn der Ausdruck so geklappt hat, kannst Du das Shellscript auf der Konsole aufrufen...wenn das auch geklappt hat, dann wurde es wohl zuvor nicht aufgerufen.


Ich habe den Ordner "gedruckt " und "seltsam" angelegt aber auch dort tut sich nichts

tu die nochmal weg. Wenn das Script ausgeführt wird, sollten die beiden Ordner eigentlich vom Script angelegt werden (vorausgesetzt, Du hast Schreibrechte in dem ~/drucken-Ordner).


dein Script habe ich im Ordner /bin abgelegt und es ausführbar sowie und chmod 744 rechte vergeben

damit darfst nur Du das Script ausführen. Vllt besser 755? Wobei, wer versucht eigentlich, das Script auszuführen? Du? Deine Frau? In letzterem Fall müssten ja dann die Dateien im drucken-Unterverzeichnis Deiner Frau landen und sie müsste Besitzer des Scripts sein...


muss ich der bashrc auch den ornder "seltsam und gedruckt " bekannt geben ?

Nö, wozu? In ~/drucken/gedruckt landen lediglich pdfs, die erfolgreich von lpr verarbeitet wurden. Das hab ich nur für den Fall eingebaut, wenn lpr zwar seine Arbeit verrichtet hat, aber trotzdem kein/kein vernünftiger Ausdruck zustande kam (Toner alle o.ä.), damit Du im Zweifelsfall die Datei zu Fuß per `lpr ~/drucken/gedruckt/name-der-pdf' nochmal anstoßen kannst.
In ~/drucken/seltsam landen Dateien, die zwar die Endung .pdf haben, aber laut `file -bi' keine sind.
Das kannst Du natürlich auch als Kontrollmechanismus verwenden, ob das Script überhaupt ausgeführt wird: kopiere einfach eine schnöde Textdatei nach ~/drucken und nenne sie .pdf. Also z.B. cp foo.sh ~/drucken/foo.pdf
Solange diese `foo.pdf' im ~/drucken-Verzeichnis liegt, wurde das Script gar nicht ausgeführt.

Frohe Ostern