AZ's Blog » Linux https://azapps.de Einmal mit Profis arbeiten… Sat, 28 Jun 2014 13:46:52 +0000 de-DE hourly 1 http://wordpress.org/?v=4.2.4 Mailserver einrichten https://azapps.de/blog/2013/12/15/mailserver-einrichten/ https://azapps.de/blog/2013/12/15/mailserver-einrichten/#comments Sun, 15 Dec 2013 13:00:33 +0000 https://azapps.de/?p=18068 Nach langem hin und her hab ich nun auch einen eigen Server laufen. Der ist nicht ganz trivial einzurichten, aber eine gute Anleitung findet sich hier

Danach hast du folgende Sachen installiert

  • Postfix (SMTP)
  • Dovecot (IMAP,POP)
  • Postfix-Admin (Web-Interface zum Administrieren von allem)
  • Roundcube (Hübsches Webmail-Interface)
]]>
https://azapps.de/blog/2013/12/15/mailserver-einrichten/feed/ 0
Gitshots – Post-commit Fotos mit Git https://azapps.de/blog/2013/05/16/gitshots-post-commit-fotos-mit-git/ https://azapps.de/blog/2013/05/16/gitshots-post-commit-fotos-mit-git/#comments Thu, 16 May 2013 16:01:28 +0000 https://azapps.de/?p=4035 Vor einiger Zeit hab ich eine lustige Sache auf Coderwall gefunden: imagesnap git post-commit photo rewrite. Also Webcam–Snapshots nach jedem Commit anfertigen. Klingt lustig, ist es auch, der Sinn ist fraglich, aber egal.

Nach etwas rumprobiere hab ich eine für mich (aktuell) optimale Lösung gefunden:

~/.git/hooks/post-commit:

#!/bin/bash
~/.scripts/gitshot

~/.scripts/gitshot:

#!/bin/bash
streamer -s 1280x720 -o ~/.gitshots/`date +%Y-%m-%d_%H:%M:%S`.jpeg -q &!

Dieses Script sorgt dafür, dass nach jedem Commit ein Foto mit der Webcam gemacht wird und nach ~/.gitshots/ gespeichert wird. Da dies etwas dauert (Wahrscheinlich wegen dem initialisieren der Kamera), wird es im Hintergrund erledigt. (Dafür muss das Paket xawtv (unter Archlinux) installiert sein.)

Damit dieser Hook automatisch in neuen Repos aktiviert wird, musst du das Verzeichnis ~/.git als Template definieren:

git config --global init.templatedir ~/.git/

Um den Hook für bestehende repos zu aktivieren, einfach die Datei rüberkopieren:

cp ~/.git/hooks/post-commit .git/hooks/

(Im Git-Verzeichnis Ausführen)

Viel Spaß!

]]>
https://azapps.de/blog/2013/05/16/gitshots-post-commit-fotos-mit-git/feed/ 0
Archlinux unter Android installieren https://azapps.de/blog/2013/04/08/archlinux-unter-android-installieren/ https://azapps.de/blog/2013/04/08/archlinux-unter-android-installieren/#comments Mon, 08 Apr 2013 21:01:05 +0000 https://azapps.de/?p=545 Linux auf dem Handy…. So etwas nerdiges. Aber das hat doch eh fast jeder (Android). Also warum nicht die vorhandenen Möglichkeiten nutzen und nebenbei noch ein anständiges System laufen haben. Wie man also Archlinux unter Android installiert, kannst du in den nächsten Absätzen lesen.

Vorneweg: So schwer ist das wirklich nicht. Die Vorteile überwiegen natürlich:

  • Richtige Anwendungen Laufen lassen
  • Ordentliche Entwicklungsumgebung in gewohnter Atmosphäre
  • Git
  • Python, ruby, …
  • Echte X Anwendungen laufen
  • Webserver
  • Cronjobs
  • …… und vieles mehr

Technisches

Es gibt einige Möglichkeiten Linux auf sein Handy zu bringen:

  • VM –  wenn dies funktionieren sollte, dann wäre das wohl ziemlich langsam und würde viel Strom kosten
  • Nativ – soll es geben… Aber dann läuft Android nicht mehr und man kann sich nicht telefonieren
  • Chroot dabei wird der ganz normale Android Kernel verwendet, nur befindet sich der aktuelle Prozess und alle Kindprozesse in einer eigenen Umgebung (also in unserem Archlinux) dies ermöglicht es, das Android parallel einfach weiter laufen kann, da nichts emuliert wird wirkt sich das sich nicht auf die Akkulaufzeit aus

Voraussetzungen

  • Root

Ich zeige dir also, wie man Archlinux in einer chroot-Umgebung installiert.

Warum Archlinux?

  • Es gibt eine ARM Version
  • Aktuelle Software
  • Gute Community
  • Tolles OS

Was lesen?

Ich habe mich bei meiner Installation an diese zwei Tutorials gehalten.

Das erste solltest du dir anschauen, wenn du alles selber machen willst, und wenn du das System auf die SD Karte installieren willst (nicht empfohlen, da langsam und die SD Karte kann kaputtgeschrieben werden).

Das zweite ist etwas veraltet und funktioniert Nicht ganz so wie beschrieben, weil das verlinkte image nicht mehr vorhanden ist.

Also hier meine Vorschläge:

  • Du willst alles selber machen und das Linux auf die SD-Karte installieren? Dann Versuche das erste Tutorial
  • Du willst alles selber machen, aber Linux auf die Systempartition installieren? Dann lies das erste Tutorial bis “Upload the tarball to the phone“ und liest bei mir ab … weiter
  • Du willst dir die Mühen mit der extrahieren des Dateisystems sparen? Dann lies meinen Artikel

Installation

Logge dich über SSH oder die adb Konsole auf den Handy ein (oder du tippst alles auf dem Handy, dann viel Spaß…)

Für SSH versuche mal die App: DropBear SSH Server

Ansonsten einfach adb shell ausführen.

Führe folgende Befehle aus:

su 
bash 
cd /data/local/ 
mkdir arch 
cd arch 
wget https://azapps.de/wp-content/uploads/2013/02/archlinux.tar.gz
tar xzf archlinux.tar.gz 
rm Arch*.tar.gz 
mount -o bind /dev dev 
mount -t proc proc proc 
mount -t sysfs sysfs sys 
ln -s /proc/self/fd dev/fd 
echo "nameserver 85.214.20.141" >> /data/local/arch/etc/resolv.conf

Du lädst dir damit mein vorbereitetes image in das Verzeichnis runter, entpackst es und mountest noch ein paar Sachen an die richtigen Stellen. Dann richtest du dir Sicherheitshalber noch einen Notfall DNS Server ein (wenn du Google vertraust, nimmst du die 8.8.8.8. Der hier ist von Digital Courage).

Für das erste mal tippst du folgende Befehle ein:

chroot . /bin/bash 
source /etc/profile 
export TERM=xterm-256color 
export HOME=/root mount /dev/pts 
pacman -Syuu

Damit wechselst du in den chroot und lädst ein paar Sachen nach und setzt die Variablen richtig.

Im Prinzip bist du fertig. Du kannst noch einen neuen Nutzer anlegen, damit du nicht immer als Root arbeiten musst:

useradd -m nutzername

Damit du das initialisieren nicht jedes mal händisch machen musst, nimmst du einfach das vorbereitete Script von lrvick: https://gist.github.com/lrvick/2632221 das macht alles automatisch.

Wie geht es weiter?

Basiseinrichtung

Als Terminalemulator empfehle ich dir den hier: Android Terminal Emulator der kommt auch sehr gut mit den Farben klar und da funktioniert auch htop wunderbar.

DIE Tastatur (Hacker’s Keyboard) solltest du unbedingt für solche Sachen verwenden.

Damit du das Script nicht jedes mal von Hand ausführen musst, kannst du es als init Script in Terminal emulator benutzen:

Einstellungen/Startbefehl

su -c “/data/local/arch/init.sh“

Wenn du jetzt das Terminal öffnest, bist du immer gleich in Archlinux drin.

]]>
https://azapps.de/blog/2013/04/08/archlinux-unter-android-installieren/feed/ 2
Phusion Passenger und Apache mit Debian https://azapps.de/blog/2013/01/03/phusion-passenger-und-apache-mit-debian/ https://azapps.de/blog/2013/01/03/phusion-passenger-und-apache-mit-debian/#comments Thu, 03 Jan 2013 18:49:06 +0000 https://azapps.de/?p=284 Debian… dieser Hort uralter Software – Aber man muss es halt nutzen. In den Debian–Stable repos ist Ruby 1.8. eingetragen. Aktuell ist aber Ruby 1.9.3. Die Installation von Rails und vor allem dem Phusion Passenger gestaltete sich für mich ziemlich schwierig. Wie es trotzdem klappt, kannst du hier nachlesen.

Ruby installieren

Die Ruby–Version aus der Paketverwaltung kann man wie gesagt vergessen. Also müssen wir rvm nutzen. Am praktischsten ist es, rvm gleich Systemweit zu installieren:

curl -L https://get.rvm.io | sudo bash -s stable

Wichtig ist hier, den Befehl nicht als Root, sondern mit sudo auszuführen, weil rvm einige Variablen benötigt, die mit root anders gesetzt sind
Dann installierst du dir die aktuelle Ruby–Version:

rvm install 1.9.3
rvm use 1.9.3

Nun habe ich mir meine Rails–Applikation geholt und die benötigten Gems mit

bundle install

installiert.

Phusion Passenger einrichten

Passanger installieren:

gem install passenger

Nun muss noch das Modul für Apache installiert werden:

rvmsudo /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0.18/bin/passenger-install-apache2-module

Den Pfad zur Installation musst du Gegebenenfalls anpassen.
Jetzt nur noch die Apache Konfiguration anpassen und danach kann es losgehen:

Füge folgende Zeilen am Ende der /etc/apache2/apache.conf (o.ä.) hinzu:

   LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0
.18/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p362/gems/passenger-3.0.18
   PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p362/ruby

Dann erstellst du einen neuen Virtuellen Host: (z.B. /etc/apache2/sites-enabled/yourhost.com.conf)

   <VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public    
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
   </VirtualHost>

Danach musst du die Seite aktivieren und dann Apache neu laden (oder neu starten):

sudo a2ensite yourhost.com.conf
sudo service apache2 restart

Anwendung vorbereiten

Wenn noch nicht getan, solltest du genau jetzt

bundle install

durchführen. Danach erstellen wir die Datenbank und kompilieren die Assets vor:

rake db:migrate RAILS_ENV="production"
bundle exec rake assets:precompile

Wenn du nun deine Seite aufrufst, sollte alles Funktionieren. Wenn eine Leere Seite mit irgendwas mit „Sorry“ kommt, schau in deinen Logs nach: /var/log/apache2/error.log Wenn eine Phusion–Passanger–Fehlerseite kommt, dann lies nach, was dort steht.

Mehr dazu unter…

]]>
https://azapps.de/blog/2013/01/03/phusion-passenger-und-apache-mit-debian/feed/ 0
Volles Server Backup mit rsync und SSH https://azapps.de/blog/2012/12/16/volles-server-backup-mit-rsync-und-ssh/ https://azapps.de/blog/2012/12/16/volles-server-backup-mit-rsync-und-ssh/#comments Sun, 16 Dec 2012 20:41:35 +0000 https://azapps.de/?p=188 Ich hatte das Problem, dass ich mal ein volles Backup meines Servers ziehen wollte, aber über SSH keinen root–Zugang habe. (Das ist auch gut so). Die Lösung habe ich dann schlussendlich hier gefunden: https://crashingdaily.wordpress.com/2007/06/29/rsync-and-sudo-over-ssh/

]]>
https://azapps.de/blog/2012/12/16/volles-server-backup-mit-rsync-und-ssh/feed/ 0
Und jetzt hab ich ‚nen Igel – Wer braucht denn schon Himbeeren? https://azapps.de/blog/2012/11/18/und-jetzt-hab-ich-nen-igel-wer-braucht-denn-schon-himbeeren/ https://azapps.de/blog/2012/11/18/und-jetzt-hab-ich-nen-igel-wer-braucht-denn-schon-himbeeren/#comments Sat, 17 Nov 2012 23:21:11 +0000 https://azapps.de/?p=167 3,2,1, meins…¹ Hups jetzt hab ich nen Igel. Einen was? Einen Igel, also genauer einen Igel 3/4 3210. (Die haben Humor…) Eigentlich gedacht als ThinClient für Unternehmenszwecke wird mein Igel mir wohl als Server für private Zwecke dienen.

Was ist drinne?

Die Ausstattung ist nicht gerade Leistungsstark. Das Innenleben besteht aus einem VIA Eden Prozessor, der mit sage und schreibe 600MHz getaktet ist. Dem steht ein OnBoard Grafikchip zur Verfügung, welcher sich den Speicher wie üblich vom RAM (256MB) abzwackt – Das stimmt nicht ganz, 16MB sind fest verlötet.

Klingt nicht schnell, aber für meine Anwendungen wirds hoffentlich reichen. Weitere Austattungsmerkmale

  • Der Igel hat eine RS232–Schnittstelle (seriell), welche vor allem für Spielereien mit Microcontrollern ganz praktisch ist.
  • VGA und DVI sind vorhanden (wer’s braucht).
  • leider nur 3 USB–Ports
  • leider nur schwachbrüstiges Ethernet (10/100MBit)
  • Kartenleser (wohl für Chipkarten wie Kreditkarten und so)
  • Paralleler Port (Für uralt–Drucker)
  • PS/2
  • Line–in und Line–Out (Besser als mein Thinkpad, das hat nur einen Ausgang…)
  • Freier IDE–Steckplatz

Dafür ist er ziemlich klein und passt auch in engere Löcher in Regalen rein,  verbraucht für sein Alter kaum Strom (~15 Watt) und hat keinerlei bewegliche Bauteile – Demzufolge also lautlos. Das einzig nervige ist die grell leuchtend blaue Status LED. Die blinkt zum Glück aber nicht und lässt sich leicht überkleben

Für die knapp 5€ (+5€ Versand) die ich für den bezahlt habe, ist das ganz passabel.

Was mach ich nun damit?

Obwohl als reiner ThinClient entworfen, lässt sich der Rechner natürlich wie jedes andere System nutzen. Einfach das Gehäuse aufschrauben, eine CF–Karte in den Steckplatz stecken (Größer=Besser). Dann einen USB–Stick z.B. mit einem Debian–Netinstall–Image einlegen und das Linux installieren. Dann funktioniert alles wie gewohnt. Eine grafische Oberfläche braucht man natürlich nicht, soll ja ein Server werden.

Soundserver

Ich hab ein Uralt–Soundsystem herumstehen und das hat ein nur 1,5m langes Klinkenkabel. Außerdem nerven Kabel am Notebook (Vor allem, wenn das Soundsystem ungünstig positioniert ist). Deshalb soll der Igel ab sofort für die Soundausgabe zuständig sein.

Printserver

Noch so ein leidiges Thema. Einen Printserver wünsche ich mir schon seit langem. Gründe sind die selben: kurze und nervige Kabel. Auch da soll der Igel Abhilfe schaffen.

Router

Naja zumindest sowas in der Art. Ich habe noch ein paar WLAN–Sticks rumliegen und mach mir wohl in der WG noch ein privates Funknetz auf. Warum? 1. Weil ichs kann. 2. Will ich dann meinen Internetverkehr von meinen Endgeräten in einem von mir kontrollierten Punkt bündeln und den dann weiterverteilen. Wie genau ich mir das vorstelle, weiß ich selbst noch nicht – Mir schwebt ein VPN mit meinem Server oder vorerst dem Uninetz vor.

DNS–Server mach ich mir auch noch drauf, damit ich keine blöden /etc/host Dateien pflegen muss. Dann kann ich direkt auf mein zukünftiges Handy zugreifen 😀

Fileserver

Vielleicht wirds auch noch nen Fileserver geben. Aber dafür hat die lahme Kiste wohl nicht genug Ressourcen um in halbwegs annehmbarer Geschwindigkeit auf meine verschlüsselte externe Festplatte zu schreiben.

Und warum eigentlich kein Raspberry Pi?

Ich glaub, meins ist in den Weiten von Farnells Lagerhallen verschollen :( Darum muss ich mich kümmern, aber die Bestellung ging ja nicht über mich, also wirds noch etwas stressig. Außerdem ist der Preis natürlich nicht zu vergleichen. Ich hab 1/4 vom Preis vom Raspberry bezahlt. Ganz davon abgesehen sind Raspberry Pi’s Mainstream und somit voll öde (Genau so wie ArchLinux) 😉

¹ Natürlich liegt das Copyright an dem Spruch bei ebay.

]]>
https://azapps.de/blog/2012/11/18/und-jetzt-hab-ich-nen-igel-wer-braucht-denn-schon-himbeeren/feed/ 4
Probleme mit Kippo bzw. Python https://azapps.de/blog/2012/11/04/probleme-mit-kippo-bzw-python/ https://azapps.de/blog/2012/11/04/probleme-mit-kippo-bzw-python/#comments Sun, 04 Nov 2012 17:13:34 +0000 https://azapps.de/?p=153 Ich hab mir mal meine Logs durchgesehen und mir ist aufgefallen, dass es ein paar Leute gibt, die Versuchen sich per SSH bei mir einzuloggen. An sich habe ich da nichts dagegen. Aber das ist ein anderes Thema, über das ich demnächst berichten werde.

Zur Sache: Ich habe mir Kippo aus dem SVN geholt und die entsprechenden Pakete installiert. Beim starten kam folgende Fehlermeldung:

 ./start.sh
Starting kippo in background...Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py",
line 626, in run
    runApp(config)
  File "/usr/lib/python2.6/dist-packages/twisted/scripts/twistd.py",
line 23, in runApp
    _SomeApplicationRunner(config).run()
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py",
line 374, in run
    self.application = self.createOrGetApplication()
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py",
line 439, in createOrGetApplication
    application = getApplication(self.config, passphrase)
---  ---
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py",
line 450, in getApplication
    application = service.loadApplication(filename, style, passphrase)
  File
"/usr/lib/python2.6/dist-packages/twisted/application/service.py", line
390, in loadApplication
    application = sob.loadValueFromFile(filename, 'application', passphrase)
  File "/usr/lib/python2.6/dist-packages/twisted/persisted/sob.py", line
210, in loadValueFromFile
    exec fileObj in d, d
  File "kippo.tac", line 15, in 
    from twisted.conch.ssh import factory, keys
  File "/usr/lib/python2.6/dist-packages/twisted/conch/ssh/factory.py",
line 21, in 
    from twisted.conch.ssh import keys
  File "/usr/lib/python2.6/dist-packages/twisted/conch/ssh/keys.py",
line 20, in 
    from pyasn1.type import univ
exceptions.ImportError: No module named type

Failed to load application: No module named type

Bei Meinem Debian 6 ist wohl etwas in der Paketverwaltung schief gegangen, denn es hat pyasn1 nicht richtig initialisiert.

Einen Tip für die Lösung des Problems lieferte ein Blick in die postint-Behandlung des pyasn1-Pakets:

 dpkg  -I /var/cache/apt/archives/python-pyasn1_0.0.11a-1_all.deb postinst
#!/bin/sh
set -e
# Automatically added by dh_pysupport
if which update-python-modules >/dev/null 2>&1; then
        update-python-modules  python-pyasn1.public
fi
# End automatically added section

Bei mir war das update-python-modules-Skript nicht im $PATH drin.
Die Lösung war ganz einfach:

sudo /usr/sbin/update-python-modules  python-pyasn1.public

Hat alle Probleme behoben und nun kann Kippo gleich loslaufen…

[edit] Da habe ich den Lösungsansatz her: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=622086 [/edit]

]]>
https://azapps.de/blog/2012/11/04/probleme-mit-kippo-bzw-python/feed/ 2
Ausdruck beim FS-1020D beschleunigen https://azapps.de/blog/2012/10/01/ausdruck-beim-fs-1020d-beschleunigen/ https://azapps.de/blog/2012/10/01/ausdruck-beim-fs-1020d-beschleunigen/#comments Mon, 01 Oct 2012 08:29:57 +0000 https://azapps.de/?p=89 Ich habe hier einen guten Artikel gefunden, wie man den Ausdruck seines Kyocera FS-1020D rasant beschleunigt. Das übertragen von einer Seite dauert nun wenige Sekunden statt bisher rund 1 Minute.
Geekparadise

]]>
https://azapps.de/blog/2012/10/01/ausdruck-beim-fs-1020d-beschleunigen/feed/ 0
Systemd: slock beim Wechseln in den suspend anschalten https://azapps.de/blog/2012/09/27/systemd-slock-beim-wechseln-in-den-suspend-anschalten/ https://azapps.de/blog/2012/09/27/systemd-slock-beim-wechseln-in-den-suspend-anschalten/#comments Thu, 27 Sep 2012 08:00:39 +0000 https://azapps.de/?p=115 In der Zeit vor Systemd war die Prozedur um meinen Rechner schlafen zu legen und den Zugriff für andere zu sperren ziemlich aufwändig: Ich brauchte ganze zwei Tastenkombinationen dafür (SUPER+X für slock und FN+F4 für den Suspend). Lange Zeit (2 Wochen oder so) konnte ich mein Notebook nicht mit schlafen legen und slock anschalten. Dieses Problem habe ich endlich behoben.

Die Anleitung funktioniert genauso einfach auch mit anderen screensavern aber für slock musst du den Code nur kopieren.

Wir benötigen lediglich einen Service, welcher aktiv wird, sobald man versucht den Rechner schlafen zu legen (Suspend oder Hibernate). Dann wird einfach slock gestartet.

Lege dazu einfach ein Unit-File in /usr/lib/systemd/system/slock.service an und fülle dieses mit folgendem Inhalt:

[Unit]
Description=Lock X session using slock
After=sleep.target

[Service]
User=[Dein Username hier]
Type=forking
Environment=DISPLAY=:0
ExecStart=/usr/bin/slock

[Install]
WantedBy=sleep.target

Der Code sollte verständlich sein. Nachdem man den Rechner schlafen legen will, wird slock angeschalten. Ich habe beobachtet, dass slock sofort angeschalten wird und nicht erst nachdem der Rechner aufwacht. Wenn man statt After Sleep hinschreibt, dann wird slock gestartet und erst nachdem man die Sperre aufgehoben hat, wird der Rechner schlafen gelegt. Das ist ziemlich nervig und geht leicht am Ziel vorbei.

Und damit man nicht jedes mal systemctl suspend eintippen muss, habe ich mir in meine Xmonad.hs noch ein Shortcut eingearbeitet. Füge dazu einfach in die Funktion keyBindings noch folgende Zeile ein:

	, mod4Mask > xK_v > spawn "systemctl suspend"

Nachdem du die Konfiguration erneut eingelesen hast (meist MOD+Q), kannst du auch diese Tastenkombination benutzen. Bei mir ist dies MOD+V, da das V so schön praktisch neben dem X (nur slock) liegt. Klingt komisch, ist aber so (NEO).

„Und warum hast du das nicht mit einem Sleep-Hook gemacht?“ – Weil es bei mir nicht ging. Wenn du weißt, wie, schreib einen Kommentar.

]]>
https://azapps.de/blog/2012/09/27/systemd-slock-beim-wechseln-in-den-suspend-anschalten/feed/ 0
Batteriewarnung fürs Thinkpad mit Systemd https://azapps.de/blog/2012/09/26/batteriewarnung-furs-thinkpad-mit-systemd/ https://azapps.de/blog/2012/09/26/batteriewarnung-furs-thinkpad-mit-systemd/#comments Wed, 26 Sep 2012 17:42:24 +0000 https://azapps.de/?p=110 Kennst du das? Du arbeitest grad und dann macht’s „ziup“ und der Bildschirm ist schwarz. Da war wohl der Akku alle. Nachdem mir das bereits einige male passiert ist, habe ich mir heute ein kleines Bash-Script geschrieben, welches fortlaufend auf den Akkustatus schaut und mir Bescheid gibt falls der Saft alle wird.

Zu meiner Verteidigung muss ich sagen, dass ist das erste sinnvolle Bash-Skript, welches ich bisher geschrieben habe.

Abhängigkeiten

Folgende Pakete werden benötigt:

  • systemd (logisch, siehe Titel)
  • TLP (Funktioniert am besten mit Thinkpads)
  • zenity (Für die Popups)

Skripte

Als erstes benötigen wir das eigentliche Skript. Das speichern wir am besten in /usr/lib/systemd/scripts/battery.sh ab:

#!/bin/bash
#Deinen Nutzernamen hier einfügen
USERNAME=foo
#Maximaler Füllstand
BAT_MAX=`cat /sys/class/power_supply/BAT0/energy_full`

#Wurde die Meldung schonmal angezeigt?
LOWER10=0
LOWER5=0
LOWER1=0

#Service mach mal...
while true; do
#Aktuellen Wert einlesen
    BAT_NOW=`cat /sys/class/power_supply/BAT0/energy_now`
    PERCENT=`gawk " BEGIN {OFMT=\"%.0f\";print (100/$BAT_MAX) * $BAT_NOW}"`
#    echo $PERCENT
#Überprüfen auf Prozentstand
    if [[ $PERCENT -le 10 && $LOWER10 -ne 1 ]] ; then
        sudo -u $USERNAME zenity --info --text "Akku unter 10% ($PERCENT)"
        LOWER10=1
    fi
    if [[ $PERCENT -le 5 && $LOWER5 -ne 1 ]] ; then
        sudo -u $USERNAME zenity --warning --text "Akku unter 5% ($PERCENT)"
        LOWER5=1
    fi
    if [[ $PERCENT -le 1 && $LOWER1 -ne 1 ]] ; then
        LOWER1=1
        systemctl suspend
    fi
    sleep 10
done

[edit]nun musst du nur noch die eine $USERNAME-Variable ändern[/edit]

Dann brauchen wir noch ein Unit-File, auf dessen Basis systemd das Skript startet. Das liegt unter /usr/lib/systemd/system/battery.service:

[Unit]
Description=Looking for Battery State

[Service]
Type=simple
Environment=DISPLAY=:0
ExecStart=/usr/lib/systemd/scripts/battery.sh

[Install]
WantedBy=multi-user.target

Aktiviere den Service noch mit sudo systemctl enable battery.service und wenn du das sofort brauchst, machst du ein sudo systemctl start battery.service.

Viel Spaß damit. Auf Verbesserungen am Code freue ich mich natürlich immer.

]]>
https://azapps.de/blog/2012/09/26/batteriewarnung-furs-thinkpad-mit-systemd/feed/ 0