Skip to content

RasPi Scripte

Der kleine Raspberry Pi läuft jetzt seit gut zwei Wochen einwandfrei als "Server" bei uns. Wie gesagt, er hängt zur Stromversorgung an unserer Fritzbox und hat jetzt mehr und mehr Funktionen übernommen. (Habe noch nicht geschafft, ihn als Printserver für unseren Brother-Drucker einzurichten, was aber hauptsächlich daran liegt, dass ich keine Treiber finde, die für ARM kompiliert sind, und die, die die als Sourcecode zum Download anbieten, ja eher ein Witz sind.)

Egal, um das Leben etwas einfacher zu machen, habe ich mir ein paar Scripte geschrieben. Manche davon laufen täglich oder wöchentlich per cron. Hier eine kleine Auswahl:
~ # cat /etc/cron.daily/ntp-restart.sh
#!/bin/bash

echo "To: jan@sauserver" > ~/ntp.log
echo "Subject: Sauserver NTP Script" >> ~/ntp.log
echo -e "\nCorrecting clock drift via NTP.\nTime before: " >> ~/ntp.log
date >> ~/ntp.log
echo -e "\nRestarting ntp-client:" >> ~/ntp.log
/etc/init.d/ntp-client restart >> ~/ntp.log
echo -e "\nTime after restart: " >> ~/ntp.log
date >> ~/ntp.log
echo -e "\n.\n" >> ~/ntp.log

cat ~/ntp.log | sendmail -t

Wie man sieht, habe ich mittlerweile auch einen postfix installiert und zusätzlich für imap auch noch dovecot. Beide reden natürlich erstmal nicht mit dem Internet, sondern nur mit dem lokalen Netz. (Davon abgesehen, dass glaube ich mittlerweile keiner der großen Provider mehr mit irgendwelchen daher gelaufenen Mailservern redet, die die nicht kennen. Gibt ja so schon genug Spam. ;-))

Jedenfalls, da der Pi ja keine Hardware Clock hat, startet dieses kleine Script mir einmal am Tag den ntp-client neu. Das ist im "normalen" Betrieb wohl etwas zu häufig, denke ich, denn ich habe festgestellt, dass sie Uhr umso ungenauer wird, je länger das Ding läuft (natürlich) und je öfter es in den Übertaktungs-Modus geht; wenn ich also viel neuen Blödsinn teste und dementsprechend hohe Prozessorlast durch gcc verursache, wird die Uhr ungenauer. Kann mich aber auch täuschen.

Egal, schaden tut es nicht und einmal am Tag wird der Zeit-Server auch den zusätzlichen Traffic vertragen können.

Noch'n Gedicht:

~ # cat /etc/cron.weekly/update.sh
#!/bin/bash

mv ~/update.log ~/update.last.log
echo "To: jan@sauserver" >> ~/update.log
echo "Subject: Sauserver Update Script" >> ~/update.log
echo -e "\nAutomatic update started at " >> ~/update.log
date >> ~/update.log
echo -e "\n-----8<-----8<-----8<-----8<-----\n" >> ~/update.log
echo -e "Looking for newer firmware: " >> ~/update.log
cd /root/firmware/
ionice -c 3 nice git pull >> ~/update.log 2>&1
cd ..
echo -e "\n----->8----->8----->8----->8-----\n" >> ~/update.log
echo -e "\n-----8<-----8<-----8<-----8<-----\n" >> ~/update.log
echo -e "Updating portage tree... " >> ~/update.log
ionice -c 3 nice emerge --sync >> /dev/null
echo -e "Looking for updates: " >> ~/update.log
ionice -c 3 nice emerge -pvuDN world >> ~/update.log
ionice -c 3 nice eselect news list >> ~/update.log
echo -e "\n----->8----->8----->8----->8-----\n" >> ~/update.log
echo -e "Automatic update ended at " >> ~/update.log
date >> ~/update.log
echo -e "\n\neof\n.\n" >> ~/update.log

cat ~/update.log | sendmail -t

Ein mal in der Woche nach neuer Software zu suchen, das sollte ja wohl auch drin sein. Das Script holt sich - sofern vorhanden - einen neuen Kernel samt Firmware und Modulen aus dem git der Raspberry Pi Foundation. Außerdem synct es den Gentoo Portage Tree und schaut nebenbei mal nach, was es Neues geben würde.

Falls es dann tatsächlich was gab, habe ich mir noch ein Update-Script gebaut, das ich aber nur manuell aufrufe:

~ # cat kernelupdate.sh
#!/bin/bash
firmwarefiles=( bootcode.bin COPYING.linux fixup_cd.dat fixup.dat fixup_x.dat kernel_emergency.img kernel.img LICENCE.broadcom start_cd.elf start.elf start_x.elf )

echo "Stage 1: Updating boot partition."
echo "Stage 1a: Backup of existing files."
for ff in ${firmwarefiles[@]}
do
mv -v /boot/$ff /boot/backup/
done
echo "...backup finished."

echo "Stage 1b: Copying new files."
for ff in ${firmwarefiles[@]}
do
cp -v /root/firmware/boot/$ff /boot/
done
echo "...copy complete."

echo "Stage 2: Updating module files."
echo "Stage 2a: Backup of existing modules."
mv -v /lib/modules/* /root/oldmodules/
echo "...backup finished."

echo "Stage 2b: Copying new files."
cp -rv /root/firmware/modules/* /lib/modules/
echo "...copy complete."

echo "Stage 2c: Running depomod."
depmod -v "`ls /lib/modules`"
echo "...module dependencies written."

echo "Stage 3: sync and reboot."
sync
echo "...sync complete, reboot now!"
#reboot
echo "...reboot manually, please! ;-)"

So, und das war's erst mal. Da kommt aber wahrscheinlich noch was. ;-)

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!