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

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 }

Otto123

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. ;)
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

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.
 

Wernieman

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)
- 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

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 ?

Otto123

Du musst den Namen auflösen
$ipebuspi = $(host $2 |awk '{print $4}' )
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

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.

Otto123

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.
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

#143
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 .

TomLee

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