Feb 28

Ich mag Unix, hab ich das schon mal erwähnt? Alles, was auf der Kommandozeile möglich ist, kann man mit Skripten automatisieren.

Ein Thema beim Erstellen von Shell Skripten ist der Umgang mit Prozessen. Wer schon mal mit einer Unix Shell Bekanntschaft gemacht hat, wird die Befehle ps und kill kennen, mit denen man sich eine Übersicht über laufende Prozesse verschafft, bzw. sie beendet. Vielleicht ist auch bekannt, dass man mit kill -9 einem Wunsch einen Prozess zu beenden Nachdruck verleihen kann.

Was weniger bekannt sein dürfte (zumindest mir bis vor kurzem nicht) ist, dass man mit kill -0 auch feststellen kann, ob ein Prozess noch läuft. Denn mit dem Befehl kill kann man einem Prozess auch Signale schicken, zu denen auch schon das vorhin erwähnte Signal 9 gehört.

Alles was man dazu benötigt ist die Prozess ID (pid). Diese erhält man über die Shell Variable $!. In Zeile 4 des Beipiels wird sie gleich mit dem Start eines Prozesses in einer Variablen abgespeichert. In der darauf folgenden Zeile wird dieser pid dann das Signal 0 über den Befehl kill gesendet.
Findet der Kernel diese pid in seiner Prozesstabelle erhält man als Returnwert 0, wenn nicht eine 1. So muss man nicht selbst umständlich in der Prozesstabelle suchen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
 
pid=""   
./longrun.sh & pid=$!
kill -0 $pid 2>/dev/null
 
if [ $? -eq 0 ]
then
   echo "existing process $pid"
else
   echo "no process with pid: $pid"
fi
 
exit 0

Links:
Beispiele für weitere Programmiersprachen

geschrieben von gklinkmann \\ tags:

Jan 03

Eines muss ich mal an dieser Stelle festhalten. Man kann zwar nicht mit der Windows Kommandozeile richtig arbeiten, aber sie hat ein tolles tree Kommando. Tree macht genau das, was der Name sagt. Es stellt ein Verzeichnis mit seinen Dateien und Unterverzeichnissen als Baum dar. Optional kann man noch angeben wie tief dieser Baum angezeigt werden soll.

Warum dieses Kommando unter Linux und MacOs nicht vorhanden ist, ist mir schleierhaft, zumal es in der Version 8 der SuSE Linux Distribution meines Wissens noch enthalten war. Lang ist’s her. Wer den Grund weiß, möchte mich bitte in den Kommentaren erleuchten.

Doch wer auf den optionalen Parameter für die Darstellung der Verzeichnistiefe verzichten kann, dem kann geholfen werden. Eine Kombination des find und sed Kommandos versteckt in einem alias ergibt fast die gleiche Ausgabe auf der shell.

alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"

via:
macnotes.de – Baumansicht mit Tree

geschrieben von gklinkmann \\ tags: ,

Dec 01

Umlaute sollten in der heutigen Zeit eigentlich keine Probleme mehr darstellen. Eigentlich!

Denn meldet man sich über den Putty z.B auf einem Linux Server an, dessen Spracheinstellungen:

> locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

durchaus Umlaute unterstützen sollte, es aber dennoch nicht möglich ist, diese im Editor vi einzugeben, dann hat man doch ein Problem.

Schuld ist in diesem Fall aber weder der vi oder dessen größerer Bruder vim, sondern die Einstellungen vom Putty. Diese sollte man auch (über change settings -> Translation) auf UTF-8 umstellen.

Dann klappt es auch mit den Umlauten.

geschrieben von gklinkmann \\ tags:

Oct 20

Die Management Information Base (kurz: MIB) beschreibt die Informationen, die über ein Netzwerk-Management-Protokoll (zum Beispiel SNMP) abgefragt oder modifiziert werden können.

Das Simple Network Management Protocol (englisch für „einfaches Netzwerkverwaltungsprotokoll“, kurz SNMP), ist ein Netzwerkprotokoll, das von der IETF entwickelt wurde, um Netzwerkelemente (z. B. Router, Server, Switches, Drucker, Computer usw.) von einer zentralen Station aus überwachen und steuern zu können.

Quelle: Wikipedia – Artikel zu SNMP und MIB

Um Informationen über ein Netzwerkgerät zu bekommen braucht man 4 Sachen. Zum ersten die Struktur der Information (MIB), zweitens ein Protokoll um diese abfragen zu können (SNMP), drittens einen Dienst der die Informationen bereitstellt (snmpd) und natürlich ein Tool um die Abfragen auszuführen.

Auf der Kommandozeile gibt es dafür z.B. snmpget und snmpwalk (um nur mal 2 zu nennen). Doch dafür muss man die Struktur der Informationen sehr gut kennen. Viel einfacher sind da Tools mit grafischer Oberfläche, die s.g. mibbrowser. Ein mibbrowser, der auf allen Betriebssystemen läuft und zumindest in der Personal Edition frei nutzbar ist, kommt von iReasoning.

Der iReasoning mibbrowser ist selbst in Java geschrieben. Eine installierte Java Laufzeitumgebung ist also Voraussetzung für die Installation. Nach dem Start teilt sich das Fenster (wie im Bild) in 3 Bereiche auf. Links werden die MIB’s in einer Baumansicht dargestellt. In der Personal Edition können dort maximal 10 MIB’s eingebunden werden.
Darunter gibt es Detailinformationen zum ausgewählten MIB Eintrag und rechts werden die Abfrage Ergebnisse angezeigt. Für snmp tables (z.B. für interfaces) gibt es eine Extra Tabellenansicht (Strg+T), ansonsten werden alle snmp Befehle (wie auch bei den Kommandozeilen Tools) unterstützt. In den Verbindungseinstellungen kann zusätzlich die snmp Version und der Port, über den angefragt werden soll, geändert werden.

Fazit:
Obwohl ich die Kommandozeile und ihre Tools sehr mag, ist der iReasoning mibbrowser beim Anzeigen von Informationen über snmp doch sehr viel komfortabler. Die freie Personal Edition ist für mich für den täglichen Einsatz vollkommen ausreichend. Eine Gegenüberstellung der Funktionen der unterschiedlichen Editionen (Personal, Professional, Enterprise) gibt es hier.

geschrieben von gklinkmann \\ tags: , , , ,

Sep 26

Der Sommer ist definitiv vorbei. Wenn die Tage kürzer werden hat man mehr Zeit zum Lesen und so will ich meine Kategorie “weekly links” wieder aufleben lassen. Den letzten Artikel dieser Art gab es in der 18. Woche. Es ist schon erstaunlich, wie schnell doch 20 Wochen vergehen.

OpenShot Video Editor
OpenShot Video Editor ist, wie der Name schon sagt, ein freier Video Editor für Linux.
HeadLightSoft – DeTune
Normaler Weise kann man nur Musik von iTunes zum iPod bringen. DeTune ermöglicht auch den Weg in die andere Richtung.
Google Apps für deine Domain
Wer bereits Google Mail und den Google Kalender nutzt und dies mit seiner eigenen Domain verbinden möchte, sollte sich einmal Google Apps für deine Domain anschauen. Dieser Artikel hilft bei der Einrichtung.
jQuery Html5form En, Matias Mancini
Die Validierung von Formularen ist des Webworkers tägliche Arbeit. Dieses jQuery Plugin rüstet die in HTML5 eingebettete Validierung für alle Browser nach.

geschrieben von gklinkmann \\ tags: , , , ,