Shell Script erstellen

Begonnen von SamNitro, 26 September 2017, 16:42:55

Vorheriges Thema - Nächstes Thema

SamNitro

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
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

Beta-User

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
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Eisix

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

betateilchen

oder:



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

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

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

Eisix

Einen habe ich noch:



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


SamNitro

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


Dann werde ich jetzt mal testen :)
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

SamNitro

#7
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
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

betateilchen

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...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

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

SamNitro

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.
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

CoolTux

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

SamNitro

funktioniert hat es doch wollte es nur einfacher haben
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

betateilchen

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)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

SamNitro

Universelle Antworten sind immer perfekt [emoji2]


Gesendet von iPhone mit Tapatalk
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)