Manuel: Autostart-Skript mit Upstart auf TTY

Seid Ubuntu 9.10 wird nicht mehr Init zum starten von Diensten genutzt, sondern Upstart. Möchte man einen z.B. ohne Login X-Server automatisch starten, so gibt es dafür sehr gute HowTos.

Was aber kann man tun, wenn man ein Skript auf der TTY1 starten kann. Dank Upstart ganz einfach. Man wandelt einfach in der Datei /etc/init/tty1.conf die letzte Zeile um

# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -8 38400 tty1

zu

exec /usr/bin/command -param1 ... </dev/tty1 >/dev/tty1 2>&1

und schon wird das Programm ausgeführt. Möchte man z.B. automatisch eine Bash als Nutzer starten, ändert man die letzte Zeile in:

exec su - username -c bash </dev/tty1 >/dev/tty1 2>&1
No Comments Posted in Bash, Linux, Sysadmin, Ubuntu, Uncategorized
Tagged ,
Manuel: Kleine Aufmuterung zum Wochenende

Zahlen sind für mich Abstrakta, die sich unter fadenscheinigen Begründungen zu Formeln zusammenrotten und mir mit Rechtsansprüchen kommen, die ich schlecht widerlegen kann, weil Zahlen nicht mit sich diskutieren lassen.
Schön sind Zahlen nur, wenn sie eine gegenständliche Entsprechung haben und dem Transport von Informationen dienen. Die 3 z.B. ist im Zusammenhang mit Bier perfekt, die 7 eher nicht und was danach kommt, weiß ich nicht, weil ich dann nicht mehr zählen kann.

[Zitat: Tanja Haeussler, Spreeblick.com]

No Comments Posted in Aus dem Leben, Uncategorized
Manuel: Vergleich Legale DVD vs. Raubkopie

Diagramm: Illegale Kopie vs. Gekaufte DVD

[via Sascha Lobo]

No Comments Posted in Uncategorized
Manuel: Little Brother

Ich bin letzte Woche auf Netzpolitik auf das Buch “Little Brother” von Cory Doctorow gestoßen. Cory hat es unter der Creative-Commons veröffentlicht und für die Englisch-Faulen hat sich Christian Wöhrl die Mühe gemacht, es in deutsche Sprache zu übersetzten.

Nach einen Bombenanschlag in seiner Heimatstadt San Francisco wird der 17 jährige, Technik affine Schüler Marcus von der Heimatschutzbehörde festgenommen und verhört. Seinen Freunden und ihm wird vorgeworfen, die Terroristen zu unterstützten. Nach einer Weile werden alle, bis auf Marcus besten Freund, freigelassen, obwohl man Marcus für einen Anführer hält. Außerhalb der Haftanstalt weiß niemand um die Geschehnisse in der Anstalt bzw. ihre Existenz. Der Heimatschutz baut immer mehr Überwachungs-Equipment in den Staßen und öffentlichen Gebäuden der Stadt auf, unschuldige Menschen werden immer öfter kontrolliert und auch verhaftet. Die Behörden reagieren mit Gewalt auf Demonstrationen gegen die zunehmende Überwachung. Marcus beginnt zu radikalisiert und startet einen technologischen Krieg gegen die Überwacher…

Das Buch entstand in nur 8 Wochen und arbeitet teilweise sehr gut die Knackpunkte eines entstehenden Überwachungsstaates auf. Leider ist der Autor an einigen Stellen doch sehr schnell über die inneren Konflikte des Protagonisten hinweg gegangen. Allerdings hat er meine Unterstützung allein schon deshalb, weil er das Buch unter CC veröffentlicht hat. :-)

Als Informatiker / Sicherheitsinteressierter kann man dieses Buch sehr einfach lesen, auch wenn ich mir an manchen Stellen über die technische Realisierbarkeit von Marcus Abwehrmassnahmen nicht 100% sicher bin. Das Buch kann aber auch ohne große Probleme von Leuten gelesen werden, die keine Informatik-Grundausbildung haben, da die Mathematischen und Informationstheoretischen Einschübe sehr einfach gehalten sind. Ich kann es empfehlen.

No Comments Posted in Aus dem Leben, Freizeit, Politik, Security, Uncategorized
Tagged , , ,
Manuel: Wissenswertes Jura-Wissen: Reklamation wegen Defekt in den ersten 6 Monaten

Reklamiert einen Gegenstand wegen eines physikalischen Defekts, wird man von den Angestellten gern mit folgenden Worten nach Hause geschickt (Saturn macht das sehr gern!):

Das können wir nicht zurück nehmen/erstatten/umtauschen. Das hätten sie auch absichtlich und mit Gewalt machen können!

Ist auch grundsätzlich richtig per Gesetz gilt:

Es liegt IMMER die Pflicht des Verkäufers, dem Käufer nachzuweisen, dass der Käufer für den Schaden verantwortlich ist!

Also: Ruhig einfach mal fragen, ob man nicht doch lieber mit einem Anwalt wieder kommen soll. ;-)

No Comments Posted in Aus dem Leben, Uncategorized
Tagged , ,
Manuel: Wissenswertes Jura-Wissen: Anspruch auf Beratungshilfe für Bafög-Empfänger

Ich habe gestern von einem Bekannten (praktizierender Rechtsanwalt) erfahren, dass man als Empfänger nach BAFöG einen Antrag auf Beratungshilfe stellen kann:

Also wenn du BAFöG bekommst, kannst du mit dem letzten Bescheid zum Amtsgericht (Rechtsantragstelle) gehen und einen Antrag auf Beratungshilfe stellen. Bekommst dann einen sog. “Berechtigungsschein” für eine bestimmte Angelegenheit (zB. “Vorgehen gegen Vermieter wegen Schimmel in der Wohnung”). Damit kannst du dann zu einem Anwalt gehen und musst noch 10€ Eigenanteil zahlen. Dann erhältst du entweder eine Beratung oder der Anwalt vertritt dich sogar und du bekommst in der Sache keine Rechnung.

Das geht aber nur für Dinge, die noch nicht bei Gericht liegen, dort gibt’s Prozesskostenhilfe, dies aber nur dann, wenn die “Rechtsverfolgung hinreichende Aussicht auf Erfolg” hat. Das wird bei Beratungshilfe übrigens nicht geprüft.

Ach ja, das Amtsgericht hat nur noch an zwei Tagen in den Beratungshilfesachen offen, musst du mal im Internet gucken.

So etwas ist ja immer mal gut zu wissen. Weitere Informationen gibt es direkt auf der Homepage des Amtsgerichts Göttingen.

Wer weitere Tipps zu Recht und Ordnung hat, kann sie gern hier in den Kommentaren hinterlassen oder per EMail an “landgoe bei gmail punkt com” schicken. Ich hoffe hier immer mal wieder solche Tipps veröffentlichen zu können …

No Comments Posted in Aus dem Leben, Studium, Uncategorized
Tagged , ,
Manuel: Einführung in FastCGI

Große, dynamische Webseiten kommen kaum ohne ein Framework zur Verarbeitung von Anfragen aus. Aber je umfangreicher das eingesetzte Framework, umso länger dauert es bei Interpreter-Sprachen (z.B. PHP, Perl, etc.), bis alle Module interpretiert und geladen sind und die eigentliche Verarbeitung der Anfrage beginnen kann.

FastCGI

Eine Möglichkeit zur Optimierung bietet hier FastCGI, ein Standard zur Einbindung von externer Software in Webserver. Ähnlich wie bei normalem CGI wird ein externes Programm gestartet, welches alle Informationen übergeben bekommt. Wie auch bei CGI wird die Ausgabe einfach auf die Standard-Ausgabe geschrieben.

Der Unterschied ist jedoch, dass das aufgerufene, externe Programm selbst als Daemon läuft. Der Austausch der Daten findet über TCP (oder UNIX Domain Sockets) statt. Dadurch können die Programme sogar auf einem externen Server arbeiten.

FastCGI im Einsatz

Für viele Sprachen stehen Module zur Verfügung, die das FastCGI Protokoll implementieren und sich um die Kommunikation zwischen CGI-Prozess und Webserver kümmern, zum Beispiel CGI::Fast für Perl, FastCGI Process Manager für PHP, FCGIInterface für Java und viele mehr….
Auch viele Webserver unterstützten FastCGI: Apache, lighttpd, Microsofts IIS und ebenfalls viele mehr

Unter Apache lässt sich FastCGI sehr einfach durch das Modul fgcid einsetzten. Die Konfiguration ist – wenn der Prozess auf der gleichen Maschine läuft – ebenfalls sehr einfach. Es muss nur ein Handler hinzugefügt werden, der ausführbare Skripte mit einer bestimmten Endung mit dem fcgid assoziert, zum Beispiel für Perl und php:

AddHandler fcgid-script .fcgi .fphp

Der Prozess wird vom Apache2 Webserver gestartet, wenn er zum ersten Mal benötigt wird.

Der Codeoverhead, der erzeugt wird ist ebenfalls sehr gering:

use CGI::Fast;
while(my $fcgi = CGI::Fast->new()){
   # Normal Website Code
}

Erste Tests

Auf einer Webseite, die ich im Rahmen eines Projekts erstellt haben und welches Moose, ein umfangreiches Framework zur Objekt-Orientierten Programmierung in Perl, nutzt, konnte ich die Laufzeit signifikant verbessern:

Bei der ersten Auslieferung benötigt die Webseite ca. 3 Sekunden, was dem Laden der Module und Erstellen der Klassen geschuldet ist. Weitere Auslieferungen benötigten nur ca. 0.5 Sekunden. Die Ergebnisse lassen sich reproduzieren und durch Tests auch ohne Webserver nachvollziehen.

Fazit

Dank FastCGI lassen sich Webseiten mit großem Framework sehr einfach optimieren. Beim Programmieren muss man jedoch sehr gut beim Verwenden von globalen Variablen und auf Speicherlecks aufpassen.

No Comments Posted in Programmiersprachen, Sysadmin, Uncategorized
Tagged , , , , ,
Manuel: Batch-Download von RapidShare (mit PremiumAccount)

Hat man einen RapidShare-Premium Account kann man eine Liste von Daten sehr einfach im Batch Verfahren downloaden lassen, ohne dafür irgendwelche Third-Party-Tools zu benötigen.

Rapidshare nutzt zur Authentifizierung ein Cookie mit verschlüsseltem String. Der einfachste Weg, um es heraus zu finden ist, sich einmal auf der Website einzuloggen und dann seine eigenen Cookies nach “rapidshare.com” zu durchsuchen. Der Cookie-Name ist “enc” und der Wert irgendein langer Hex-String. Die RapidShare-Links piped ihr durch das folgende Kommando:

... | sed "s/^/wget --no-cookies --header \"Cookie: enc=$COOKIE_STRING\" /" | perl -ne 'chomp; m/.*\/(.*)/; print qq/$_?directstart=1 -O $1\n/;'

Als Ausgabe bekommt ihr eine ganze Latte von wget Kommandos, die ihr entweder direkt in eine Shell oder aber in ein anderes Programm, z.B. parallel, pipen könnt.

No Comments Posted in Bash, Linux, Perl, Uncategorized
Tagged , ,
Manuel: Veranstaltungshinweis

Nätter durch Gebrätter

No Comments Posted in Freizeit, Uncategorized
Manuel: Parallel

Möchte man eine Reihe von Befehlen ausführen, die jeweils eine komplexe Berechnung durchführen und nicht voneinander abhängig sind (z.B. das Konvertieren von großen Bildern), lohnt es sich über Parallelisierung nach zu denken. Allerdings sind die zu Grunde liegenden Anwendungen oft nicht parallelisiert (z.B. ImageMagick’s convert). Alle Prozesse parallel zu starten ist meist auch keine gute Idee, da das einer fork-bomb gleich kommen würde.

Ausgehend von einem Bash-Skript, welches die Befehle enthält, kann man jedoch das Tool parallel nutzten welches immer eine definierte Menge von Jobs parallel laufen lässt:

manuel@lola:/tmp$ parallel << EOF
perl -e 'sub f { my $i = shift; return 1 if $i < 1; return f($i-1) + f($i-2); }; f(100)'
perl -e 'sub f { my $i = shift; return 1 if $i < 1; return f($i-1) + f($i-2); }; f(100)'
EOF

Neben der Standard-Eingabe liest das Programm aber auch Dateien. Ziel für die Weiter-Entwicklung ist es ein dropin-replacement für xargs zu schaffen. Auf jeden Fall ein klasse Tool, welches einem eine Menge Arbeit oder Zeit sparen kann!

1 Comment Posted in Bash, Linux, Perl, Sysadmin, Uncategorized
Tagged