Linux Kommandozeinel-Hilfe

onki

User
Hallo,

wegen einer neuen Webcam benötige ich einen zusätzlichen CRON-Job auf dem Webserver.
Die neue Webcam lädt alle paar Minuten ein Bild mit dem gleichen Namen hoch (z.b. bild.jpg). Das alte wird immer wieder überschrieben.
Ziel wäre es die bild.jpg in bildyymmtthhss.jpg umzubenennen also quasi einen Zeitstempel hinzufügen.
Ein anderer CRON-Job sorgt dafür, dass maximal 4 Dateien im Verzeichnis weilen.
Den Zeitstempel bekomme ich mit dem Date Aufruf, umbenennen kjann man mit mv.
Im Netz hab ich so etwas gefunden:
for f in /bilderpfad/Snapshot.jpg; do D=$(date -r $(stat -f %B $f) +%Y-%m-%d-%H-%M-%S); mv -vi "$f" "$D-$f"; done
Leider bekomme ich einen Syntax-Fehler. /bin/sh: 1: Syntax error: end of file unexpected (expecting ")")
Wo ist der vergraben?

Gruß
Onki
 

ulfb

User
Moin Onki,

dieser Befehl ist auf so viele Arten falsch im Bezug auf deine Wünsche. Wozu eine Schleife wenn immer nur eine Datei behandelt wird, der date Befehl produziert Namen nach dem Muster 2023-09-26-11-57-50 und nicht nach deinem Muster usw.

Ich würde ein kleines bash Script schreiben und das per cron starten:

#!/bin/bash

if [[ -f "bilderpfad/Snapshot.jpg" ]]; then
mv bilderpfad/Snapshot.jpg bilderpfad/$(date +%y%m%d%H%M%S).jpg
fi

Das macht exakt das was du beschreibst. der if Befehl checkt ob überhaupt eine Snapshot.jpg da liegt, wenn ja benennt er sie um nach z.B. 230926120034.jpg, fertig.
 

onki

User
Hallo,

Danke für die Hilfe. Muss nur sehen wie ich das Bash Skript dann über Plesk aufgerufen bekomme. Ist ja kein Befehl im klassischen Sinn.
Eine Frage noch zum Bilderpfad (z.B. var/www/......) Am Anfang mit Schrägstrich (/var/www/... ) oder ohne (var/www/....) ?

Wo deponiert man die Skripte üblicherweise auf einem Webserver mit mehrerern Domains? Ich nutze aktuell /usr im Hauptpfad der Webpräsenz, also /var/www/vhosts/domainname/usr

Gruß
Onki
 
Absolute Pfade in Linux/Unix beginnen immer mit /
 

Mario12

User
Hi Onki. Ich empfehlen dir, ein .bin oder .usr Verzeichnis auf dem Webserver zu erstellen und dann das zu nutzen.
Der Grund ist, dass gut konfigurierte Webserver alle Dateien mit führendem . nicht ausliefern.
Man kann sonst das Script im Browser im Klartext abrufen. Das wird dann blöd, wenn bspw. internen Pfade, Passworte oder sonstige "geheime" Informationen drin stehen.

Beste Grüße
Mario
 
Ansicht hell / dunkel umschalten
Oben Unten