[gelöst] BusyBox 1.8.2: [touch -t] geht nicht

Tippfehler

IPPF-Promi
Mitglied seit
14 Sep 2004
Beiträge
3,271
Punkte für Reaktionen
29
Punkte
48
Hallo,
ich habe versucht mit touch -t 0909091500 dateiname,
den Zeitstempel einer Datei auf einer Fritz!Box 7270 zu ändern. Leider funktioniert das nicht. Es gibt nur die Option -c.
Man kann die Zeit nur auf die aktuelle Zeit umstellen.
Gibt es einen Trick, wie man es auf der Fritzbox machen kann?
(Ich möchte Callfiles von Asterisk zu bestimmten Zeiten ausführen lassen.)
 
Zuletzt bearbeitet:
Googlen hat keinen out-of-tree Patch für "-t" ausfündig gemacht.

Was möglich wäre ist, dass man touch aus dem coreutils-Paket kompiliert und dadurch die Funktionalität erhält.
 
Danke für die schnelle Antwort, so etwas hatte ich mir schon gedacht.
Leider bekomme ich das nicht hin, weil ich nicht mal wüßte, wo ich anfangen muß.
Beim Googlen habe ich auch gesehen, dass ich nicht der Einzige mit diesem Problem bin. Eine Lösung habe ich nicht gefunden.
Kann man evtl. ein normales touch-Programm (von einem anderen Linux) zusätzlich installieren?
 
Hallo,
ich bin heute zufällig auch auf exakt dieses Problem gestoßen. Daraufhin habe ich kurzerhand einfach die kompletten GNU CoreUtils v7.6 mit Hilfe des Freetz Toolchains für die mipsel-CPU der FritzBox kompiliert.

Die fertig kompilierten Binaries könnt ihr euch (zusammen mit dem Sourcecode) unter folgender URL herunterladen.

coreutils-7.6-mips.tar.gz (11,8 MB)

Für die Verwendung auf der FritzBox ist es ausreichend, einfach die entsprechenden Binaries aus dem bin-Verzeichnis z.B. auf einem USB-Stick zu lagern.

Vielleicht hilft's ja weiter - mir hat's jedenfalls geholfen. :D
 
Danke, es geht jetzt.

Jetzt muß ich nur noch herausfinden, wie man mit touch -t die Uhrzeit auf genau 15 Sekunden in die Zukunft ändern kann.
Falls da auch Jemand einen Tipp hat, wäre ich sehr dankbar.
Leider habe ich Probleme mit falschen Formaten.
Busybox ist da leider etwas eigen.
Die richtige Uhrzeit habe ich schon mal:
date -D %s -d $(($(date +%s) + 15))
Die muß ich jetzt nur noch in den touch Befehl bekommen.
 
Zuletzt bearbeitet:
Manchmal sind die Lösungen viieel einfacher als man denkt.
Wenn du schon die gnu coreutils verwendest, wie wär's dann mit "now+15seconds"? :rolleyes:

$DATE -d now+15seconds +%Y%m%d%H%M.%S

Mit $DATE ist dabei das date der coreutils gemeint, nicht das busybox date.
Die Ausgabe des obigen Befehls kannst du dann einfach an touch weiter geben.
 
Geht das so?
touch -t $($DATE -d now+15seconds +%Y%m%d%H%M.%S)
 
Bei mir funktioniert's so jedenfalls ohne irgendwelche Probleme. Man darf nur nicht durcheinander kommen, wann man nun die gnu- und wann die Busybox-Variante eines Befehls gerade verwendet. :)
 
Entschuldige bitte, dass ich nochmal fragen muß, ich bekomme es einfach nicht hin:
/var/media/ftp/USBFlashMemory-01/bin/touch -t $(/var/media/ftp/USBFlashMemory-01/bin/$DATE -d now+15seconds +%Y%m%d%H%M.%S) /var/media/ftp/USBFlashMemory-01/test
geht nicht, ich habe das $ schon an allen Stellen probiert und verschiedene Klammern gesetzt.
 
Kein Problem, ich befürchte, dich hat mein $DATE etwas durcheinander gebracht.

Kurz zusammengefasst:

date
ist ein Befehl.

$DATE
ist eine Variable, wird durch den Wert der Variable ersetzt.

$(...)
ist ein Programmaufruf, das $()-Konstrukt wird durch die Ausgabe des Programms ersetzt.


Das sollte es etwas klarer machen, für was eigentlich die ganzen Dollar- und Klammer-Zeichen da sind. :)

Ich habe in meinen Code-Schnipseln nun $DATE benutzt, im Sinne von "in dieser Variable sollte der Pfad zu dem date-Befehl der Coreutils drin stehen". Quasi um klar zu machen, dass es sich hier nicht um den busybox date Befehl handelt.

Ich würde das Script nun wie folgt aussehen lassen:
Code:
COREUTILS=/var/media/ftp/USBFlashMemory-01/bin
DATE=$COREUTILS/date
TOUCH=$COREUTILS/touch

$TOUCH -t $($DATE -d now+15seconds +%Y%m%d%H%M.%S) /var/media/ftp/USBFlashMemory-01/test

Damit werden in den ersten Zeilen Variablen gesetzt, so dass du später mit $TOUCH und $DATE direkt die jeweiligen Binaries der coreutils ansprechen kannst.
Die letzte Zeile führt den Befehl dann schlussendlich durch, nur eben nicht mit date (busybox), sondern mit $DATE, was mit der obigen Variablen-Deklaration auf die coreutils-Binaries zeigt.

Ich hoffe, ich konnte soweit Licht ins Dunkle bringen. :rolleyes:
 
Klasse, Danke nochmal, jetzt geht alles so, wie ich es mir vorgestellt habe.
 

Statistik des Forums

Themen
246,285
Beiträge
2,249,440
Mitglieder
373,878
Neuestes Mitglied
klaarapirkko
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.