Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?

Begonnen von TomLee, 10 Januar 2022, 14:53:23

Vorheriges Thema - Nächstes Thema

TomLee

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:~$


Otto123

#61
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[@]}"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

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.

Otto123

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"

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

#!/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.


Otto123

noch kürzer :)
irgendwo am Anfang einmalig:
ret='rm -v /mnt/FRITZNAS/*;'
Die Ausführung
${cmd1[@]} "$cmd2 $($ret)"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Nee klappt erstmal nicht, aber gute Idee.
Danke, ich schau später weiter, jetzt geht nicht mehr.

Otto123

Also mein Beispiel klappt:
cmd1=(perl fhem.pl 7072)
cmd2='set SD3'
ret='echo toggle'
${cmd1[@]} "$cmd2 $($ret)"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

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.

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

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)

TomLee

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

Wernieman

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)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

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:~$





Wernieman

?? Sorry aber ich verstehe gerade nicht, was U uns mit dem letzten Beitrag sagen willst ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html