Anzeige:
Ergebnis 1 bis 6 von 6

Thema: batch script funktioniert nicht :(

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    25.03.2021
    Beiträge
    3

    Question batch script funktioniert nicht :(

    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
    Geändert von hainbloedchen (29-03-2021 um 11:38 Uhr)

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Aloha,
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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.
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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.
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    #!/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
    Code:
    #!/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.
    Code:
    $ 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
    Code:
    ~/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ß
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.03.2021
    Beiträge
    3
    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
    Geändert von hainbloedchen (30-03-2021 um 23:52 Uhr)

  4. #4
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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.
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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:
    Code:
    #!/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ß
    Rainer
    There's nothing a good whack with a hammer won't fix!

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.03.2021
    Beiträge
    3
    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
    Geändert von hainbloedchen (02-04-2021 um 15:14 Uhr)

  6. #6
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Moin moin,
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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
    Code:
    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.
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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).
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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...
    Zitat Zitat von hainbloedchen Beitrag anzeigen
    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
    Rainer
    There's nothing a good whack with a hammer won't fix!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •