FHEM Forum

Verschiedenes => Off-Topic => Thema gestartet von: SamNitro am 26 September 2017, 16:42:55

Titel: Shell Script erstellen
Beitrag von: SamNitro am 26 September 2017, 16:42:55
Da ich mich leider nicht so gut damit auskenne hoffe ich hier auf Hilfe.

ich würde gerne meine Images vom Rpi, die ich wieder über einen usb stick am Rpi einstecke wegen der Größe, kleiner machen. Dazu habe ich ein fertiges script gefunden.. Jetzt würde ich das ganze komplett automatisieren egal ob aus Fhem raus oder vom Rpi selber..

hier meine einzelnen schritte:
sudo mount -t ntfs-3g /dev/sda1 /home/pi/USB

sudo sh /home/pi/PiShrink/pishrink.sh /home/pi/USB/<Name>.img

sudo umount /home/pi/USB


Cool währe wenn er den Namen des images selber suchen kann (da wird nur ein Image sein)

edit: habe gefunden wie man Dateien "suchen" kann aber weiß nicht wie man es einbindet:
find -name "*.img"


Hoffe mir kann einer dabei helfen.

LG Patrick
Titel: Antw:Shell Script erstellen
Beitrag von: Beta-User am 26 September 2017, 17:00:23
Na ja, ganz ohne dass du dich mit dem Berechtigungskonzept, der Bedeutung von sudo usw. beschäftigst, wirst du nicht lange klarkommen. Bei ubuntuusers.de gibt es da auch recht ordentliche Grundlageninfo, die ich nur wärmstens zur Lektüre empfehlen kann.

Wie vorgehen:
1. Vielleicht versuchst Du mal, das script mit "*" statt <Name> aufzurufen und dir über die Bedeutung des "*" im Linux-Kontext (und perl/regex-Kontext) Gedanken zu machen.
2. Vermutlich ist es dann das einfachste, die Schritte 1 und 3 in das script pishrink.sh einzubauen; wenn du der Empfhelung gefolgt bist, keine grafische Oberfläche zu installieren, aber vi nicht magst, versuch's mal mit mcedit (ist im paket mc enthalten)
3. Schließlich mußt du entscheiden, ob das script zeitgesteuert von Linux (cronjob) ausgeführt werden soll oder von FHEM aus (ggf. muß dann der user fhem noch die Berechtigung haben, dieses script mit root-Rechten auszuführen. Dazu aber bitte nicht fhem für sudo generell freischalten!

Viel Spaß,

Beta-User
Titel: Antw:Shell Script erstellen
Beitrag von: Eisix am 26 September 2017, 17:05:10
Hallo,

also wenn ich das richtig verstanden habe soll nach dem einstecken des USB sticks ein find über den Stick Inhalt laufen und alle *.img Dateien mit deinem pishrink.sh verarbeiten. Als Übergabeparameter hast du den Dateinamen!?



find /home/pi/USB -type f -name "*.img" -exec sudo /home/pi/PiShrink/pishrink.sh {} \;



Das sollte dein Skript pro gefundener .img Datei ausführen. Voraussetzung dein sudo läuft ohne Passwort. Kann es leider nicht testen.

Gruß
Eisix
Titel: Antw:Shell Script erstellen
Beitrag von: betateilchen am 26 September 2017, 17:06:59
oder:



find /home/pi/USB/ -name \*.img -print | xargs /home/pi/PiShrink/pishrink.sh

Titel: Antw:Shell Script erstellen
Beitrag von: CoolTux am 26 September 2017, 17:07:12
Interessant finde ich ja das der Stick NTFS formatiert sein soll. Ist er das wirklich?
Du hast ein Shellskript gefunden, hast Du Dir Mal angeschaut was es genau macht? Oder willst das einfach so lostreten?
Titel: Antw:Shell Script erstellen
Beitrag von: Eisix am 26 September 2017, 17:12:57
Einen habe ich noch:



/home/pi/PiShrink/pishrink.sh `find /home/pi/USB -type f -name "*.img"`

Titel: Antw:Shell Script erstellen
Beitrag von: SamNitro am 26 September 2017, 18:00:11
Zitat von: Beta-User am 26 September 2017, 17:00:23
Na ja, ganz ohne dass du dich mit dem Berechtigungskonzept, der Bedeutung von sudo usw. beschäftigst, wirst du nicht lange klarkommen. Bei ubuntuusers.de gibt es da auch recht ordentliche Grundlageninfo, die ich nur wärmstens zur Lektüre empfehlen kann.

Wie vorgehen:
1. Vielleicht versuchst Du mal, das script mit "*" statt <Name> aufzurufen und dir über die Bedeutung des "*" im Linux-Kontext (und perl/regex-Kontext) Gedanken zu machen.
2. Vermutlich ist es dann das einfachste, die Schritte 1 und 3 in das script pishrink.sh einzubauen; wenn du der Empfhelung gefolgt bist, keine grafische Oberfläche zu installieren, aber vi nicht magst, versuch's mal mit mcedit (ist im paket mc enthalten)
3. Schließlich mußt du entscheiden, ob das script zeitgesteuert von Linux (cronjob) ausgeführt werden soll oder von FHEM aus (ggf. muß dann der user fhem noch die Berechtigung haben, dieses script mit root-Rechten auszuführen. Dazu aber bitte nicht fhem für sudo generell freischalten!

Viel Spaß,

Beta-User
Einige Grundbegriffe kenne ich ja.
Grafik Oberfläche brauche ich nicht.
Und ich will das manuell starten weil für ein komplett backup die karte raus muss und das PiShrink script nicht auf meinem mac läuft, muss er danach wieder zurück auf Linux

Zitat von: Eisix am 26 September 2017, 17:05:10
Hallo,

also wenn ich das richtig verstanden habe soll nach dem einstecken des USB sticks ein find über den Stick Inhalt laufen und alle *.img Dateien mit deinem pishrink.sh verarbeiten. Als Übergabeparameter hast du den Dateinamen!?



find /home/pi/USB -type f -name "*.img" -exec sudo /home/pi/PiShrink/pishrink.sh {} \;



Das sollte dein Skript pro gefundener .img Datei ausführen. Voraussetzung dein sudo läuft ohne Passwort. Kann es leider nicht testen.

Gruß
Eisix
Dateinamen Vergebe ich selber aber immer mit Datum also variable.
Es würde dann nur eine .img Datei geben. Das Passwort kann ich dann ja eingeben.

Zitat von: CoolTux am 26 September 2017, 17:07:12
Interessant finde ich ja das der Stick NTFS formatiert sein soll. Ist er das wirklich?
Du hast ein Shellskript gefunden, hast Du Dir Mal angeschaut was es genau macht? Oder willst das einfach so lostreten?
NTFS bis jetzt ja,
Und das script haben viele Leute drüber geschrieben und laufenlassen habe ich es auch
Ergebnis war ein image von 16GB auf 3,2GB
https://github.com/Drewsif/PiShrink (https://github.com/Drewsif/PiShrink)


Dann werde ich jetzt mal testen :)
Titel: Antw:Shell Script erstellen
Beitrag von: SamNitro am 26 September 2017, 18:33:04
Zitat von: betateilchen am 26 September 2017, 17:06:59
oder:



find /home/pi/USB/ -name \*.img -print | xargs /home/pi/PiShrink/pishrink.sh


Ergibt:
xargs: /home/pi/PiShrink/pishrink.sh: Keine Berechtigung


Zitat von: Eisix am 26 September 2017, 17:05:10


find /home/pi/USB -type f -name "*.img" -exec sudo /home/pi/PiShrink/pishrink.sh {} \;


Ergibt:
sudo: /home/pi/PiShrink/pishrink.sh: Befehl nicht gefunden




Lange rede kurzer sinn:
ändere ich das auf find /home/pi/USB -type f -name "*.img" -exec sudo sh /home/pi/PiShrink/pishrink.sh {} \;

Läuft es DANKE :)

Shrunk /home/pi/USB/Rpi3_deb9.2017.09.27.img from 15G to 3,3G
Titel: Antw:Shell Script erstellen
Beitrag von: betateilchen am 26 September 2017, 19:04:36
Zitat von: SamNitro am 26 September 2017, 18:33:04
Ergibt:
xargs: /home/pi/PiShrink/pishrink.sh: Keine Berechtigung


naja, wenn das Skript (warum auch immer) nur von root ausgeführt werden darf, musst Du das sudo natürlich auch angeben:


find /home/pi/USB/ -name \*.img -print | xargs sudo /home/pi/PiShrink/pishrink.sh


Linux Grundlagen...
Titel: Antw:Shell Script erstellen
Beitrag von: CoolTux am 26 September 2017, 19:15:53
Mal schauen wie die Rechte für die Datei sind.
Davon mal ganz ab muss das Script mit root Rechten laufen da systemnahe Anwendungen gestartet werden wo nur root Rechte für hat.
Titel: Antw:Shell Script erstellen
Beitrag von: SamNitro am 26 September 2017, 19:18:44
Hatte es mit sudo xargs versucht.

Sorry das nicht alle vom fach sind.

Ich suche halt nur nach einer Methode ein Backup auf eine erschwingliche Größe zu bekommen und so kann ich mir helfen.
Titel: Antw:Shell Script erstellen
Beitrag von: CoolTux am 26 September 2017, 19:22:11
Vom Fach muss man nicht sein, aber wenigstens die Anleitung lesen
Zitat
[user@localhost PiShrink]$ sudo ./shrink.sh pi.img
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop1: 88262/1929536 files (0.2% non-contiguous), 842728/7717632 blocks
resize2fs 1.42.9 (28-Dec-2013)
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/loop1 to 773603 (4k) blocks.

Steht auf der von Dir verlinkten GitHub Seite
Titel: Antw:Shell Script erstellen
Beitrag von: SamNitro am 26 September 2017, 19:42:00
funktioniert hat es doch wollte es nur einfacher haben
Titel: Antw:Shell Script erstellen
Beitrag von: betateilchen am 26 September 2017, 20:13:27
Zitat von: SamNitro am 26 September 2017, 16:42:55
ich würde gerne meine Images vom Rpi, die ich wieder über einen usb stick am Rpi einstecke wegen der Größe, kleiner machen.

*grmpf*... ich war gedanklich die ganze Zeit beim Verkleinern von Bilddateien. Bis ich das hier gelesen habe:

Zitat von: CoolTux am 26 September 2017, 19:15:53
muss das Script mit root Rechten laufen da systemnahe Anwendungen gestartet werden

Interessanterweise hat das keinerlei Einfluss auf den Inhalt meiner bisherigen Antworten hier im Thread - die passen trotzdem  8)
Titel: Antw:Shell Script erstellen
Beitrag von: SamNitro am 26 September 2017, 20:16:13
Universelle Antworten sind immer perfekt [emoji2]


Gesendet von iPhone mit Tapatalk