bash: delete dir if exists over ssh

  • hallo,


    hab das problem, dass ich über ssh ein directory löschen will, wenn es existiert.
    wenn ich

    Code
    ssh 10.0.0.1 "test -d /tmp/testdir && rm -r /tmp/testdir"


    ausführe, funktioniert dass zwar, aber wenn das dir nicht existiert liefert der command einen errorcode und mein bashscript bricht ab, da ich "#!/bin/bash -e" verwende. worauf ich aber nicht verzichten kann



    danke für eure hilfe

  • Warum nicht einfach

    Code
    ssh 10.0.0.1 "rm -fr /tmp/testdir"

    Oder soll gezielt abgebrochen werden, wenn es kein Ordner ist?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)


  • ich kann ich da ne if in den ssh cmd übergeben? das geht bei mir irgendwie nicht

    Warum nicht einfach

    Code
    ssh 10.0.0.1 "rm -fr /tmp/testdir"

    Oder soll gezielt abgebrochen werden, wenn es kein Ordner ist?


    das würde jetzt für rm funken, aber es geht da eher drum, wie man über ssh nur bedingt einen cmd ausführt ohne einen error-code zu bekommen, wenn die condition nicht zutrifft:

    Code
    ssh 10.0.0.1 "test <condition> && <any cmd>"
  • Geht denn "test ! condition || <any cmd>", mal so rein logisch betrachtet? Wenn die Bedingung nicht zutrifft, wird die andere Seite des Oder ausgewertet. Wenn der erste Teil schon false ist, wird das zweite nicht ausgewertet.


    Lars.

  • ich kann ich da ne if in den ssh cmd übergeben?


    Man kann das alles als One-Liner schreiben:

    Code
    ssh ich@server "if [ -d /tmp/testdir ]; then echo \"Verzeichnis existiert\"; else echo \"Verzeichnis existiert nicht\"; fi"


    Alternativ kann man auch erzwingen, dass man immer einen Rückgabewert 0 bekommt:

    Code
    ssh ich@server "test -d /tmp/testdir && rm -r /tmp/testdir ||:"

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!