Autor Thema: Shell Script erstellen  (Gelesen 3069 mal)

Offline SamNitro

  • Sr. Member
  • ****
  • Beiträge: 805
Shell Script erstellen
« 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
« Letzte Änderung: 26 September 2017, 16:46:18 von SamNitro »
(Intel-Nuc Proxmox) (EnOcean) (MAX!) (CUL868) (CUL433) (Zigbee) (FS20) (ESP8266) (Echo) (DUOFERN)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 11639
  • eigentlich eher "user" wie "developer"
Antw:Shell Script erstellen
« Antwort #1 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
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}

Online Eisix

  • Sr. Member
  • ****
  • Beiträge: 889
Antw:Shell Script erstellen
« Antwort #2 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

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16522
  • s/fhem\.cfg/configDB/g
Antw:Shell Script erstellen
« Antwort #3 am: 26 September 2017, 17:06:59 »
oder:


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

-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25841
Antw:Shell Script erstellen
« Antwort #4 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?
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Online Eisix

  • Sr. Member
  • ****
  • Beiträge: 889
Antw:Shell Script erstellen
« Antwort #5 am: 26 September 2017, 17:12:57 »
Einen habe ich noch:


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


Offline SamNitro

  • Sr. Member
  • ****
  • Beiträge: 805
Antw:Shell Script erstellen
« Antwort #6 am: 26 September 2017, 18:00:11 »
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

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.

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) (EnOcean) (MAX!) (CUL868) (CUL433) (Zigbee) (FS20) (ESP8266) (Echo) (DUOFERN)

Offline SamNitro

  • Sr. Member
  • ****
  • Beiträge: 805
Antw:Shell Script erstellen
« Antwort #7 am: 26 September 2017, 18:33:04 »
oder:


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

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


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
« Letzte Änderung: 26 September 2017, 18:37:44 von SamNitro »
(Intel-Nuc Proxmox) (EnOcean) (MAX!) (CUL868) (CUL433) (Zigbee) (FS20) (ESP8266) (Echo) (DUOFERN)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16522
  • s/fhem\.cfg/configDB/g
Antw:Shell Script erstellen
« Antwort #8 am: 26 September 2017, 19:04:36 »
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...
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25841
Antw:Shell Script erstellen
« Antwort #9 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.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline SamNitro

  • Sr. Member
  • ****
  • Beiträge: 805
Antw:Shell Script erstellen
« Antwort #10 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.
(Intel-Nuc Proxmox) (EnOcean) (MAX!) (CUL868) (CUL433) (Zigbee) (FS20) (ESP8266) (Echo) (DUOFERN)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25841
Antw:Shell Script erstellen
« Antwort #11 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
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline SamNitro

  • Sr. Member
  • ****
  • Beiträge: 805
Antw:Shell Script erstellen
« Antwort #12 am: 26 September 2017, 19:42:00 »
funktioniert hat es doch wollte es nur einfacher haben
(Intel-Nuc Proxmox) (EnOcean) (MAX!) (CUL868) (CUL433) (Zigbee) (FS20) (ESP8266) (Echo) (DUOFERN)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16522
  • s/fhem\.cfg/configDB/g
Antw:Shell Script erstellen
« Antwort #13 am: 26 September 2017, 20:13:27 »
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:

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)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline SamNitro

  • Sr. Member
  • ****
  • Beiträge: 805
Antw:Shell Script erstellen
« Antwort #14 am: 26 September 2017, 20:16:13 »
Universelle Antworten sind immer perfekt [emoji2]


Gesendet von iPhone mit Tapatalk
(Intel-Nuc Proxmox) (EnOcean) (MAX!) (CUL868) (CUL433) (Zigbee) (FS20) (ESP8266) (Echo) (DUOFERN)

 

decade-submarginal