Hauptmenü

sript backup.sh auslösen

Begonnen von choetzu, 23 März 2017, 20:57:10

Vorheriges Thema - Nächstes Thema

Otto123

Hallo Gernot,

mein Prinzip ist: nimm nicht einfach root oder Admin Konten wenn es nicht notwendig ist. Homebridge und nmap habe ich nicht im Einsatz, da kann ich adhoc nichts sagen.

Gruß Otto
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

automatisierer

Zitat von: supernova1963 am 27 März 2017, 22:22:01
Ok, automatisierer, habe ich verstanden, der Eintrag in sudoers gibt, - auch wenn man es auf ein einzelne ausführbare Datei beschränkt -, dem user doch irgendwie, - wenn auch stark eingeschränkt -, root Rechte.

Stark eingeschränkt?? du kannst als Mitglied der Gruppe sudoers alle Befehle durch voranstellen von 'sudo' mit root-Rechten ausführen - !!!ohne Passwortabfrage!!!. Somit gibt es keine Einschränkungen mehr, der Benutzer hat alle Macht über das System...
Daher soll man Standartnutzer nicht zu sudoers packen, sonder einem Standartnutzer (FHEM) durch hinzufügen von einzelnen Gruppen nur so viel Systemrechte geben wie er haben muss um zu funktionieren und nicht mehr! so viel wie nötig - so wenig wie möglich!

Wernieman

Und wenn man einen einzelden Befehl durch sudo erlaubt, sollte man gucken, das nicht ein normaler User den "Befehl" austauschen kann.

Sonst macht man es einigen Leuten ziemlich einfach
: Befehl durch etwasd "böses" austauschen
: per sudo starten lassen (oder bei cron/automatismen warten, bis Befehl gestartet wird)

Gibt mittlerweile sogar schon automatische Tools, die so etwas können ...
- 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

supernova1963

@wernieman: Korrekt, keine Schreibrechte für "normale User" wie fhem auf den spezifizierten ausführbaren Dateien!!!

@automatisierer: Ich glaube es liegt ein Missverständnis vor, mit dem von mir geposteten Eintrag erhält der user fhem nur für die spezifizierten ausführbaren Dateien das Recht den sudo Befehl ohne Passwort zu nutzen. Für alles andere wird das sudo Passwort verlangt!



automatisierer

Jo, da hast du wohl recht, dass hatte ich mal schlicht weg überlesen - sorry.

supernova1963

Kein Problem, aufgrund dieser Diskussion habe ich zumindest noch einmal alles überprüft,

Gernot

choetzu

Hallo Otto

frage zu deinem Skript. Dieses habe ich nun schon eine zeitlang erfolgreich im Einsatz. Funktioniert soweit perfekt.

Meine Frage dazu: Könnte man das skript auch insofern abändern, dass es nicht nur von /opt/fhem ein Backup macht, sondern von der gesamten SD Karte, nämlich von /dev/mmcblk0

Ich habe versucht, dies in deinem Skript zu ändern, aber es geht wie nicht. Das Backup ist 129bytes gross.. ;)

So, habe ich es angepasst..

#!/bin/bash

mountIp="10.0......"
mountDir="Raspi1"
mountUser="pi"
mountPass="xyxyxy"
mountSubDir=""
localMountPoint="/Q/backup"

#optional
backupsMax="10"
localBackupDir="/mnt/backup"
###################################

perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup info backup starting now"

if [ ! -e "$localBackupDir" ]
then
echo "$localBackupDir wird erstellt"
mkdir -p "$localBackupDir"
else
echo "$localBackupDir bereits vorhanden"
fi

tar --exclude=backup -cvzf "/$localBackupDir/$(date +%y%m%d_%H%M%S)_Raspi1_backup.tar.gz" "/dev/mmcblk0" &>/dev/null

if ! ping -c 1 $mountIp
then
echo "$mountIp nicht erreichbar, stop"
perl /opt/fhem/fhem.pl 7072 "set Raspi1.Backup error"
perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup info $mountIp not found"
exit
else
echo "$mountIp erreichbar"
fi

localIp=$(hostname -I|sed 's/\([0-9.]*\).*/\1/')

if [ ! -e "$localMountPoint" ]
then
echo "$localMountPoint wird erstellt"
mkdir -p "$localMountPoint"
else
echo "$localMountPoint bereits vorhanden"
fi

if [ "$(ls -A $localMountPoint)" ]
then
echo "$localMountPoint nicht leer, kein Mounten notwendig"
else
echo "$localMountPoint leer, Mounten starten"
vorhanden="0"
while read line
do
mountComplete="//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0"
echo "mountComplete: $mountComplete"
if [ `echo "$line" | grep -c "$mountComplete"` != 0 ]
then
echo "/etc/fstab: Eintrag bereits vorhanden: $mountComplete"
vorhanden="1"
break
fi
done < "/etc/fstab"
if [ "$vorhanden" != "1" ]
then
echo "/etc/fstab: Eintrag wird ergänzt: $mountComplete"
echo "$mountComplete" >> "/etc/fstab"
fi
echo "Mounts werden aktualisiert"
mount -a
sleep 3
fi

if [ "$(ls -A $localMountPoint)" ]
then
if [ ! -e "$localMountPoint/$mountSubDir/$localIp" ]
then
mkdir -p "$localMountPoint/$mountSubDir/$localIp"
else
echo "$localMountPoint/$mountSubDir/$localIp existiert bereits"
fi
find "$localBackupDir" -name '*Raspi1_backup.tar.gz' | while read file
do
fileSize="0"
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*/}
echo "$filename ($fileSizeMB MB) wird in den Backupordner verschoben"
if [[ "$pushoverToken" != "" && "pushoverUser" != "" ]]
then
curl -s -F "token=$pushoverToken" -F "user=$pushoverUser" -F "title=Raspi1 $localIp" -F "message=Backup mit $fileSizeMB MB wird erstellt" https://api.pushover.net/1/messages.json
fi
#mv "$file" "$localMountPoint/$mountSubDir/$localIp/$filename"
cp "$file" "$localMountPoint/$mountSubDir/$localIp/$filename"
rm "$file"
perl /opt/fhem/fhem.pl 7072 "set Raspi1.Backup off"
perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup backup $filename"
perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup backupMB $fileSizeMB"
perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup info backup done"
done
else
echo "Mounten hat anscheinend nicht geklappt, skip."
exit
fi

#Löschen alter Backups
if [[ "$backupsMax" != "" && "$backupsMax" != "0" ]]
then
perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup backupFilesMax $backupsMax"
backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_Raspi1_backup.tar.gz"`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ "$backupsDelete" -gt "0" ]
then
echo "$backupsCurrent Backups vorhanden - nur $backupsMax aktuelle Backups werden vorgehalten - $backupsDelete Backups werden gelöscht"
ls -d "/$localMountPoint/$mountSubDir/$localIp/"* | grep "_Raspi1_backup.tar.gz" | head -$backupsDelete | xargs rm
else
echo "$backupsCurrent Backups vorhanden - bis $backupsMax aktuelle Backups werden vorgehalten"
fi
else
perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup backupFilesMax no limit"
fi

backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_Raspi1_backup.tar.gz"`
perl /opt/fhem/fhem.pl 7072 "setreading Raspi1.Backup backupFiles $backupsCurrent"


echo "Mount wieder unmounten"
umount "$localMountPoint"
Raspi3, EnOcean, Zwave, Homematic

Wernieman

Sorry es Dir so direkt zu sagen, aber eine Direkte Sicherung von /dev/... mit einem tar ist NICHT möglich!
- 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

choetzu

Danke für die schnelle und direkte Antwort. Wie löst ihr diese Situation?

Ich möchte einmal die Woche eine SD Karte Sicherung auf mein NAS sichern. Am liebsten per FHEM gesteuert.

Raspi3, EnOcean, Zwave, Homematic

Frank_Huber

zumindest unter Stretch mit Desktop gibt es ein Programm "SD card copier"
dieses erstellt lauffähige Klone der Boot-SD.

Wenn es dieses auch als Kommandozeile gibt könnte man zwei Micro-SD Karten über USB anstecken und zeitgeplant jeweils eine überschreiben.
ich mach das zur Zeit 1 x die Woche manuell. Hat auch den Vorteil dass kein SD Karten Leser dauerhaft im USB steckt.
USB Leser könnten ja auch durch spannungs-Spitzen getötet werden...


CoolTux

Pi runterfahren, SD Karte entnehmen und über einen Cardreader ein Image erstellen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

KernSani

Bei mir läuft täglich ein inkrementelles Backup der SD Karte und wöchentlich ein komplettes. Unabhängig von FHEM per cron. Ich kann das Skript heute abend mal raussuchen (oder du fragst Google)


Kurz, weil mobil...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

choetzu

herzlichen Dank für die Antworten.

Ich mache z.Z. die Variante von CoolTux.. Das ist die manuelle Variante. Ich möchte es aber automatisieren, da ich nicht immer daran denke.
Die Lösung von Frank_Huber ist eine gute Alternative, aber eben auch ziemlich manuell ;)

KernSani, sehr gerne! Google frage ich dann, wenn ich dein Skript nicht umsetzen kann. Bin mal gespannt.

Danke nochmals.
Raspi3, EnOcean, Zwave, Homematic

CoolTux

Um es noch mal und noch mal und noch mal zu sagen. Wer sich auch nur Ansatzweise mit Linux, dessen Filesysteme und den generellen Aufbau eines -nixsystemes aus kennt, weiß das man von einem laufenden System keine 1 zu 1 Sicherung machen sollte.

  • Datenbanken puffern Daten im Ram zwischen welche dann nicht mehr vorhanden sind, inkonsistenz drohen.
  • Moderne Filesysteme verwenden Journaling und speichern kleine Marker zwischen. Auch diese können bei einem 1 zu 1 Kopie verloren gehen und somit ist das Filesystem korrupt (kaputt)

Für Leute die sich damit auskennen und nur für diese gibt es die Möglichkeit mittels dem tar Befehl eine komplett Kopie des System zu machen unter Berücksichtigung der Linuxgegebenheiten /dev /proc /sys und so weiter.
Danach erstellt man sich einen Plan und Hilfsmittel für ein Desaster Recovery mit entsprechenden Werkzeugen.
Somit wird aus einem minimalen System welches in 5 Minuten aufgesetzt ist und nach 10 min auf dem aktuellsten Stand ist durch ein Desaster Recovery innerhalb einer Stunde ein voll funktionstüchtiges System mit allen Services.

Wichtig. ALLE Services müssen vor einem Backup runter gefahren werden. Also auch ein FHEM. Einmal im Jahr wechsel ich bei meinen 3 Systemen Proforma die SD Karte. So ein Teil kostet unter 10 Euro pro Karte, das sollte ja wohl drin sein.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

choetzu

auch eine Möglichkeit mir zu sagen " DU hast keine AHNUNG".. ;) Aber du hast absolut recht. Dein Post überzeugt mich und ich verstehe nun, wieso ich dies vermutlich auch in Zukunft händisch machen sollte...  Ich wechsle übrigens auch 1mal pro Jahr die SD Karte... ;)

Raspi3, EnOcean, Zwave, Homematic