Fehlermeldung bei Befehl mktemp

Dieses Thema im Forum "Linux" wurde erstellt von Hans Bear, 9 Mai 2020.

  1. Hans Bear

    Hans Bear unsichtbar

    Registriert seit:
    23 April 2001
    Beiträge:
    516
    Hallo zusammen. Ich benötige etwas Hilfe.

    Hintergrund ist folgender: Ich bin gerade dabei Pihole auf meinem Server einzurichten.
    Der läuft allerdings mit Slackware 14.2 und Pihole wird auf dieser Platform nicht supported.

    Habe es allerdings (nach Anleitung) schon nahezu hinbekommen, allerdings werden meine Listen
    nicht heruntergeladen.
    Bei jeder einzelner Liste bekomme ich eine Fehlermeldung.
    Ich habe den Codeschnipsel nun isoliert, ich denke das ist der Bösewicht.
    Ich bekomms nicht hin das er ohne meckern läuft.
    Hier ist er copy und paste direkt aus dem pihole-script :

    mktemp -p "/tmp" funktioniert ohne Probleme, sobald das "--suffix" mitspielt kommt dieser Fehler:
    mktemp: invalid option -- '-'

    Bin echt ratlos, und auch Google hilft mir absolut nicht weiter.

    Das kann doch nur ne Kleinigkeit sein. Bei andern funktioniert es doch auch ohne diese Fehlermeldung.

    Erbarmt sich mir wer? Bitte?

    voller Hoffnung

    Hans
  2. dodo

    dodo Anonymer Universaldilettant

    Registriert seit:
    22 April 2001
    Beiträge:
    2.122
    Nimm einfache Anführungszeichen.
  3. Hans Bear

    Hans Bear unsichtbar

    Registriert seit:
    23 April 2001
    Beiträge:
    516
    hab halt schon Anführungszeichen in jeder erdenklichen Konstellation gesetzt.

    Hier:
    Code:
    mktemp -p "/tmp" --suffix=".phgpb"
    mktemp: invalid option -- '-'
    
    mktemp -p "/tmp" "--suffix=".phgpb""
    mktemp: invalid option -- '-'
    
    mktemp "-p "/tmp"" "--suffix=".phgpb""
    mktemp: invalid option -- '-'
    Zuletzt bearbeitet: 9 Mai 2020
  4. eumel_1

    eumel_1 Der Reisende

    Registriert seit:
    2 Juni 2002
    Beiträge:
    10.110
    Code:
    mktemp: invalid option -- '-'
    Was genau steht denn in deinem Script, es scheint, als ob bei den Optionen (nach dem "--" ohne "") noch ein "-" (ohne "") enthalten ist.
    Und auch bei den Anführungszeichen kann man Fehler machen.
  5. schwaller

    schwaller Bekanntes Mitglied

    Registriert seit:
    1 Juni 2001
    Beiträge:
    1.051
    machs mal so:
    Code:
    mktemp -p "/tmp" XXXXXXXX.phgpb
    --suffix=SUFF
    append SUFF to TEMPLATE; SUFF must not contain a slash. This
    option is implied if TEMPLATE does not end in X

    oder anders - wenn das mit dem suffix nicht will, erledgt man das mittels des templates ;)
    Zuletzt bearbeitet: 9 Mai 2020
  6. Hans Bear

    Hans Bear unsichtbar

    Registriert seit:
    23 April 2001
    Beiträge:
    516
    @eumel_1 schau mal bei meinen Beispielen in der ersten Zeile ist immer mein abgesetztes Kommando.
    Da gibts einfach kein einzelnes "-" lasse ich bei den zwei strichen einen weg wird wegen dem "s" von suffix gemeckert.

    @schwaller bei deinem Kommando kommt folgendes:
    Code:
    mktemp -p "/tmp" XXXXXXXX.phgpb
    mktemp: cannot create temp file /tmp/XXXXXXXX.phgpb: Invalid argument
    Das mit dem Template verstehe ich gerade so auf Anhieb nicht. Aber Danke, ist ein neuer Ansatz.
  7. schwaller

    schwaller Bekanntes Mitglied

    Registriert seit:
    1 Juni 2001
    Beiträge:
    1.051
    ok - dann versuch einmal

    Code:
    # Create temp file to store content on disk instead of RAM
    ## patternBuffer=$(mktemp -p "/tmp" --suffix=".phgpb")
    patternBuffer=$(mktemp "/tmp/XXXXXXXX.phgpb")
    
    warum? ich hab nicht genau hingesehen, aber du erhälst die meldung
    Usage: mktemp [-V] | [-dqtu] [-p prefix] [template]

    Heisst, dein mktemp kennt keine Option --suffix

    Normal kann man das dann über das template regeln. das ist quase die vorgabe für den dateinamen.
    X wird dabei ersetzt durch zufallszeichen
    der rest wie . oder aber phgpb bleiben erhalten

    sprich aus XXXXX.abc wird dann z.b h5sde.abc
    oder aus XXX4meXX.XXccb wird 7tM4me9a.nRccb

    du kannst auf komanndoebene gut testen, was geht.
    denn der parameter -u gibt dann nur das ergebnis aus - legt aber nichts an (stichwort: dry run)

    da das mit dem Template aber ja auch nicht ging?! versuche es mal so:
    Code:
    # Create temp file to store content on disk instead of RAM
    ## patternBuffer=$(mktemp -p "/tmp" --suffix=".phgpb")
    patternBuffer=$(mktemp -p "/tmp" )
    
    ABER imho wurd ebei pihole nicht explizit etwas mit der Dateiendung angestellt sondern es wurde einfach nur eine Datei benötigt.
    Und im Linuxbereich sind Dateiendungen eh nicht ganz so wichtig ;)
  8. dodo

    dodo Anonymer Universaldilettant

    Registriert seit:
    22 April 2001
    Beiträge:
    2.122
    ... aber noch keine einfachen Anführungszeichen (') statt der doppelten.
    Mein mktemp (GNU coreutils) 8.28 akzeptiert zwar beides ohne Fehlermeldung, ich kann mich aber sehr wohl an Situationen erinnern, in denen einfache Anführungszeichen obligatorisch waren.

    Just my [​IMG]
  9. eumel_1

    eumel_1 Der Reisende

    Registriert seit:
    2 Juni 2002
    Beiträge:
    10.110
    Wenn da eine gestrippte Linux-Version drauf ist, wird so einiges nicht gehen.
    Ich kann mich an eine Industriekamera erinnern, da war zwar ein Echtzeit-Linux drauf, dies war aber so extrem gestripped, es war extrem umständlich nur den vi aufzurufen.
  10. Hans Bear

    Hans Bear unsichtbar

    Registriert seit:
    23 April 2001
    Beiträge:
    516
    @schwaller ja so gehts dann, thx! nur komisch das mein mktemp anscheinend anders is. könnte das auch an einem nicht richtig konfiguriertem Kernel liegen?

    @dodo achsoo. Mist. Ich habe jetzt erstmal die Taste suchen müssen. Ich glaube das Zeichen hab ich noch nie gebraucht.

    @eumel_1 das ist n ganz normaler PC mit ganz normalem GNU/Linux.

    Danke euch allen.
  11. schwaller

    schwaller Bekanntes Mitglied

    Registriert seit:
    1 Juni 2001
    Beiträge:
    1.051
    nein - wenn man so im embedded bereich unterwegs ist, dann spielt es traditionell eine rolle, wie gross das ganze wird und wie stark speicher benötigt wird. deshalb sind dort häufiger versionen anzutreffen die nicht mit allen optionen, sondern nur mit den benötigten compiliert wurden.

    dies scheint bei dem bei dir vorhandenen mktemp der fall zu sein. in einem solchen fall muss man eben gucken, was brauche ich an funktionalität oder kann ich diese auch anders erreichen.
  12. Hans Bear

    Hans Bear unsichtbar

    Registriert seit:
    23 April 2001
    Beiträge:
    516
    ich hab ja kein embedded system. Aber Danke, ich schau mir mal an mit welchen Optionen kompiliert wurde.
    Wenn überhaupt.. eigentlich läufts ja auch so und ich weiß ja jetzt bescheid.