FHEM Forum

Verschiedenes => Off-Topic => Thema gestartet von: TomLee am 10 Januar 2022, 14:53:23

Titel: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 Januar 2022, 14:53:23
Hallo,

mich hat das gestern Stunden beschäftigt auf diese Lösung zu kommen einen Ordnerinhalt über eine ftp-Verbindung zu löschen:

#!/bin/bash
HOST=192.168.188.1
USER=bli
PASSWORD=bla

ftp -inv $HOST <<EOF
user $USER $PASSWORD
mdelete /Intenso-RainbowLine-00/FRITZ/faxbox/*
    bye
EOF


Es gäb noch mit curl und lftp die Möglichkeit es anzugehen, wird aber dann unnötig kompliziert und länger, mein ich verstanden zu haben.
ftp und lftp müsste ich bei OS auch erstmal nachinstallieren.

Ich hab mit der Bash nur wenig Erfahrung, kann wer dazu was sagen und vlt. eine Variante aufzeigen die ohne Script auskommt, die einfach über einen Systemaufruf in FHEM möglich wäre ?

Gruß

Thomas

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 10 Januar 2022, 15:48:21
Einen kompletten (gefüllten) ftp-Ordner kannst Du über ftp nicht löschen, da dieses im Protokoll nicht vorgesehen ist und deshalb von den (meisten) ftp-Clients auch nicht durchgeführt wird.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 Januar 2022, 16:06:13
ZitatEinen kompletten (gefüllten) ftp-Ordner kannst Du über ftp nicht löschen

Versteh ich nicht ganz, das brauch /will ich ja gar nicht, einen gefüllten Ordner löschen, wie gezeigt nur den Inhalt.

/Intenso-RainbowLine-00/FRITZ/faxbox/ beinhaltet beliebig viele Dateien, die lösche ich alle mit dem oben gezeigten Script, nur die versteckten bleiben erhalten. Ich könnte den Ordner noch löschen nachdem ich ihn geleert habe, darum gehts mir ja aber nicht.

Ich wollte gerne wissen ob es die Möglichkeit gibt das ganze ohne Script auszuführen, über FHEM, meinetwegen mit irgendeinem anderen Befehl wie ftp.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 Januar 2022, 16:14:43
Vlt. nochmal anders weil ich mit der Bash ja nicht so bewandert bin und ich nicht ausschliessen möchte das ich es nur noch nicht richtig verstanden.

Mein Verständnis bis jetzt ist das es nur über das Script geht, ich kann nicht in der Shell irgendwie den Befehl eingeben, also auch nicht über Fhem, weil so klappts nicht wegen dem EOF geh ich davon aus, sry ist halt für mich Neuland.

ftp -inv 192.168.188.1 <<EOF user bli bla mdelete /Intenso-RainbowLine-00/FRITZ/faxbox/* bye EOF
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 10 Januar 2022, 16:32:15
Ahhhh... jetzt verstehe ich Dich.

Das "normale" ftp kann auf der "Konsole" direkt keine Befehle entgegennehmen. Was Du mit <<< machst, ist eine Eingabenumleitung. So etwas kann, meines Wissens, direkt FHEM nicht. Die Eingabemaske von FHEM hat nichts mit bash etc. zu tuhen.

ftp kennt aber die Angabe einer "Befehlsdatei", Stichwort -s, siehe z.B. https://ss64.com/bash/ftp.html (https://ss64.com/bash/ftp.html)

Allerdings würde ich die Ausführung solcher Befehle immer in eine eigens Script auslagern, welches ich mit "" Starte. Hat den Vorteil, das es "nonblocking" geht.

Hinweis: Willst Du wirklich ftp verwenden? Wird mittelfristig verschwinden .....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 Januar 2022, 17:02:19
Zitatftp kennt aber die Angabe einer "Befehlsdatei", Stichwort -s, siehe z.B. https://ss64.com/bash/ftp.html

Danke, bleibt im Hinterkopf.

ZitatAllerdings würde ich die Ausführung solcher Befehle immer in eine eigens Script auslagern,

Danke, sowas wollt ich zum Verständnis hören.

ZitatHinweis: Willst Du wirklich ftp verwenden? Wird mittelfristig verschwinden .....

Keine ... schickt heute mehr ein Fax, nur Werbung. Ich werd das was ich mir gerade bastle sehr wsl. nie verwenden, das hätt ich vor 20 Jahren gebraucht, ich baus mir aber trotzdem, weil ichs schon immer haben wollte  ;D und auch Spass macht umzusetzen / zu sehen wie sich Fragen klären die man sich immer gestellt hat wie man was wie umsetzen kann (unabhängig von FHEM jetzt).

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 10 Januar 2022, 17:22:50
Hi,

noch zur Erklärung, das hier ist ein HEREDOC
ftp -inv $HOST <<EOF
user $USER $PASSWORD
mdelete /Intenso-RainbowLine-00/FRITZ/faxbox/*
    bye
EOF
zwischen EOF und EOF wird ALLES so wie es ist (mit Zeilenumbruch) per << in die FTP Verbindung geschickt. Das geht mMn (wie schon gesagt) nur wirklich richtig mit der shell und einem Script. Ich sehe auch noch das Problem der Zeit, ich weiß nicht was passiert wenn die ftp Verbindung kurz versauert :)
Die FB kann doch auch SMB, binde das Laufwerk doch darüber an (https://heinz-otto.blogspot.com/2018/02/windows-server-freigabe-auf-dem.html) und mounte es bei Bedarf und lösch dann. Das wäre aus meiner Sicht einfacher und ginge wahrscheinlich wirklich aus der Befehlszeile:
"mount /mnt/Fritzbox;rm /mnt/Fritzbox/faxbox/*;umount /mnt/Fritzbox"

Gruß Otto
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 Januar 2022, 17:42:50
Ja ich weiß jetzt (seit gestern  8)) das es auch über Samba geht, Samba hab ich auf meinem jetzigen System auch installiert (da ist aber irgendwie was im Hinterkopf bei der nächsten Neuinstallation zu versuchen darauf zu verzichten).

Aber ja, du hast schon recht mit einfacher, ich mach mich später, morgen mal da ran. Danke.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 10 Januar 2022, 17:48:15
Nein, Du brauchst kein samba, bei den meisten Systemen brauchst Du nichts installieren. Lies mal meinen Link die ersten Sätze :)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 10 Januar 2022, 19:23:59
Wie Otto schrieb: Windows-Mounts mounten kann der Linux Kernel ohne Samba ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 11 Januar 2022, 16:41:47
Houston, ich hab ein weiteres Problem.

Warum wird die Datei jetzt nicht gefunden, muss ich den Pfad anders angeben ?
Ich mach zum Test ein set im Device selbst:
set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf
und bekomme diese Meldung:
2022.01.11 16:34:32 3: TelegramBot_SendIt tb_TelegramBot: Failed with :FAILED file :/mnt/FRITZNAS/fax.pdf: not found or empty:
2022.01.11 16:34:32 3: TelegramBot_Callback tb_TelegramBot: resulted in NonBlockingGet: returned FAILED file :/mnt/FRITZNAS/fax.pdf: not found or empty from SendIt

fhem@FHEMPIOS:~$ ls -l /mnt/FRITZNAS
insgesamt 16
-rwxr-xr-x 1 fhem dialout 11303 Jan 11 15:20 fax.pdf

Zum Zeitpunkt des Befehl absetzen ist der Pfad 100% gemounted.


Am Ende hab ich das vor:

#!/bin/bash

mount /mnt/FRITZNAS;
mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;
perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS;


edit:

wenn ich zur Kontrolle die Datei nach /opt/fhem kopiere will ( weil dort klappt das senden mit sendDocument), gibts diese Meldung:

... kann nicht zum Lesen geöffnet werden: Veraltete Dateizugriffsnummer (file handle)

das kann man umgehen wenn man in der fstab (nach Ottos Anleitung) noserverino ergänzt.

Als workaround klappt dann das senden des Dokument wenn man die Datei nach /opt/fhem kopiert:

mount /mnt/FRITZNAS;
mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;
cp /mnt/FRITZNAS/fax.pdf /opt/fhem/fax.pdf;
perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS;


Ich würd aber gerne gleich aus dem gemounteden Pfad senden, jetzt müsste ich noch die Datei in /opt/fhem noch löschen.

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 11 Januar 2022, 18:25:54
Und was sind die Rechte des Ordners?
ls -lhad /mnt/FRITZNAS
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 11 Januar 2022, 18:36:52
Ich hab gerade editiert  :P

ZitatUnd was sind die Rechte des Ordners?

fhem@FHEMPIOS:~$ ls -lhad /mnt/FRITZNAS
drwxr-xr-x 2 fhem dialout 0 Jan 11 18:25 /mnt/FRITZNAS
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 11 Januar 2022, 18:39:16
Mit welchen Optionen mountest Du denn?

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 11 Januar 2022, 18:45:17
//192.168.188.1/FRITZ.NAS/Intenso-RainbowLine-00/FRITZ/faxbox /mnt/FRITZNAS cifs noauto,users,noserverino,user=bli,password=bla
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 11 Januar 2022, 18:51:37
Hi TomLee,

mount /mnt/FRITZNAS;
mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;
perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS;
Ich vermute da mountes Du nicht als user fhem. Und fhem hat kein recht den "außen" gemounteten Pfad zu lesen.

So könnte das in der FHEM Kommandozeile gehen
"mount /mnt/FRITZNAS; mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf"; set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf; "rm /mnt/FRITZNAS/*;umount /mnt/FRITZNAS"

Oder so als user fhem auf System Ebene:
sudo -su fhem bash -c 'mount /mnt/FRITZNAS;mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";rm /mnt/FRITZNAS/*;umount /mnt/FRITZNAS;'

Gruß Otto
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 11 Januar 2022, 18:57:08
ZitatIch vermute da mountes Du nicht als user fhem.

Ich ruf zum Test in der Kommandozeile das letzte gezeigte Script auf:

"/opt/fhem/getsendfax.sh &"

Deine Beispiele schau ich mir später an.

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 11 Januar 2022, 20:09:24
Zitat von: TomLee am 11 Januar 2022, 18:45:17
//192.168.188.1/FRITZ.NAS/Intenso-RainbowLine-00/FRITZ/faxbox /mnt/FRITZNAS cifs noauto,users,noserverino,user=bli,password=bla
Du hälts Dich nicht an meinen Vorschlag - ich meine meine mit user vs username (versionsabhängig) war irgendwas. Eventuell ist nicht wirklch richtig gemountet. Hast Du Dein Script per Hand / zu Fuß probiert? Klappen wirklich die Rechte?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 12 Januar 2022, 08:54:11
In der fstab hat er die Option "users" in dem Mount. Deshalb darf er .....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 12 Januar 2022, 13:15:46
Zitatedit:

wenn ich zur Kontrolle die Datei nach /opt/fhem kopiere will ( weil dort klappt das senden mit sendDocument), gibts diese Meldung:


... kann nicht zum Lesen geöffnet werden: Veraltete Dateizugriffsnummer (file handle)

das kann man umgehen wenn man in der fstab (nach Ottos Anleitung) noserverino ergänzt.

Als workaround klappt dann das senden des Dokument wenn man die Datei nach /opt/fhem kopiert:


mount /mnt/FRITZNAS;
mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;
cp /mnt/FRITZNAS/fax.pdf /opt/fhem/fax.pdf;
perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS;

Ich würd aber gerne gleich aus dem gemounteden Pfad senden, jetzt müsste ich noch die Datei in /opt/fhem noch löschen.

Das war etwas verwirrend weil in dem gezeigten Script dann doch die Datei aus dem gemounteden Pfad gesendet werden soll, das war ein Kopierfehler, sry.

Nach etlichen Versuchen hab ich jetzt festgestellt das das senden aus dem gemounteden Pfad auch klappt.
Wichtig ist eine Verzögerung beim Aufruf des Scripts, und da gabs immer wieder Probleme weil ich mich an die Zeit langsam rangetastet hatte, erst hat es mit 20 Sekunden gut geklappt, dann mal wieder nicht, es scheint mit 22 Sekunden jetzt ausreichend, hatte wohl damit zu tun das es beim testen mal zwei Dateien sind (wenn ich mir selbst ein Fax schicke) die übertragen werden müssen oder wenn ich "von Hand" mit nur einer testete.

Ich fass nochmal alles zusammen:

fstab:
//192.168.188.1/FRITZ.NAS/Intenso-RainbowLine-00/FRITZ/faxbox /mnt/FRITZNAS cifs noauto,users,noserverino,user=bli,password=bla

Script:
#!/bin/bash

mount /mnt/FRITZNAS;
mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;
perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS;



Aufruf bei Faxeingang in der myUtils:

return fhem("set $sonoswz playSound 20 Fax-Beep;set $echok speak Fax Eingang;set tb_TelegramBot msg Faxeingang $extnr ($extn);define at_faxget at +00:00:22 {system('/opt/fhem/getsendfax.sh &')}") if $intnr ==  :P;



Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 12 Januar 2022, 13:42:19
Schau nochmal bitte hier wegen dem Syntax user vs username
https://wiki.ubuntuusers.de/mount.cifs/
Die Box im Abschnitt Benutzername Passwort
Kann sein ich verstehe es nicht umfänglich, aber ich würde mir an der Stelle username einprägen 😉
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 12 Januar 2022, 13:49:49
Ich habs ausprobiert gehabt mit username gestern Abend und das warf einen Fehler, ich probiers später nochmal, jetzt geht nicht.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 12 Januar 2022, 15:46:32
ZitatIch habs ausprobiert gehabt mit username gestern Abend und das warf einen Fehler, ich probiers später nochmal, jetzt geht nicht.

Nehm ich zurück, es klappt auch mit username. ::) 8)

Danke.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 18 Januar 2022, 10:12:54
Eine fixe Zeit nach dem Event im Callmonitor zu warten um das Fax dann abzuholen ist keine gute Idee.
Hab festgestellt/getestet das so ein Fax je nach Größe mehrere Minuten brauchen kann bis es am Ende in dem Ordner landet.
Vor der AT-Variante hatte ich es mit inotify/notify gelöst gehabt, das erscheint mir die bessere Umsetzung, auch wenn das dann zwei zusätzliche Definitionen benötigt.

 
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 18 Januar 2022, 11:59:15
aber ist es wichtig ob Du das Fax nach 10 sec oder 10 min löschst? Oder geht es Dir doch um die Nachricht: Fax ist da? Das kann ja die FB per Email.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 18 Januar 2022, 12:00:54
Wobei dann das Fax sogar in der eMail "drin" steht ......
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 18 Januar 2022, 12:35:56
Aufgrund der Lösung hier hab ich die Mail-Zustellung abgeschaltet, ich will die Werbe-Faxe(n  ;D) nur per Telegram und nirgendwo noch gespeichert haben.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 18 Januar 2022, 13:36:33
Zitat von: Otto123 am 18 Januar 2022, 11:59:15
aber ist es wichtig ob Du das Fax nach 10 sec oder 10 min löschst?...

Zum löschen hab ich eigentlich vor mich mal mit msgDialog zu beschäftigen um damit am Ende zu entscheiden ob gelöscht werden kann oder nicht.

Zitat von: Otto123 am 18 Januar 2022, 11:59:15
Oder geht es Dir doch um die Nachricht: Fax ist da? Das kann ja die FB per Email.

Achso, war mir gar nicht aufgefallen:  ;D
Zitatreturn fhem("set $sonoswz playSound 20 Fax-Beep;set $echok speak Fax Eingang;set tb_TelegramBot msg Faxeingang $extnr ($extn);define at_faxget at +00:00:22 {system('/opt/fhem/getsendfax.sh &')}") if $intnr ==  :P;
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 19 Januar 2022, 11:03:36
Du kannst die Faxe auf eine eigene Mail schicken lassen .. mache ich bei mir. Auf der Mailadresse wird dann automatisch "verarbeitet" ... allerdings betreibe ich auch einen internen Mailserver
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 20 Januar 2022, 12:57:44
Wen es interessiert:

Meine ersten Gehversuche mit msgDialog, klappt auch alles erstmal, ist noch nicht ganz durchdacht aber so in die Richtung dachte ich die ganze Zeit, wie ich das mit dem mounten/umounten löse ist mir noch nicht ganz klar, hier zum Test hab ich in dem gestsendfax-Script das unmounten rausgenommen und unmounte dann via Telegram:

defmod md_fax msgDialog {\
"Fax": {\
"message": [\
"{return('(Drucken) ')}",\
"{return('(Sichern) ')}",\
"{return('(Löschen) ')}",\
"(abbrechen) ",\
"{return('Was kann ich für dich tun ?')}"\
],\
"Drucken": {\
"commands": [\
"{system(q(lpr -P HL-2035 /mnt/FRITZNAS/fax.pdf;;rm /mnt/FRITZNAS/*;;umount /mnt/FRITZNAS &))}"\
]\
},\
"Sichern": {\
"commands": [\
"{system(q(cp /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;;rm /mnt/FRITZNAS/*;;umount /mnt/FRITZNAS &))}"\
]\
},\
"Löschen": {\
"commands": [\
"{system(q(rm /mnt/FRITZNAS/*;;umount /mnt/FRITZNAS &))}"\
]\
} \
}\
}
attr md_fax allowed rr_Thomas
attr md_fax group Telegram
attr md_fax room Push

setstate md_fax 2022-01-20 12:43:43 state Initialized
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 20 Januar 2022, 14:02:30
Zitat von: TomLee am 20 Januar 2022, 12:57:44
wie ich das mit dem mounten/umounten löse ist mir noch nicht ganz klar, ...

Es dürfte doch nix dagegen sprechen immer beim Starten/Beenden von Fhem zu mounten/unmounten, oder ?

defmod not_mnt_FBNAS notify global:INITIALIZED|global:SHUTDOWN { $EVENT eq 'INITIALIZED' ? system(q(mount /mnt/FRITZNAS &)) : system(q(umount /mnt/FRITZNAS &))}
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 20 Januar 2022, 14:29:34
was spricht dagegen den mount Befehl am Anfang von deinem system() Aufruf zumachen?
Genau genommen sollte man immer noch prüfen ob es geklappt hat...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 20 Januar 2022, 14:49:53
Zitatwas spricht dagegen den mount Befehl am Anfang von deinem system() Aufruf zumachen?

Na weil ich das dreimal auch definieren muss und schreibfaul bin ? Morgen fällt mir wieder was neues ein dann mounte/unmounte/schreibe ich das wieder ?
Was spricht dagegen das immer (zumindest wenn FHEM läuft) gemounted ist ?

Ich mein ich hab das schon mit bekommen das du das so handhabst, immer vorher mounten und wieder unmounten bei jedem Zugriff, aber ich muss das ja nicht auch so machen, ausser du überzeugst mich von den Vorteilen.

ZitatGenau genommen sollte man immer noch prüfen ob es geklappt hat...

Ich komm gerade nicht mit wie das gemeint ist, auf was prüfen, ob gemounted und nur dann weiter ?

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 20 Januar 2022, 15:01:26
Grundsätzlich:
Alles kann schiefgehen, wie z.B. der mount. Deshalb sollte man
1. den Fehlercode auswerten ($?)
2. nachprüfen, obs geklappt hat
Wie eben in jedem Programm. Macht es Fehlertolleranter

Der dauerhafte mount hat den nachteil, das es zu problemen z.B. bei reboot des Quellsystemes kommen kann. Was nicht gemountet ist, kann keine Probleme verursachen. Bei Backupsystemen kommt noch ein 2. Aspekt hinzu: Was nicht gemountet ist, kann nicht komprimitiert werden. *)

*) deshalb sind bei mir backupplatten nicht mal "angeschaltet". Was nicht läuft ....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 20 Januar 2022, 15:37:00
Danke für das erläutern.

Ich schlussfolgere daraus, weil jetzt wirds ja noch länger, das ich am Ende für meine kleine Spielerei bis jetzt drei Bash-Scripte erstellen müsste, weil hier wird ja immer empfohlen die Shell-Befehle in ein Script auszulagern und nicht alles über einen System-Befehl in FHEM.

Morgen fällt mir wieder was neues ein, brauch ich wieder ein neues Script, das summiert sich mit der Zeit, da hat das für mich schon was wenn man alles einfach nur in der DEF einer msgDialog-Definition stehen hat, meine jetzigen Gedanken dazu.

edit:

Ok, mit Parameterübergabe braucht man nur ein Script und es ist alles etwas kürzer geworden wie ich mir vorgestellt hatte.

Bei dem if mit den zwei Bedingungen bin ich mir unsicher ob das korrekt ist mit [ $1 == 0 ]

#!/bin/bash

um="umount /mnt/FRITZNAS"
mount /mnt/FRITZNAS;
if [ $? -ne 0 ] || [ $1 == 0 ]; then
    echo "Fehler !"
elif [ $1 == "print" ]
    then
    lpr -P HL-2035 /mnt/FRITZNAS/fax.pdf;
    rm /mnt/FRITZNAS/*;
    $um;
elif [ $1 == "save" ]
    then
    cp /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;
    rm /mnt/FRITZNAS/*;
    $um;
elif [ $1 == "delete" ]
    then
    rm /mnt/FRITZNAS/*;
    $um;
fi


defmod md_fax msgDialog {\
"Fax": {\
"message": [\
"{return('(Drucken) ')}",\
"{return('(Sichern) ')}",\
"{return('(Löschen) ')}",\
"(abbrechen) ",\
"{return('Was kann ich für dich tun ?')}"\
],\
"Drucken": {\
"commands": [\
"{system('/opt/fhem/tgfax.sh print &')}"\
]\
},\
"Sichern": {\
"commands": [\
"{system('/opt/fhem/tgfax.sh save &')}"\
]\
},\
"Löschen": {\
"commands": [\
"{system('/opt/fhem/tgfax.sh delete &')}"\
]\
} \
}\
}
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 20 Januar 2022, 16:41:44
Wäre es so OK zu prüfen ?

#!/bin/bash
mount /mnt/FRITZNAS;
if [ $? -ne 0 ]; then
    echo "Fehler !"
else
lpr -P HL-2035 /mnt/FRITZNAS/fax.pdf;
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS
fi


Sry, wie mach ich in dem Script "nichts" statt was zurückzugeben ?

Kann ich in einem Bashscript auch sowas wie ein kurzes if machen ?

In Perl geht sowas return if <Bedingung>;

Geht es ähnlich auch in der Scriptsprache ?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 20 Januar 2022, 21:15:18
Zum ersteren: https://github.com/heinz-otto/raspberry/blob/master/setupBackupFhem2Cifs.sh

qpath=$1
dpath=$2
LOG=/var/log/backupFhem.log
{
date
if mount "$dpath"
then
    # only piping works inside crontab
    echo "set BackupFhem gestartet"|$fhemcl $url
    if rsync -rut ${qpath}/backup ${qpath}/restoreDir ${dpath}/fhem/$(hostname)
    then
       echo "set BackupFhem gesichert"|$fhemcl $url
    else
       echo "set BackupFhem RsyncError"|$fhemcl $url
    fi
    umount "$dpath"
else
    echo "set BackupFhem MountError"|$fhemcl $url
fi
} >> $LOG 2>&1

Ich glaube zweiteres ist auch dabei :)
Aber - als Rückgabe in Bash gibt es zwei Kanäle: der normale und Error.
Ich lese immer ganz hier https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_008_003.htm
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 21 Januar 2022, 09:56:31
ZitatAber - als Rückgabe in Bash gibt es zwei Kanäle: der normale und Error.

Komm noch nicht ganz mit, Werniemann sagt was von Fehlercode auswerten/prüfen und du machst, in dem Beispiel, wie ich das sehe einfach nur ein if mount <Pfad>, habs aber noch nicht nachvollzogen was da genau passiert dann.

Meine gezeigte Prüfung/Bedingung [ $? -ne 0 ] hatte ich nachvollzogen und die greift auch wenn der mount-Befehl was zurück gibt, sonst gehts weiter.

Ich hab bis jetz aber auch noch nicht wirklich verstanden was die normale Rückgabe ist und was die Fehler-Meldung (zu wenig gelesen).

ZitatSry, wie mach ich in dem Script "nichts" statt was zurückzugeben ?

Einfach nur ein return und das Programm wird verlassen, hab ich heute Morgen im Kopf wenn ich mich an das wenig gelesene von gestern Abend erinnere, allerdings wird dann ja auch was zurückgegeben, habs auch noch nicht ausprobiert.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 21 Januar 2022, 10:07:54
if mount <Pfad> - ist nur wahr wenn der mount (der Befehl) erfolgreich war -> siehe (https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_006_000.htm#RxxKap00600004004E0C1F017182)
Deswegen geht ja auch die Kurzform mit UND für den Erfolg
mount <Pfad> && Mache was mit dem Pfad
oder mit ODER für den Misserfolg
mount <Pfad> || Das ging in die Hose
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 21 Januar 2022, 15:31:38
"if <Befehl>" und auswerten von $? ist "kurzgesagt" das gleiche. Ich persöhnlich finde aber das Trennen von Befehl und Errorauswertung gut.

Damit kann man dann auch Fehler in Pipes auswerten "Befehl1 | Befehl2 | Befehl3" .. dann zeigt $? zwar nur den Fehlercode vom letzten Befehl (im Normalfall) .. zum durchlesen z.B. https://unix.stackexchange.com/questions/14270/get-exit-status-of-process-thats-piped-to-another (https://unix.stackexchange.com/questions/14270/get-exit-status-of-process-thats-piped-to-another)

Sorry aber die Woche war anstrengend, deshalb aktuell wenig Hilfe von mir ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 21 Januar 2022, 21:48:33
Zitat6.4.1 Rückgabewert mit return  downtop
Wird der Befehl return innerhalb einer Funktion ausgeführt, wird die Funktion verlassen und der Wert n als Ganzzahl zurückgegeben. Die Syntax:

return [n]
Wird hierbei nicht der Parameter n verwendet, dann wird der Rückgabewert des zuletzt ausgeführten Kommandos zurückgegeben.

Ich hätt gerne eine Bestätigung/Meldung was/das was ausgeführt wurde.

Wie krieg ich denn den Rückgabewert des zuletzt ausgeführten Kommandos in den set-Befehl ?

So nicht:


Zitatelif [ $1 == "delete" ]
    then
    rm -v /mnt/FRITZNAS/*;
    ret=return
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";
    $um;
fi

Wie krieg ich den Rückgabewert von rm -v /mnt/FRITZNAS/*; in den set-Befehl ?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 21 Januar 2022, 22:02:02
nicht probiert aber sollte so gehen ret=$(rm -v /mnt/FRITZNAS/*;)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 21 Januar 2022, 22:04:15
 :)

Danke
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 21 Januar 2022, 22:53:39
jetzt noch den Perl-Befehl selbst inkl. Variable, wieder in einer Variablen, zum sparen, wenns geht.

Ich habs auch mit tblog=$(perl fhem.pl 7072 "set tb_TelegramBot msg $ret";"); probiert, beides klappt nicht.

Kann man das mit der Variable in einer Variable überhaupt machen ?

Zitat#!/bin/bash

um="umount /mnt/FRITZNAS"
tblog="perl fhem.pl 7072 "set tb_TelegramBot msg $ret";"

if mount /mnt/FRITZNAS
then
if [ $1 == "print" ]
    then
    cp /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;
    lpr -P HL-2035 /mnt/FRITZNAS/fax.pdf;
    ret=$(rm -v /mnt/FRITZNAS/*; )
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";

    $um;
elif [ $1 == "save" ]
    then
    ret=$(cp -v /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;)
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";
    ret=$(rm -v /mnt/FRITZNAS/*; )
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";
    $um;

elif [ $1 == "delete" ]
    then
    ret=$(rm -v /mnt/FRITZNAS/*; )
    $tblog;
    $um;
fi

fi
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 21 Januar 2022, 23:10:47
Du meinst Befehl in Variable und Variable ausführen?
Das ist ein bisschen speziell. Hab hier was gefunden: https://unix.stackexchange.com/questions/444946/how-can-we-run-a-command-stored-in-a-variable
Geht z.B. über array:
cmd=(ls -lha)
"${cmd[@]}"

Geht auch mit Variable
cmd1='ls'
cmd2='-lha'
cmd=($cmd1 $cmd2)
"${cmd[@]}"
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 21 Januar 2022, 23:19:46
Oder vlt. doch ?

So klappts auf jedenfall mal nicht:

Zitat#!/bin/bash

um="umount /mnt/FRITZNAS"
tblog=(perl fhem.pl 7072 "set tb_TelegramBot msg $ret";)

if mount /mnt/FRITZNAS
then
if [ $1 == "print" ]
    then
    ret=$(cp -v /mnt/FRITZNAS/fax.pdf /media/usbstick/blia/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;)
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";
    lpr -P HL-2035 /mnt/FRITZNAS/fax.pdf;
    ret=$(rm -v /mnt/FRITZNAS/*; )
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";

    $um;
elif [ $1 == "save" ]
    then
    ret=$(cp -v /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;)
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";
    ret=$(rm -v /mnt/FRITZNAS/*; )
    perl fhem.pl 7072 "set tb_TelegramBot msg $ret";
    $um;

elif [ $1 == "delete" ]
    then
    ret=$(rm -v /mnt/FRITZNAS/*; )
    $tblog;

"${tblog[ @ ]}"

    $um;
fi

fi
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 21 Januar 2022, 23:28:33
nicht probiert:
cmd=(perl fhem.pl 7072 set tb_TelegramBot msg)
...
ret=$(rm -v /mnt/FRITZNAS/*; )
cmd+=($ret)
"${cmd[@]}"

Das funktioniert
cmd=(ls -lha)
ret='/opt/fhem'
cmd+=($ret)
"${cmd[@]}"

Ob das schön ist - wird Werner sagen :)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 00:06:47
Sicher das man die Quotes weglassen kann in dem Perl-Befehl ?

Wenn ich das mache:

cmd=(perl fhem.pl 7072 set tb_TelegramBot msg)
...
elif [ $1 == "delete" ]
    then
    ret=$(rm -v /mnt/FRITZNAS/*;)
    cmd+=($ret)
    "${cmd[@]}"
    $um;
fi


steht das im Log:
Usage: set <name> <type-dependent-options>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.

Unknown command tb_TelegramBot, try help.
Usage: msg [<type>] [<@device>|<e-mail address>] [<priority>] [|<title>|] <message>
Unknown command '/mnt/FRITZNAS/Fax.pdf', try help.
Unknown command wurde, try help.
Unknown command entfernt, try help.


Wenn ich die Quotes wieder reinnehme:

cmd=(perl fhem.pl 7072 "set tb_TelegramBot msg ")
...
elif [ $1 == "delete" ]
    then
    ret=$(rm -v /mnt/FRITZNAS/*;)
    cmd+=(.$ret)
    "${cmd[@]}"
    $um;
fi


Siehts etwas besser aus

TelegramBot_Set: Command msg, no peers and no text/file specified
Unknown command '/mnt/FRITZNAS/Fax.pdf', try help.
Unknown command wurde, try help.
Unknown command entfernt, try help.


Es macht auch keinen Unterschied ob ich ein Semikolon hinter cmd+=($ret) und "${cmd[ @ ]}" mache, nur wegen der Angabe von cmd+=($ret) und "${cmd [@ ]}" kommt es zu Unknown command '/mnt/FRITZNAS/Fax.pdf', try help.
Unknown command wurde, try help.
Unknown command entfernt, try help.

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 10:45:52
war mir klar das es damit Probleme gibt :)
Womit der Aufruf perl fhem.pl nicht klar kommt: Die einzelenen Array Elemente (getrennt am Leerzeichen) werden als einzelne Argumente übergeben. fhem.pl will es aber als ein Argument. Da muss wohl eine andere Idee/Konstrukt her ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 13:54:31
Ein kleiner Teilerfolg, aber ob mich das der Lösung näher bringt ? Glaubt nicht.

So, mit '"'$ret'"'", wird die Nachricht zumindest gesendet, aber $ret wird nicht evaluiert.
Mit den einfachen/doppelten Quotes hab ich verschiedene Varianten durch, aber entweder wird nicht evaluiert oder es werden nur die Quotes gesendet.

cmd=(perl fhem.pl 7072 "set tb_TelegramBot msg '"'$ret'"'")

...

elif [ $1 == "delete" ]
    then
    ret=$(rm -v /mnt/FRITZNAS/*);
    "${cmd[@]}";
    $um;
fi


Mit einer Funktion hab ichs auch schon probiert:

cmd() { perl fhem.pl 7072 "set tb_TelegramBot msg $ret" }

...

elif [ $1 == "delete" ]
    then
    ret=$(rm -v /mnt/FRITZNAS/*);
    cmd;
    $um;
fi

fi


Da steht im Log dann:
/opt/fhem/tgfax.sh: Zeile 36: Syntax Fehler: Unerwartetes Dateiende.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 22 Januar 2022, 13:58:49
Obwohl ich jetzt 2 mal gelesen habe, habe ich das aktuelle Problem nicht verstanden.

- Bist Du jetzt auf bash oder perl-Ebene?
- Wann werden welche Variablen nicht gesetzt?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 14:02:54
Am Ende wird das Script in #45 aufgerufen, die letzten Posts sind nur Änderungen darin.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 14:06:13
#43 erklärts besser.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 22 Januar 2022, 14:12:56
Zitattblog="perl fhem.pl 7072 "set tb_TelegramBot msg $ret";"
Kann so nicht funktionieren
1. Die Innenliegenden " hättest Du maskieren müssen. Sonst beendet der 2. " den String, der mit dem ersten " beginnt ...
2. Bash tauscht sofort Variablen aus. Es wird also im String $ret nicht so gespeichert, sondern durch den Inhalt von $ret
Beide Probleme hättest DU lösen können, in dem Du als Außere Stringbegrenzer den ' verwendest. Dann löst bash den String nocht auf sondern speichert in komplett.

Aber noch etwas:
Da Du über die telnet-schnitstelle gehst, warum speicherst Du die Daten durch Aufruf von fhem.pl? Besser währe nc, oder wenn Du SSL-verwendest netcat. Hat weniger "Overhead" als fhem.pl
(Und wenn Du unbedingt fhem.pl verwenden willst, brauchst Du auch kein perl davor zu schreiben, das fhem.pl mit dem berühmten #!perl beginnt ...)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 14:17:50
Zitat von: TomLee am 22 Januar 2022, 13:54:31
So, mit '"'$ret'"'", wird die Nachricht zumindest gesendet, aber $ret wird nicht evaluiert.
das geht auch mit cmd=(perl fhem.pl 7072 "set SD3 $ret") Aber $ret wird eben zum Zeitpunkt dieses Befehls evaluiert und nicht später wenn Du es gerne willst.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 14:29:14
Zitat von: Otto123 am 22 Januar 2022, 14:17:50
Aber $ret wird eben zum Zeitpunkt dieses Befehls evaluiert und nicht später wenn Du es gerne willst.

Da hakt doch was ?

Hier/so klappts doch $ret zu übergeben:
ret=$(rm -v /mnt/FRITZNAS/*; )
perl fhem.pl 7072 "set tb_TelegramBot msg $ret";
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 15:03:43

schau Dir doch an was im Array steht:
echo ${cmd[@]}
Aber schau Dir auch die Anzahl der Elemente an:
cmd=(perl fhem.pl 7072 "set SD3 toggle")
echo "${cmd[@]}"
echo ${#cmd[*]}
und hier
cmd=(perl fhem.pl 7072 set SD3 )
ret='toggle'
cmd+=($ret)
echo "${cmd[@]}"
echo ${#cmd[*]}

Oder schau aufs letzte Element
echo "${cmd[-1]}"Ich habe noch keine Idee wie mans anders hinbekommt.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 15:13:11
Ja , ich schaus mir jetzt nochmal ganz genau an.

Ich hätt noch was wie es noch ausführlicher geht auszugeben:
cmd=(perl fhem.pl 7072 "set SD3 toggle")
declare -p cmd
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 15:21:15
Jetzt:
cmd=(perl fhem.pl 7072)
cmd2='set SD3'
ret='toggle'
# jetzt wird $ret evaluiert und das FHEM Kommando zusammen gebaut
cmd3="$cmd2 $ret"
# jetzt wird das gesamte Kommando als Array zusammengebaut
cmd+=("$cmd3")
# nur zur Kontrolle einzel Ausgabe: gesamtes Kommando, Anzahl der Elemente und letztes Element im Array,
echo " das Kommando "${cmd[@]}" besteht aus ${#cmd[*]} Elementen. Das letzte Element: "${cmd[-1]}""
# Feuer, Feuer bäh
"${cmd[@]}"
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 22 Januar 2022, 15:24:00
@TomLee

Gratulation .. Du hast mir ein Commando gezeigt, was ich noch nicht kannte.
https://linuxhint.com/bash_declare_command/ (https://linuxhint.com/bash_declare_command/)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 15:28:19
Genau das Beispiel :
Zitat von: Otto123 am 22 Januar 2022, 15:03:43
und hier
cmd=(perl fhem.pl 7072 set SD3 )
ret='toggle'
cmd+=($ret)
echo "${cmd[@]}"
echo ${#cmd[*]}

Will bei mir einfach nicht, echo "${cmd[ @ ]}" gibts aber korrekt aus:

fhem@FHEMPIOS:~$ cmd=(perl fhem.pl 7072 set du_Testx )
fhem@FHEMPIOS:~$ ret='on'
fhem@FHEMPIOS:~$ cmd+=($ret)
fhem@FHEMPIOS:~$ echo "${cmd[@]}"
perl fhem.pl 7072 set du_Testx on
fhem@FHEMPIOS:~$ "${cmd[@]}"
Usage: set <name> <type-dependent-options>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
Unknown command du_Testx, try help.
Unknown command on, try help.
fhem@FHEMPIOS:~$

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 15:35:59
Schau in #58
geht auch noch kürzer, einen Schritt mit cmd3 weglassen und
cmd=(perl fhem.pl 7072)
cmd2='set SD3'
ret='toggle'
cmd+=("$cmd2 $ret")
"${cmd[@]}"
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 15:42:28
Ja, hab ich schon nachträglich so verstanden, das kann aber nicht die Lösung sein, dann schreib ich lieber das Kommando mehrfach hin und gut ist, noch dazu, keiner muss weiter darüber grübeln wie es möglich wäre ;D

edit:

Nur zur Bestätigung, ja wie in deinem letzten Beispiel gezeigt klappt es.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 16:52:35
Wenn du mehere Runden fliegen willst, ist es besser so. Sonst addiert er die Befehle immer auf
cmd1=(perl fhem.pl 7072)
cmd2='set SD3'
ret='toggle'
cmd=(${cmd1[@]} "$cmd2 $ret")
"${cmd[@]}"

So schlecht finde ich es jetzt nicht ...  8) und grübeln hält fit
Was statt der letzten Beiden Zeilen auch geht:
${cmd1[@]} "$cmd2 $ret"

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 17:17:02
#!/bin/bash

um="umount /mnt/FRITZNAS";

cmd1=(perl fhem.pl 7072)
cmd2='set tb_TelegramBot msg'

if mount /mnt/FRITZNAS
then
if [ $1 == "print" ]
    then
    ret=$(cp -v /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;)
    ${cmd1[@]} "$cmd2 $ret"
    lpr -P HL-2035 /mnt/FRITZNAS/fax.pdf;
    ret=$(rm -v /mnt/FRITZNAS/*;)
    ${cmd1[@]} "$cmd2 $ret"

    $um;
elif [ $1 == "save" ]
    then
    ret=$(cp -v /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf;)
    ${cmd1[@]} "$cmd2 $ret"
    ret=$(rm -v /mnt/FRITZNAS/*;)
    ${cmd1[@]} "$cmd2 $ret"
    $um

elif [ $1 == "delete" ]
    then
    ret=$(rm -v /mnt/FRITZNAS/*)
    ${cmd1[@]} "$cmd2 $ret"
    $um
fi

fi


joa, mit der letzten kurzen Variante kann man auch Leben ;D

Du willst grübeln ? Ich hab keine Vorstellung davon was ich wie wo genau bei CUPS nehmen/auslesen kann um eine Rückmeldung zu bekommen das der Druckauftrag auch wirklich raus ist, das gedruckt worden ist geht (bei mir nicht) zu weit, aber das er "raus" / an den Drucker geschickt wurde mein ich sollte, wie auch immer, möglich sein.

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 17:42:43
noch kürzer :)
irgendwo am Anfang einmalig:
ret='rm -v /mnt/FRITZNAS/*;'
Die Ausführung
${cmd1[@]} "$cmd2 $($ret)"
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Januar 2022, 17:58:19
Nee klappt erstmal nicht, aber gute Idee.
Danke, ich schau später weiter, jetzt geht nicht mehr.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 22 Januar 2022, 18:01:04
Also mein Beispiel klappt:
cmd1=(perl fhem.pl 7072)
cmd2='set SD3'
ret='echo toggle'
${cmd1[@]} "$cmd2 $($ret)"
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 23 Januar 2022, 16:48:12
Zitat von: Otto123 am 22 Januar 2022, 17:42:43
noch kürzer :)
irgendwo am Anfang einmalig:
ret='rm -v /mnt/FRITZNAS/*;'
Die Ausführung
${cmd1[@]} "$cmd2 $($ret)"

Es lag an dem Semikolon  ::), "unten" hat es mit geklappt "oben" darf es nicht sein.


Jetzt hab ich noch ewig rumgespielt um auf die richtige Syntax für den Kopierbefehl "oben" zu kommen.

So war er vorher "unten":
ret=$(cp -v /mnt/FRITZNAS/fax.pdf /media/usbstick/bli/bla/Fax/fax_`date +%y%m%d_%H%M`.pdf)

So klappt jetzt alles:

#!/bin/bash

# parameters <faxrec|print|save|delete> <mountpoint1> [mountpoint2]

um="umount $2"
pdf='fax.pdf'
cmd1=(perl fhem.pl 7072)
cmd2='set TYPE=TelegramBot msg'
ret="rm -v $2/*"
ret1="cp -v $2/$pdf $3/fax_`date +%y%m%d_%H%M`.pdf"

if mount $2
    then

    if [ $1 == 'faxrec' ]
        then
        mv $2/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf $2/$pdf
        perl fhem.pl 7072 "set TYPE=TelegramBot sendDocument $2/$pdf"
        $um

    elif [ $1 == 'print' ] && [ ! -z "$(ls  $2)" ]
        then
        ${cmd1[@]} "$cmd2 $($ret1)"
        lpr $2/$pdf
        ${cmd1[@]} "$cmd2 $($ret)"
        $um

    elif [ $1 == 'save' ] && [ ! -z "$(ls  $2)" ]
        then
        ${cmd1[@]} "$cmd2 $($ret1)"
        ${cmd1[@]} "$cmd2 $($ret)"
        $um

    elif [ $1 == 'delete' ] && [ ! -z "$(ls  $2)" ]
        then
        ${cmd1[@]} "$cmd2 $($ret)"
        $um

    else
        ${cmd1[@]} "$cmd2 No File(s) available"
        $um
    fi

fi


Eigentlich müsste man die Rückgaben (bei print/save) sammeln und dann nur eine Statusmitteilung, nach dem unmounten, senden.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 23 Januar 2022, 19:37:41
Da hst Du ja alle Register gezogen :)
BTW `befehl` ist mMn das gleiche wie $(befehl) ich finde die zweite Form besser lesbar. Zumal die Backticks gerne bei cut&paste verwurschtelt werden. ;D
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 23 Januar 2022, 20:06:05
Noch nicht ganz  ;D, bin jetzt gleich am Drucker, ich meine wenn es der Standarddrucker ist kann man sich den Namen beim lpr-Befehl normal sparen 8)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 25 Oktober 2022, 18:19:10
Steh jetzt schon seit gestern aufm Schlauch, bin den Thread auch schon mehrfach durch, wie mach ich das hier jetzt sinnvoll mit dem unmounten, ohne eine zeitlang zu warten ?

#!/bin/bash

# parameter(s) <mountpoint1>

mo="mount $1"
umo="umount $1"

if mount $1
    then
perl fhem.pl 7072 "backup"
fi
sleep 120
$umo
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 25 Oktober 2022, 19:57:31
Weißt nicht, ob Du den Status vom FHEM-Backup ermitteln kannst. Wann je, in einer Schleife dieses abfangen ...

Aber noch eine Kleinigkeit:
Vor den umount würde ich ein sync einfügen. sync zwingt den Kernel dazu, die Platte "aktuell" zu machen. Nach dem Sync 2-3 Sec warten und dann erst den unmount. Zusätzlich würde ich überall bei Fehlern Fehlermeldungen rausgeben, auch $? mit rausgeben ist eine Gute Idee. Du machst es hier z.B. bei umount definitiv nicht!

Was mir noch auffällt:
- Am Anfang definierst Du einen mo und umo Variable, die om Variable verwendest Du aber nicht ....
- $1 würde ich am Anfang in eine Variable schreiben. Macht es einfacher, ein Script zu lesen (Auch wenn es hier einfach ist, gutes Scriptschreiben sollte man sich aber immer angewöhnen)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 25 Oktober 2022, 20:51:33
Fang mal am hinten an.

ZitatWas mir noch auffällt:
- Am Anfang definierst Du einen mo und umo Variable, die om Variable verwendest Du aber nicht ....
- $1 würde ich am Anfang in eine Variable schreiben. Macht es einfacher, ein Script zu lesen (Auch wenn es hier einfach ist, gutes Scriptschreiben sollte man sich aber immer angewöhnen)

Erwischt und jetzt nochmal kontrolliert, ich verstehs auch nicht, es ist definitiv nicht gemounted:

fhem@FHEMPIOS:~$ mount
/dev/mmcblk0p2 on / type ext4 (rw,noatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=439400k,nr_inodes=109850,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
tmpfs on /run/user/999 type tmpfs (rw,nosuid,nodev,relatime,size=94536k,mode=700,uid=999,gid=20)
fhem@FHEMPIOS:~$ mount
/dev/mmcblk0p2 on / type ext4 (rw,noatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=439400k,nr_inodes=109850,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
tmpfs on /run/user/999 type tmpfs (rw,nosuid,nodev,relatime,size=94536k,mode=700,uid=999,gid=20)


Wenn ich das Skript, abgeändert, so ausführe:

#!/bin/bash

# parameter(s) <mountpoint1>

mo="mount $1"
umo="umount $1"

# if mount $1
#    then
perl fhem.pl 7072 "backup"
#fi

sleep 120
# $umo

echo "Backup gemacht"


wird trotzdem das Backup "geschrieben".

in der fstab hab ich stehen:

//192.x.x.x/fritz.nas/Intenso-RainbowLine-00 /mnt/FRITZNAS cifs noauto,users,noserverino,username=bla,password=bla

wenn ich in der Shell folgendes vornehme:

fhem@FHEMPIOS:~$ umount /mnt/FRITZNAS
fhem@FHEMPIOS:~$ mount /mnt/FRITZNAS
fhem@FHEMPIOS:~$ mount
/dev/mmcblk0p2 on / type ext4 (rw,noatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=439400k,nr_inodes=109850,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
tmpfs on /run/user/999 type tmpfs (rw,nosuid,nodev,relatime,size=94536k,mode=700,uid=999,gid=20)
//192.x.x.x/fritz.nas/Intenso-RainbowLine-00 on /mnt/FRITZNAS type cifs (rw,nosuid,nodev,relatime,vers=3.1.1,cache=strict,username=bli,uid=999,forceuid,gid=20,forcegid,addr=192x.x.x,file_mode=0755,dir_mode=0755,soft,nounix,mapposix,rsize=65536,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1)
fhem@FHEMPIOS:~$




Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 26 Oktober 2022, 09:30:24
?? Sorry aber ich verstehe gerade nicht, was U uns mit dem letzten Beitrag sagen willst ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 26 Oktober 2022, 09:51:40
Trotz das nicht gemounted ist, wird die Datei auf den USB-Stick geschrieben, das verstehe ich nicht.
Hab heute keine Zeit, erst am Abend.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 26 Oktober 2022, 10:10:18
- Ist es im Automounter?
- Wird es jetzt in den Ordner oder richtig auf der NAS geschrieben?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 27 Oktober 2022, 17:03:54
Hab keine Nerven mich damit jetzt zu beschäftigen, ich komm aber darauf zurück, irgendwann die nächste Zeit, sry.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 27 Oktober 2022, 21:14:42
Ob ich dann Zeit habe, kann Dir dann nur keiner garantieren ....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 12 Dezember 2022, 17:00:21
ZitatTrotz das nicht gemounted ist, wird die Datei auf den USB-Stick geschrieben, das verstehe ich nicht.

Das war so nicht richtig dargestellt und ich hatte mich nicht wirklich damit beschäftigt, sry.

Im Device global hab ich im Attribut backupdir /mnt/FRITZNAS/bla/FHEM/Backups stehen, wenn nicht gemounted ist wird das backup dann in dem angegebenen Ordner der SD-Karte des Pi erstellt, da war ich irgendwie der Meinung das das nicht möglich ist, wenn es die Ordner /bla/FHEM/Backups nicht gibt und das backup dann nicht ausgeführt wird.

ZitatVor den umount würde ich ein sync einfügen. sync zwingt den Kernel dazu, die Platte "aktuell" zu machen.

Versteh ich bis jetzt nicht, was das heißt die Platte aktuell zu machen.


Das unmounten ohne sleep beschäftigt mich immer noch und heute hatte ich kurz einen lichten Moment  ::) und auch gleich ausprobiert.

Spricht was dagegen das mit der Rückgabevariable von inotifywait umzusetzen ?
Es klappt zumindest wie ich es mir vorgestellt hatte:

#!/bin/bash

# parameter(s) <mountpoint1>

mopt=$1
mo="mount $1"
umo="umount $1"

if $mo
    then
echo "$?, mount erfolgreich, führe backup Befehl aus"
perl fhem.pl 7072 "backup"
fi

inotifywait -e close_write /mnt/FRITZNAS/bla/FHEM/Backups
answer=${?}

if [ "$answer" -eq "0" ]
then
    echo "unmounte jetzt"
    $umo
    echo "$?"
fi



Kann ich das nicht dann auch mit der Rückgabe der Perl-Zeile (perl fhem.pl 7072 "backup") umsetzen ?
Erster Test hat jetzt gerade nicht geklappt, bin aber noch dabei ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 12 Dezember 2022, 17:17:19
Zitat von: TomLee am 12 Dezember 2022, 17:00:21
Versteh ich bis jetzt nicht, was das heißt die Platte aktuell zu machen.

Unix (Linux) Schreibt nicht in die Datei, sondern in den Cache, der dann auf die Platte geschrieben wird. Mit "sync" wird dieser 2. Stepp erzwungen. Auch mount wartet drauf, aber besser ist immer, es vorher anzustoßen. einfach nur eine Empfehlung eines Unix-Admins ...

Zu dem anderen kann ich nichts sagen ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 08:54:28
Würd gerne versuchen das inotifywait auf genau nur die Datei loszulassen welche gerade "bearbeitet" wurde.

Kann mir wer sagen wie ich das hier mit dem regexp genau machen muss:

Zitatinotifywait -e close_write ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz
ergibt:
Couldn't watch /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_[0-9]*.tar.gz: No such file or directory

Hier mit mv, hat das genauso mit dem regexp geklappt:

Zitat von: TomLee am 11 Januar 2022, 16:41:47
mount /mnt/FRITZNAS;
mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;
cp /mnt/FRITZNAS/fax.pdf /opt/fhem/fax.pdf;
perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS;

Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 13 Dezember 2022, 11:19:23
Geht denn inotifywait und WildCard?

mv ist bekanntlich ein gans anderes Produkt ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 11:23:18
ZitatGeht denn inotifywait und WildCard?

Das Frage ich mich seit dem ich die Frage gestellt hatte auch.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 13 Dezember 2022, 11:24:24
genau genommen ist das an der Stelle kein regExp sondern globbing https://en.wikipedia.org/wiki/Glob_(programming)
Eventuell musst Du dazu etwas bemühen, was das kann, z.B: ls
solo getestet :)
$(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

Gruß Otto
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 11:26:43
Vlt. kann man was mit exclude machen, alle Dateien kleiner als Heute ?

--exclude <pattern> Events zu Dateinamen, die auf den regulären Ausdruck <pattern> passen (case sensitive), werden nicht beachtet.




Otto, schau ich mir jetzt an.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 11:35:40
Das klappt mit
inotifywait -e close_write ${mopt}${bud}/FHEM-$(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

Aber irgendwas passt inotify nicht:
Couldn't watch /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_113155.tar.gz: No such file or directory

Die Datei existiert mein ich aber schon, wenn inotify loslegt.

edit:
Ups, ich sehe den Fehler.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 11:48:12
Cool, greift, Danke

0, mount erfolgreich, führe backup Befehl aus
2022.12.13 11:44:09 2: Backup with command: tar czf /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_114409.tar.gz "./backup" "./CHANGED" "./lib" "./demolog" "./contrib" "./FHEM_Statistik.csv" "./README_DEMO.txt" "./debug.log" "./restoreDir" "./certs" "./alexa-fhem.cfg" "./cache" "./einkaufsliste.txt" "./www" "./key.pem" "./unused" "./docs" "./fhem.cfg.demo" "./testjson.json" "./file.ps" "./cert.pem" "./MAINTAINER.txt" "./fhem.cfg" "./log" "./file.png" "./Abfall.ics" "./FHEM" "./UMFHEM.csv" "./userphonebook.txt" "./jsontest.json" "./fhem.pl" "./GPL_V2.txt" "./configDB.pm"
Started the backup in the background, watch the log for details
0, backup Befehl ausgeführt
Setting up watches.
Watches established.
/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_114409.tar.gz CLOSE_WRITE,CLOSE
0, inotify
Backup done
0, unmount


#!/bin/bash

# parameter(s) <mountpoint1> <backupdirectory>

mopt=$1
bud=$2
mo="mount $1"
umo="umount $1"

if $mo; then
    echo "$?, mount erfolgreich, führe backup Befehl aus"
    perl fhem.pl 7072 "backup"
    echo "$?, backup Befehl ausgeführt"
fi

inotifywait -e close_write $(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

echo "$?, inotify"

if
    [ $? -eq "0" ]
then
    $umo
    echo "$?, unmount"
fi


Ist zwar nur für einmal am Tag geeignet, funzt aber so wie ich es mir vorgestellt hatte.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 13 Dezember 2022, 11:52:05
Eine Empfehlung fürs Logfile: Gebe auch mindestens die Aktuelle Uhrzeit aus!

Und wenn Du $? Ausgibst, es aber anschließend weiterverarbeiten willst ...

echo $?
if $? ....


Rate mal, welchen Wert $? beim 2. Schritt hat .. bestimmt nicht den, welchen Du glaubst zu haben ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 12:12:01
ZitatEine Empfehlung fürs Logfile: Gebe auch mindestens die Aktuelle Uhrzeit aus!

Hab ich jetzt gemacht, gefällt mir, Danke:

12:06:38 0, mount erfolgreich, führe backup Befehl aus
2022.12.13 12:06:38 2: Backup with command: tar czf /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_120638.tar.gz "./GPL_V2.txt" "./configDB.pm" "./jsontest.json" "./UMFHEM.csv" "./userphonebook.txt" "./fhem.pl" "./file.png" "./log" "./FHEM" "./Abfall.ics" "./MAINTAINER.txt" "./testjson.json" "./file.ps" "./cert.pem" "./fhem.cfg" "./unused" "./www" "./key.pem" "./docs" "./fhem.cfg.demo" "./certs" "./restoreDir" "./einkaufsliste.txt" "./alexa-fhem.cfg" "./cache" "./README_DEMO.txt" "./FHEM_Statistik.csv" "./debug.log" "./backup" "./contrib" "./lib" "./CHANGED" "./demolog"
Started the backup in the background, watch the log for details
12:06:39 0, backup Befehl ausgeführt
Setting up watches.
Watches established.
/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_120638.tar.gz CLOSE_WRITE,CLOSE
Backup done
12:07:44 0, inotify
12:07:44 0, unmount


#!/bin/bash

# parameter(s) <mountpoint1> <backupdirectory>

mopt=$1
bud=$2
mo="mount $1"
umo="umount $1"

if $mo; then
    echo "$(date +%T) $?, mount erfolgreich, führe backup Befehl aus"
    perl fhem.pl 7072 "backup"
    echo "$(date +%T) $?, backup Befehl ausgeführt"
fi

inotifywait -e close_write $(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

echo "$(date +%T) $?, inotify"

if
    [ $? -eq "0" ]
then
    $umo
    echo "$(date +%T) $?, unmount"
fi


Jetzt hast du ja wieder editiert, das schau ich mir später an, muss jetzt weg.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 13 Dezember 2022, 14:38:57
echo "$(date +%T) $?, inotify"
Rate mal, welchen Wert $? hat. Denn von Dir gewünschten, oder den vom erfolgreich durchgeführten date-Befehl ....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 18:18:44
Habs angepasst, gefällt mir aber irgendwie nicht das die Zeit nicht vorne in der gleichen Zeile steht:

0, mount erfolgreich, führe backup Befehl aus
18:10:41
2022.12.13 18:10:43 2: Backup with command: tar czf /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_181042.tar.gz "./file.png" "./log" "./FHEM" "./Abfall.ics" "./MAINTAINER.txt" "./cert.pem" "./file.ps" "./testjson.json" "./fhem.cfg" "./configDB.pm" "./GPL_V2.txt" "./jsontest.json" "./userphonebook.txt" "./UMFHEM.csv" "./fhem.pl" "./README_DEMO.txt" "./FHEM_Statistik.csv" "./debug.log" "./backup" "./contrib" "./lib" "./demolog" "./CHANGED" "./unused" "./key.pem" "./www" "./fhem.cfg.demo" "./docs" "./certs" "./restoreDir" "./einkaufsliste.txt" "./cache" "./alexa-fhem.cfg"
Started the backup in the background, watch the log for details
0, backup Befehl ausgeführt
18:10:43
Setting up watches.
Watches established.
/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_181042.tar.gz CLOSE_WRITE,CLOSE
Backup done
0, inotify
18:11:52
0, unmount
18:11:52


#!/bin/bash

# parameter(s) <mountpoint1> <backupdirectory>

mopt=$1
bud=$2
mo="mount $1"
umo="umount $1"

if $mo; then
    echo "$?, mount erfolgreich, führe backup Befehl aus"
    echo "$(date +%T)"
    perl fhem.pl 7072 "backup"
    echo "$?, backup Befehl ausgeführt"
    echo "$(date +%T)"
fi

inotifywait -e close_write $(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)
echo "$?, inotify"
echo "$(date +%T)"

if
    [ $? -eq "0" ]
then
    $umo
    echo "$?, unmount"
    echo "$(date +%T)"
fi


edit:

und hinten anhängen in der gleichen Zeile gefällt mir noch weniger, daher mit dem zusätzlichen echo

edit2:

OK, hier passts immer noch nicht:

echo "$(date +%T)"

if
    [ $? -eq "0" ]
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 13 Dezember 2022, 20:12:08
Und warum speicherst Du es dann nicht zwischen?

error=$?
.. irgendwas mit $error machen ....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 20:44:14
Ja, das wollt ich im letzten Beitrag eigentlich noch erwähnen, obs irgendwie anders geht wie über den (Um-)Weg Variable.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 13 Dezember 2022, 23:26:58
So, nochmal angepasst und ich mein jetzt sollte es passen, aber ich kenn mich ja, besser es schaut wer nochmal drüber:

2022.12.13 22:55:13 0: mount successful, run backup command
2022.12.13 22:55:14 2: Backup with command: tar czf /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_225513.tar.gz "./einkaufsliste.txt" "./cache" "./alexa-fhem.cfg" "./certs" "./restoreDir" "./docs" "./fhem.cfg.demo" "./unused" "./key.pem" "./www" "./contrib" "./lib" "./demolog" "./CHANGED" "./backup" "./debug.log" "./README_DEMO.txt" "./FHEM_Statistik.csv" "./fhem.pl" "./jsontest.json" "./UMFHEM.csv" "./userphonebook.txt" "./configDB.pm" "./GPL_V2.txt" "./fhem.cfg" "./MAINTAINER.txt" "./cert.pem" "./testjson.json" "./file.ps" "./FHEM" "./Abfall.ics" "./file.png" "./log"
Started the backup in the background, watch the log for details
2022.12.13 22:55:14 0: backup command executed
Setting up watches.
Watches established.
/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_225513.tar.gz CLOSE_WRITE,CLOSE
Backup done
2022.12.13 22:56:21 0: inotify
2022.12.13 22:56:21 0: unmount


#!/bin/bash

# parameter(s) <mountpoint1> <backupdirectory>

mopt=$1
bud=$2
mo="mount $1"
umo="umount $1"

if $mo; then
    err=$?   
    echo "$(date +"%Y.%m.%d %T") $err: mount successful, run backup command"
    perl fhem.pl 7072 "backup"
    err=$?
    echo "$(date +"%Y.%m.%d %T") $err: backup command executed"
fi

inotifywait -e close_write $(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)
err=$?
echo "$(date +"%Y.%m.%d %T") $err: inotify"

if
    [ $err -eq "0" ]
then
    $umo
    err=$?
    echo "$(date +"%Y.%m.%d %T") $err: unmount"
fi





Jetzt hab ich keine Ruhe, bis ich die Möglichkeit gefunden habe alle Dateien auszunehmen die kleiner jetzt, minus ein/zwei Sekunden ? sind, sei es mit der jetzigen Umsetzung mit <file>, @<file> oder --exclude <pattern>, dass das Skript jederzeit aufgerufen werden kann und nicht nur einmal am Tag.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 14 Dezember 2022, 10:01:52
Hätte nur eines (was mir auf die schnelle Auffällt) .. wenn nicht gemountet werden kann, wird zwar kein Backup gemacht, aber auf die Datei gewartet .....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 14 Dezember 2022, 18:53:54
Denk das ist jetzt behoben.




Ich mein  8), ich hab eine Lösung mit @<file> hinbekommen, zumindest hat das jetzt drei/vier mal beim testen geklappt.

Kann mir vorstellen (zumindest hab ich davon gelesen, aber nicht hinbekommen) das man das @ auch einfacher anhängen kann wie über ein zusätzliches Array und Schleife.
Ohne das sleep hats nicht immer geklappt (bis ich da drauf gekommen bin  ::) ), die Datei existiert nicht immer sofort ?

Wenn das jemand nachvollziehen würde wär cool.

#!/bin/bash

# parameter(s) <mountpoint1> <backupdirectory>

mopt=$1
bud=$2
mo="mount $1"
umo="umount $1"

if $mo; then
    err=$?
    echo "$(date +"%Y.%m.%d %T") $err: mount successful, run inotify"

    files=$(ls ${mopt}${bud})

    for file in $files; do
        arr+=("@${mopt}${bud}/$file")
    done

    perl fhem.pl 7072 "backup"
    err=$?
    echo "$(date +"%Y.%m.%d %T") $err: backup command"
    #echo "inotifywait -e close_write ${mopt}${bud}/*.tar.gz ${arr[*]}"
    sleep 1
    inotifywait -e close_write ${mopt}${bud}/*.tar.gz ${arr[*]}
    err=$?
    echo "$(date +"%Y.%m.%d %T") $err: inotify"
fi

if
    [ $err -eq "0" ]
then
    $umo
    err=$?
    echo "$(date +"%Y.%m.%d %T") $err: unmount"
fi
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 22 Dezember 2022, 12:50:39
Zitat von: Wernieman am 25 Oktober 2022, 19:57:31
Vor den umount würde ich ein sync einfügen. sync zwingt den Kernel dazu, die Platte "aktuell" zu machen. Nach dem Sync 2-3 Sec warten und dann erst den unmount.

Einfach so, ja ? Brauch ich das überhaupt noch, wenn ich doch die Bestätigung von inotifywait habe ?

...
then
    sync
    sleep 3
    echo "$(date +"%Y.%m.%d %T") $err: sync"
    $umo
    err=$?
    echo "$(date +"%Y.%m.%d %T") $err: umount"
fi





Was mich jetzt schon ein paar Tage beschäftigt, was ist wenn sich irgendwas ändert während des backup, bspw. es wird was geloggt und man ist so pingelig das diese Werte unbedingt mit in der Sicherung gespeichert werden müssen (ich meine das ist gar nicht so schlimm, beim nächsten backup sind diese Daten ja wieder dabei). Mir fällt nur ein das backup noch mal anzustossen, so lange bis sich "zufällig" nix mehr währenddessen ändert. Stoppen von FHEM bringt vor dem backup ja nix wenn man keine Werte verlieren möchte.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 24 Dezember 2022, 11:53:14
1) Das mit dem Ändern ist ein Grundsätzliches Problem beim Backup, da dieses IMMER Seriell abläuft. Ich würde persönlich kein 2. Anstoßen. Denn ... der gleiche "Wichtige" Wert könnte sich zwischen dem Backup ändern. Wenn er so wichtig ist, mußt Du eben häufiger Backup *) machen. Gehört also in Richtung Backup-Strategie

*) Aber bitte aufpassen, das Du nicht zu häufig ... man kann sich auch "Tot-Backupen"

2)
    sleep 3
    echo "$(date +"%Y.%m.%d %T") $err: sync"

Welchen Error willst Du hier ausgeben?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 24 Dezember 2022, 12:44:20
Danke für deine Gedanken dazu.

ZitatWelchen Error willst Du hier ausgeben?

::) >:( ;D Danke

Schöne Weihnachten
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 30 Januar 2023, 13:44:00
Hier gehts ja um ein Bashskript, darum frag ich einfach mal hier.

Hab bisher folgendes Skript:
#!/bin/bash

rm /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png
wget -P /opt/fhem/www/scripts/epaper/tmp/ http://Thomas:XXX3X3XXX@192.168.188.26:8083/fhem/rss/ffffffffffffff11.png
convert -rotate 90 /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png
echo "$?, convert"


Das hab ich erst alle 10 Minuten mit einem Cronjob aufgerufen, das ist mir aber zu oft, falls es keine Änderung gab wird die Datei unnötig oft geholt.

Jetzt hab ich mir überlegt das Skript vlt. mit einem notify aufzurufen, ob das jetzt die Lösung ist weiß ich auch nicht.

defmod not_VH_epaper notify Echo:list_SHOPPING_ITEM:.*|HF_Aussensensor_Vorderhaus:temperature:.* "/opt/fhem/www/scripts/epaper/tmp/epap.sh &"
attr not_VH_epaper disabledAfterTrigger 600
attr not_VH_epaper room Büro->Epaper


Wenn das notify getriggert wird erfolgt die Standardausgabe ja im Logfile:
--2023-01-30 11:44:00--  http://Thomas:*password*@192.168.188.26:8083/fhem/rss/ffffffffffffff11.png
Verbindungsaufbau zu 192.168.188.26:8083 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 401 Authorization Required
Authentifizierung ausgewählt: Basic realm="Login required"
Wiederverwendung der bestehenden Verbindung zu 192.168.188.26:8083.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 200 OK
Länge: 10229 (10,0K) [image/png]
Wird in »/opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png« gespeichert.

     0K .........                                             100% 35,2M=0s

2023-01-30 11:44:00 (35,2 MB/s) - »/opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png« gespeichert [10229/10229]

0, convert


Meine Frage ist jetzt ob man die Standardausgabe irgendwie verhindern/unterdrücken kann / nicht ins Log geschrieben wird ?

Kann da wer was zu sagen bzw. verlinken wo das steht wie sie unterdrückt wird, hier (https://wiki.ubuntuusers.de/Shell/Umleitungen/) bin ich beim überlesen erstmal nicht fündig geworden ?


edit:
aufgeschrieben hatte ich mir mal das man die Standardausgabe so in der Art verhindern kann:
"/opt/fhem/www/scripts/epaper/tmp/epap.sh &>/dev/null"
"/opt/fhem/www/scripts/epaper/tmp/epap.sh >/dev/null 2>&1"

Die Ausgabe im Log erfolgt aber trotzdem.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 30 Januar 2023, 14:44:53
mir glaubt das immer Keiner: aber Umleitung und Pipe funktionieren bei der Form "bash willi.sh >/dev/null" nicht - oder nicht immer - oder nicht "richtig" - oder "anders".

z.B. schreibt das hier die Ausgabe ins log und löscht den Dateiinhalt
"echo 'willi lustig' >willi.sh"

Du musst verhindern, dass das Script irgendwas ausgibt ;) also im Notfall so: Datei willi.sh
(
echo willi
echo lustig
) >/dev/null

"bash willi.sh" schreibt nicht ins Log.

Edit: und bei wget hilft option -q erstmal ein ganzes Stück
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 30 Januar 2023, 16:26:10
Kann da Otto nur Zustimmen. Mach es, das Dein Script nichts mehr schreibt ...

Und noch was:
" .... &" ist eigentlich "Doppeltgemoppelt". Die "" sorgen eigentlich schon für ein "NonBlocking-Scipt"
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 30 Januar 2023, 18:58:08
Zitatz.B. schreibt das hier die Ausgabe ins log und löscht den Dateiinhalt
"echo 'willi lustig' >willi.sh"

Hab ich nachvollzogen und verstanden.
Zitat
Du musst verhindern, dass das Script irgendwas ausgibt ;) also im Notfall so: Datei willi.sh
(
echo willi
echo lustig
) >/dev/null

"bash willi.sh" schreibt nicht ins Log.

Auch nachvollzogen und verstanden.

ZitatEdit: und bei wget hilft option -q erstmal ein ganzes Stück

ein ganzes Stück  ;D Alles ::) ;D  >:( hätte man auch einfach nachlesen können :-X

und hätte den Hinweis überflüssig gemacht  ::):
ZitatMach es, das Dein Script nichts mehr schreibt ...


"/opt/fhem/www/scripts/epaper/tmp/epap.sh"


#!/bin/bash

rm /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png
wget -q -P /opt/fhem/www/scripts/epaper/tmp/ http://Thomas:XXX3X3XXX@192.168.188.26:8083/fhem/rss/ffffffffffffff11.png
convert -rotate 90 /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png




Danke beiden.


Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 31 Januar 2023, 00:08:58
Hab das nochmal angepasst, weil man ja schon wissen will wenn was schief gelaufen ist.
Wie man nur einen Fehlerfall des wget ausgeben könnte, bin ich bis jetzt noch nicht drauf gekommen, mit dem -q hat man ja einfach alle Ausgaben ausgeknipst oder ?

#!/bin/bash

rm /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: rm"
fi

wget -q -P /opt/fhem/www/scripts/epaper/tmp/ http://Thomas:XXX3X3XXX@192.168.188.26:8083/fhem/rss/ffffffffffffff11.png

convert -rotate 90 /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png /opt/fhem/www/scripts/epaper/tmp/ffffffffffffff11.png
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: convert"
fi
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 31 Januar 2023, 08:25:10
es gibt -nv und -q und offenbar gibt wget alle Meldungen über Kanal 2 aus.
Wenn Du es nicht im normalen Log haben willst, schreib doch ein extra Log und binde das mit ein.
Mach ich mit meinem backup auf die NAS auch so.
Einfach Klammer um alles LOG=backupFhem.log
if [ -d "log" ];then LOG="log/$LOG";fi
{
dein Code
}>> $LOG 2>&1
oder eben jede Zeile extra umlenken.

defmod backupFhemlog FileLog ./log/backupFhem.log fakelog
attr backupFhemlog room backup
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 31 Januar 2023, 08:52:21
Ja, verstehe, Danke.

Nach mal drüber schlafen und kurz drüber nachdenken über deinen Vorschlag jetzt, ist die Frage die sich mir stellt, ob man eine Rückmeldung im Fehlerfall von wget überhaupt braucht.

Die ffffffffffffff11.png wird ja immer zuerst gelöscht, wenn bei dem wget was schief laufen sollte, liefert convert ja auch einen Fehler.

Reicht doch eigentlich aus um in FHEM Rückmeldung zu erhalten das irgendwo was schief lief ?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 31 Januar 2023, 08:52:29
Und auch bei wget kannst Du nach dem Fehlercode $? prüfen
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 31 Januar 2023, 08:59:28
ZitatUnd auch bei wget kannst Du nach dem Fehlercode $? prüfen

Wenn ich mit -q alles ausgeknipst habe, mein ich gestern Abend festgestellt zu haben, das dann auch kein Fehlercode ausgegeben wird, -nv muss ich mir erst mal anschauen, jetzt aber nicht, vermutlich erst heute Abend.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 31 Januar 2023, 09:11:54
-q und Fehlercode sind völlig andere Dinge .....
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 31 Januar 2023, 14:08:37
Fehlercode hast Du doch in #104 abgefragt. Der kommt mMn auch sauber. Egal ob Du die Textmeldung unterbunden hast oder nicht
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 31 Januar 2023, 14:44:11
Nein .. Zwischen wget und Fehlercodespeicherung ist das convert ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 31 Januar 2023, 16:13:57
Zitat-q und Fehlercode sind völlig andere Dinge ...

Stimmt, Mist festgestellt gestern Abend.

Habs eben ausprobiert, hab zum Test einfach ne Zahl bei der IP weggenommen, also falsche IP angegeben und mit -q
wget -q -P /opt/fhem/www/scripts/epaper/tmp/ http://Thomas:XXX3X3XXX@192.168.188.6:8083/fhem/rss/ffffffffffffff11.png
wird der Fehlercode vier ausgegeben.
2023.01.31 15:51:48 4: wget

sieht jetzt also so aus:

#!/bin/bash

rm ./www/scripts/epaper/tmp/ffffffffffffff11.png
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: rm"
fi

wget -q -P ./www/scripts/epaper/tmp/ http://Thomas:XXX3X3XXX@192.168.188.26:8083/fhem/rss/ffffffffffffff11.png
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: wget"
fi

convert -rotate 90 ./www/scripts/epaper/tmp/ffffffffffffff11.png ./www/scripts/epaper/tmp/ffffffffffffff11.png
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: convert"
fi

scp -p ./www/scripts/epaper/tmp/ffffffffffffff11.png user@ip:./epaper/tmp/ffffffffffffff11.png
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: scp"
fi


Wenn jetzt noch einer was zu der absoluten Pfadangabe sagen könnte, wie und ob man den relativ angeben kann ? Hab schon alles mögliche probiert, ich raff es nicht oder es geht einfach nicht.
Ist das einfach ein Denkfehler das man den relativ angeben könnte ?
Das Skript wird in dem gleichen Ordner ausgeführt:

-rwxrwxr-- 1 fhem dialout   615 Jan 31 15:52 epap.sh
-rw-r--r-- 1 fhem dialout 10408 Jan 31 16:02 ffffffffffffff11.png
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 31 Januar 2023, 16:39:18
Entweder {qx 'echo $PWD'} nur zum Test in der FHEM Kommandozeile ;), weil ich meine der User fhem hat nicht zwingend ein komplettes Environment.
Also ${PWD}/www/scripts/epaper/tmp/ oder einfach ./www/scripts/epaper/tmp/
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 31 Januar 2023, 17:00:14
Da muss ich dich leider korrigieren  :P
so muss es angegeben werden
rm ${PWD}/ffffffffffffff11.png

Cool, thx.

Zitatoder einfach ./www/scripts/epaper/tmp/

geht bei mir nicht:
rm: das Entfernen von './www/scripts/epaper/tmp/ffffffffffffff11.png' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
2023.01.31 16:51:00 1: rm


edit: hab das letzte "fertige" Skript auf ${PWD} angepasst.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 31 Januar 2023, 18:17:49
naja ${PWD} liefert den aktuellen Pfad (ich weiß immer nicht ob es bei allen Systemen so ist)
./ ist auch der aktuelle Pfad.
Wundert mich, dass Du da stehst. Normal solltest Du im homedir von fhem stehen?

Egal, dafür, dass Du weißt wo Du stehst war der erste Befehl  :P
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 31 Januar 2023, 19:51:15
Theater Theater Theater

ZitatWundert mich, dass Du da stehst. Normal solltest Du im homedir von fhem stehen?

Ja, ich habs gemerkt was du damit sagen wolltest und geb zu das ich nur im Terminal aus dem Ordner temp das Skript aufgerufen habe, aus FHEM muss das in dem Skript entweder dann so ${PWD}/www/scripts/epaper/tmp/ oder  ::) so ./www/scripts/epaper/tmp/ffffffffffffff11.png angegeben werden.

Ich passe das Skript oben später an.
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 25 Februar 2023, 15:41:04
Hi,

hab wieder eine Frage die ich mir stelle, die für mich auch hier her passt.
Wie würdet Ihr in einem Bashskript eine Datei auf einen anderen Raspberry übertragen ?
Es gibt mehrere Wege und bevor ich mich jetzt ewig damit beschäftige, um am Ende vlt. irgendwann zu erfahren das es umständlich gelöst wurde, frag ich lieber gleich euch, welchen Ihr mir empfehlen würdet ?
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 25 Februar 2023, 15:46:06
per scp ...
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 25 Februar 2023, 15:47:18
Danke
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 25 Februar 2023, 19:18:00
Ich hab das letzte Skript oben um ein Beipiel mit scp ergänzt.

Und nochmal danke für das (https://heinz-otto.blogspot.com/2023/01/ssh-zugang-fur-fhem-uber-script.html) Skript.
Trotz das ich mir aufgeschrieben habe wie ich das mit dem umstellen auf "Public-/Private-Key" zu machen habe, hab ich es nach mehreren Versuchen nicht hinbekommen  ::), dein Skript hat auf Anhieb geklappt  :P
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 27 Februar 2023, 10:39:10
Ich würde für ein Backup eher rsync verwenden .. aber DAS ist ein anderes Thema ;o)
Titel: Antw:Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 27 Februar 2023, 10:59:21
Danke für den Hinweis, es ging mir vorgestern aber nur um  Bilder, die vom FHEM-Raspi auf einen anderen Raspi übertragen werden sollen.
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 18 April 2023, 18:23:57
Zitat von: Otto123 am 13 Dezember 2022, 11:24:24genau genommen ist das an der Stelle kein regExp sondern globbing https://en.wikipedia.org/wiki/Glob_(programming)
Eventuell musst Du dazu etwas bemühen, was das kann, z.B: ls
solo getestet :)
$(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)
Gruß Otto

Ich frag einfach, bevor ich noch länger Suche, beim überfliegen der Seite bin ich auf die Schnelle nicht weiter gekommen. Wenn statt nur Zahlen, nur kleingeschriebener Text vorkommen kann, wie mach ich das ?

So nicht:

text\.[0-9a-z]*.txt
edit: so dann einfach ?

text\.*.txt
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 18 April 2023, 20:36:31
Bröseln wir doch mal auf:
text\.*.txtAlle Spezialfälle:
\. : Mit \ wird der . Maskiert, also .
* ist eine beliebige Anzahl des Voheriegen Zeichen, hier also .
Dann folgt ein ., was ein beliebiges zeichen ist, aber eben nur eins.
Dann folgt txt.

Kurz gesagt würde der Obige RegEx auf folgende Zutreffen:
text..........Xtxt
text.utxt
Es würde aber eben NICHT auf folgendes Zutreffen:
text.txt
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 18 April 2023, 23:34:05
ZitatKurz gesagt würde der Obige RegEx auf folgende Zutreffen:
text..........Xtxt
text.utxt

Die Realität zeigt aber das:
text\.*.txtauf text.123.txt und text.abc.txt matcht.

Ist das von dir berücksichtigt ?
Weil:
* ist eine beliebige Anzahl des Voheriegen Zeichen, hier also .
ist so dann nicht richtig, der Punkt steht dann doch für ein beliebiges Zeichen ?
Oder war das so gemeint ?


text.txt wird nie vorkommen.

Ich meine die Frage wie man es richtig macht bleibt bestehen, vlt. seh ich das morgen früh aber ja wieder anders :P
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 19 April 2023, 08:27:32
Der * steht nach dem Maskierten .
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 19 April 2023, 09:35:36
Auch nach einmal drüber schlafen komm ich nicht mit.

Ich verstehe dich bisher so das man es eigentlich so schreiben sollte:

text\..*\.txt
nach text soll genau ein Punkt folgen, dann beliebig viele Zeichen, dann wieder genau ein Punkt, gefolgt von txt
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 19 April 2023, 15:57:01
Exakta, das Maskieren macht RegEx immer schlecht lesbar

Bzw: Gibt genügend RegEx Tester im Netz:
https://regex101.com/ (https://regex101.com/)

Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 19 April 2023, 16:22:50
Es ist aber kein Regulärer Ausdruck, sondern ein Glob-Muster, darum hab ich den Link von Otto bei meiner Frage mit angegeben.

Sowas
text\..*\.txtgeht gar nicht.

Ich hab mir jetzt nur den ersten Absatz nochmal genau durchgelesen.
Wie ich es jetzt verstehe:
. ist ein Punkt, und den muss man gar nicht maskieren.
? ist ein beliebiges Zeichen
* ist ein Platzhalter für einen beliebigen String

Ich behaupte jetzt einfach mal so wäre korrekt:

text.*.txtwas auch einwandfrei klappt.

edit:

oder so wie ich mir das zuerst dachte:
text.[a-z0-9]*.txtklappt auch einwandfrei.
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 26 September 2023, 16:48:34
Ich bekomms nicht hin, kann mir bitte wer einfach zeigen wie ich ein Python-Script als cronjob nach einem reboot starte, auf das ich mit screen dann später auch zugreifen kann ?

So schonmal nicht:

@reboot sleep 60 && screen -S epaperstation -d -m /usr/bin/python3 /opt/fhem/www/scripts/epaper/tmp/station.py
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 November 2023, 13:50:16
Ich weiß es nicht mehr was ich genau gemacht hatte um Fhem-Befehle in der Shell auszuführen, aufgeschrieben hab ich es auch nicht  ::), ich war damals einfach nur froh das es irgendwann nach vielem lesen geklappt hatte.

perl fhem.pl 7072 "backup"erzeugt mir auf einem anderen System jetzt die Meldung:
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Was ich in Erinnerung hab ist, das es was mit telnet zu tun hat.
sudo apt-get install telnethab ich gemacht und eine telnet-Definition gibt es auch:
define telnetPort telnet 7072 global
Kann mir bitte jemand zeigen was noch fehlt/einzustellen ist , oder verlinken was ich genau zu lesen hab damit ich verstehe was noch fehlt ?


Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 10 November 2023, 15:07:45
Hi,

da fehlt doch schlicht der Pfad? Der User fhem hat manchmal keine komplette Umgebung?
{qx(grep fhem /etc/passwd)}{qx(printenv)}
Was ist damit?
/usr/bin/perl /opt/fhem/fhem.pl 7072 "backup"
Ich meine das ist nutzlos
Zitat von: TomLee am 10 November 2023, 13:50:16Was ich in Erinnerung hab ist, das es was mit telnet zu tun hat.
Code Auswählen Erweitern
sudo apt-get install telnethab ich gemacht und eine telnet-Definition gibt es auch:
Gruß Otto
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 November 2023, 15:40:35
Zitatda fehlt doch schlicht der Pfad?

ja, mit /usr/bin/perl /opt/fhem/fhem.pl 7072 "backup" funktionierts.

ZitatDer User fhem hat manchmal keine komplette Umgebung?

Ich denke das ich irgendwo auf meinem bisherigen FHEM-Server eine Einstellung gemacht hab das fhem halt die komplette Umgebung hat, ob das jetzt richtig ist oder weniger gut, weiß ich nicht.
Ich kenn mich hier wirklich nicht aus, kann ich es wieder so einstellen das ich den Pfad nicht mit angeben muss oder besser sein lassen ?


{qx(grep fhem /etc/passwd)}
fhem:x:999:20::/opt/fhem:/bin/bash

{qx(printenv)}
LANG=de_DE.UTF-8
LANGUAGE=de_DE
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOME=/opt/fhem
LOGNAME=fhem
USER=fhem
SHELL=/bin/bash
INVOCATION_ID=41e27f47c20845348d29d6b13b9321fa
JOURNAL_STREAM=8:257177
SYSTEMD_EXEC_PID=54804
PERL_LWP_SSL_VERIFY_HOSTNAME=0
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 10 November 2023, 15:50:10
Naja das sieht eigentlich gut aus:
ZitatPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOME=/opt/fhem
Mit Pfad ist immer sicherer :)
Ich bin auch nicht so sattelfest. Er sagt ja er findet das Script nicht ...
Steht er denn im Moment des Aufrufes in seinem HOME Directory?
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 November 2023, 16:04:56
ZitatMit Pfad ist immer sicherer :)
Ok, dann werd ich die anderen Skripte dann halt anpassen müssen und nehm das einfach so hin.

ZitatEr sagt ja er findet das Script nicht ...
Steht er denn im Moment des Aufrufes in seinem HOME Directory?

Es klappt doch jetzt mit dem Pfad, auf willst du noch hinaus ?

Ich hab zum testen das Skript in dem Ordner ausgeführt wo das Skript liegt:
fhem@fhempi:~/www/scripts$ bash backup.shnormal macht das ein at jeden Montag in der Nacht:
*00:00:55 { return fhem(q("www/scripts/backup.sh /mnt/FRITZNAS /Privat/FHEM/Backups &")) if $wday == 1 }
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 10 November 2023, 16:45:00
Ich denke das ist dein Problem aus #131
Du führst aus irgendeinem Pfad ein Script aus (in dem auch noch der Pfad wechseln könnte) - da findet er zwar meistens perl aber das er da wirklich in /opt/fhem steht und fhem.pl findet ist doch ziemlich unwahrscheinlich. ;)
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 10 November 2023, 19:19:55
ZitatIch denke das ist dein Problem aus #131
Du führst aus irgendeinem Pfad ein Script aus (in dem auch noch der Pfad wechseln könnte) - da findet er zwar meistens perl aber das er da wirklich in /opt/fhem steht und fhem.pl findet ist doch ziemlich unwahrscheinlich. ;)

Ja, denke ich habs jetzt etwas mehr verstanden, jetzt, nachdem wir hier darüber geschrieben haben.

Danke für die Unterstützung.
 
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Wernieman am 11 November 2023, 14:11:20
Außerdem wird bei einem Cron-Job z.B. nicht immer die komplette Umgebung geladen. Spätestens bei automatischen Scrypten sollte man IMMER komplette Pfade verwenden. Hat sogar ein Sicherheitsgewinn, weil dann immer klar ist, was geladen/gestartet wird.

Ist spätestens bei Cron-Jobs ein gängiger Programmierfehler (den auch ich schon viel zu häufig gemacht habe)
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 23 November 2023, 18:57:53
Hi,

ich nutzte bisher diese Zeile in einem Shell-Skript:
scp -p ./www/scripts/epaper-station/tmp/$mac pi@192.x.x.x:./epaper/tmp/$mac
ich mag das ändern und die IP jetzt beim Skriptaufruf übergeben.
So klappts nicht:
$ipebuspi = $2
scp -p ./www/scripts/epaper-station/tmp/$mac pi@$ipebuspi:./epaper/tmp/$mac

Dann bekomme ich pi@ipebuspi zurück.

Kann mir wer sagen wie es richtig geht in diesem Fall ?
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 23 November 2023, 20:58:51
Du musst den Namen auflösen
$ipebuspi = $(host $2 |awk '{print $4}' )
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 23 November 2023, 21:17:26
Versteh erstmal nur Bahnhof, beschäftige mich später/morgen damit, jetzt löt ich mir gerade die Weihnachtsbeleuchtung so zusammen wie sie ich mir wünsche.

Warum host, da hängts schon, das ist nicht die Host-IP, das ist die IP einer anderen Pi.
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: Otto123 am 23 November 2023, 21:24:35
ich vermute Dein Script löst den Namen nicht auf und will eine IP - bin aber nicht sicher. Mein Code löst den Namen in eine IP Adresse auf.
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 23 November 2023, 21:41:12
So sieht mein Skript bisher aus, zum Hintergrund, es gibt keinen "Repeater" bei der epaper-station, darum hab ich das auf zwei Systemen laufen.

Zitat#!/bin/bash

mac=$1
#ipebuspi=$2 #das will ich ergänzen

rm ./www/scripts/epaper-station/tmp/$mac
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: rm"
fi

wget -q -P ./www/scripts/epaper-station/tmp/ http://user:pwd@192.168.188.26:8083/fhem/rss/$mac #hier 127.0.0.1
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: wget"
fi

convert -rotate 90 ./www/scripts/epaper-station/tmp/$mac ./www/scripts/epaper-station/tmp/$mac
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: convert"
fi

echo "pi@ipebuspi"
scp -p ./www/scripts/epaper-station/tmp/$mac pi@192.x.x.x:./epaper/tmp/$mac #hier die IP die ich übergeben will
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: scp"
fi

Es geht mir um das Fettgedruckte, also host brauch ich auch oben (denke da reicht aber 127.0.0.1, zumindest bin ich so weit dass das eigentlich klappt ) und unten will ich die IP die ich bei Aufruf des Skripts übergebe.

edit:

Ich denke ja,  das es was mit dem Dollar Zeichen i.V.m dem @ zu tun hat .
Titel: Aw: Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?
Beitrag von: TomLee am 24 November 2023, 01:00:38
So, hab mich kurz noch mit beschäftigt.

Mehrere Fehler gabs und ich hätte mich mehr mit beschäftigen sollen vor meiner Frage, es klappt nämlich genauso wie ich mir das dachte.

1. Dem ebus-Pi hab ich eine neue IP-vergeben, weil ich bei mir am aufräumen bin, die neue IP wurde aber noch gar nicht übernommen, obwohl ich den Pi bereits neugestartet hatte, in der Fritzbox steht weiterhin: gültig ab der nächsten Anfrage
2. Hab ich einen Fehler bei der Parameterübergabe gemacht.
3. Da ich mit meinem FHEM von einem PI3B auf PI4B umgezogen bin (und ich kein restore gemacht hab), war der zuvor vergebene SSH_Schlüssel nicht mehr hinterlegt, das hab ich nachgeholt und jetzt passt wieder alles.

Es klappt mit $ipebuspi und ${ipebuspi}:

#!/bin/bash

mac=$1
ipebuspi=$2

rm ./www/scripts/epaper-station/tmp/$mac
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: rm"
fi

wget -q -P ./www/scripts/epaper-station/tmp/ http://user:pwd@127.0.0.1:8083/fhem/rss/$mac
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: wget"
fi

convert -rotate 90 ./www/scripts/epaper-station/tmp/$mac ./www/scripts/epaper-station/tmp/$mac
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: convert"
fi

scp -p ./www/scripts/epaper-station/tmp/$mac pi@$ipebuspi:./epaper/tmp/$mac
err=$?
if
    [ "$err" -ne "0" ]
then
    echo "$(date +"%Y.%m.%d %T") $err: scp"
fi