Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ShellScript Ubuntu If Condition (https://www.delphipraxis.net/189686-shellscript-ubuntu-if-condition.html)

ferby 10. Jul 2016 10:50

ShellScript Ubuntu If Condition
 
Liebe User,

ich muss ein kleines ShellScript für Ubuntu schreiben und kenne mich leider damit nicht sehr gut aus.

Folgende Anforderung:
Wenn in einem bestimmten Ordner die letzte Änderung an irgendeiner Datei länger als 10 Minuten zurück liegt soll ein E-Mail verschickt werden.

Soweit bin ich:

1: #!/bin/bash
2: log_path="/home/abc/Desktop/prog/log_dir"
3: find $log_path -exec stat \{} --printf="%y\n" \; | sort -n -r | head -n 1
4: DATE=`date +%Y.%m.%d-%H:%M:%S`
5: # IF CONDITION ???
6: echo "$DATE: LOG OF PROG DID NOT CHANGE IN THE LAST 10 MINUTES" | mail -s "PANIC E-MAIL" eine@mail.adresse


Zeile 3 liefert das letzte Änderungsdatum
Zeile 4 liefert das aktuelle Datum

Was mir jetzt fehlt ist die IF-Condition. Also ich möchte in Zeile 5 das letzte Änderungsdatum aus Zeile 3 mit dem aktuellen Datum aus Zeile 4 vergleichen. Wenn hier mehr als 10 Minuten unterschied sind, soll Zeile 6 ausgeführt werden.

Ich habe leider keinen Ahnung wie ich hier ran gehen soll, finde auch keine Beispiele in Google :-(

Valle 10. Jul 2016 11:22

AW: ShellScript Ubuntu If Condition
 
Code:
if [[ $(find $log_path -cmin +10) ]]; then
    echo "Sende E-Mail"
fi
Die Sprache heißt übrigens Bash, nicht ShellScript.

BUG 10. Jul 2016 12:21

AW: ShellScript Ubuntu If Condition
 
Zitat:

Zitat von Valle (Beitrag 1342315)
Die Sprache heißt übrigens Bash, nicht ShellScript.

Das ist doch etwas eng gesehen. Es gibt ja noch genug andere Shells als Bash und POSIX-kompatible Shellscripte sollten auf dem meiseten davon davon laufen :wink:
Die zusätzlichen Bash-Features sind natürlich angenehmer als die Grundausstattung.

Dalai 10. Jul 2016 12:44

AW: ShellScript Ubuntu If Condition
 
Hallo ferby,

hat zwar nichts mit dem Thema zu tun, aber gewöhne dir bitte die Backticks (`) gleich wieder ab! Die Dinger sind unleserlich und lassen sich nicht schachteln. Benutze stattdessen lieber das Konstrukt
Code:
$(befehl)
Das ist erheblich lesbarer, lässt sich schachteln, und man bekommt keine Probleme beim Kopieren irgendwelchen Codes aus irgendwelchen Quellen (z.B. Webseiten); es gab schon Fälle, in denen die Leute statt des Backticks (`) das Apostroph/einfache Anführungszeichen (') benutzten und sich wunderten, warum die Sache dann nicht funktioniert.

MfG Dalai

Valle 10. Jul 2016 12:51

AW: ShellScript Ubuntu If Condition
 
Zitat:

Zitat von BUG (Beitrag 1342317)
Zitat:

Zitat von Valle (Beitrag 1342315)
Die Sprache heißt übrigens Bash, nicht ShellScript.

Das ist doch etwas eng gesehen. Es gibt ja noch genug andere Shells als Bash und POSIX-kompatible Shellscripte sollten auf dem meiseten davon davon laufen :wink:
Die zusätzlichen Bash-Features sind natürlich angenehmer als die Grundausstattung.

Sein Shebang sagt explizit /bin/bash, also ist es auch Bash. ;-)

Der Hinweis diente außerdem dazu, besser nach Lösungen googlen zu können. Ich finde deutlich einfacher Lösungen, wenn ich weiß, wie Dinge korrekt benannt werden. Ich will dem TE nicht unterstellen, falsch gegooglet zu haben, aber es mag ja möglich sein, dass er nach "Ubuntu ShellScript datum vergleich" sucht, was natürlich wenig sinnvolles hervorbringt. Mit "bash date comparison" findet man hingegen eine ganze Menge. In diesem Sinne ist Bash (imho!) der beste Suchbegriff. Mit sh, zsh oder ksh kommst du nicht so weit.

ferby 10. Jul 2016 21:36

AW: ShellScript Ubuntu If Condition
 
Super, danke für eure Hilfe.

Meine finale Lösung:


#!/bin/bash
log_path="/home/bla/Desktop/bla/log_dir/"

if [ ! "$(find $log_path -mmin -10)" ]; then
echo "LOG OF bla DID NOT CHANGE" | mail -s "PANIC E-MAIL bla" "bla@bla.eu"
fi



Ps. Ich dachte immer Bash ist der Name der Shell. Wußte nicht, dass Bash auch der Name für die Sprache ist.

Sherlock 11. Jul 2016 09:34

AW: ShellScript Ubuntu If Condition
 
https://de.wikipedia.org/wiki/Bash_(Shell)

Ist also eine Shell, und als solches akzeptiert sie Shell-Scripte.

Sherlock

Valle 11. Jul 2016 12:22

AW: ShellScript Ubuntu If Condition
 
https://en.wikipedia.org/wiki/Bash_(Unix_shell)

Zitat:

Bash is a Unix shell and command language
Ihr sucht dich auch nicht nach Turbo Pascal wenn ihr Fragen zu Delphi habt, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz