Software

netcat ist nicht gleich netcat

Posted in Software on August 17th, 2010 by Patrick – 3 Comments

Wie ich soeben feststellen musste ist netcat nicht unbedingt gleich netcat. So unterscheidet man zwischen GNU Netcat und OpenBSD Netcat.

Doch wenn man das nicht weiss, kommt es wie folgt heraus:

Ich wusste, dass sich mittels der Option -e in Netcat nach erfolgreichem Verbinden sogleich ein Script ausführen lässt.
Doch auf mir unerklärliche Art und Weise wollte mein netcat aus den Paketquellen einfach keine Option -e kennen!
Beim googeln dann bin ich über GNU Netcat gestossen. Jedoch war dies nur Version 0.7.1.1 und ich hatte aus den Paketquellen Version 1.84 installiert. Dass es nicht das selbe Tool ist, war mir zu der Zeit immer noch nicht bewusst, wodurch ich zuerst weitersuchte.
Die Lösung fand ich schlussendlich, ja man glaubt es kaum, auf Wikipedia :D Da wurde ich erstmals damit konfrontiert, dass netcat eben doch nicht unbedingt gleich netcat ist.

Wer also ein ähnliches Problem hat, der soll doch einfach mal GNU Netcat ausprobieren:

Paketieren unter Linux

Posted in Fedora, Software on Juni 4th, 2010 by Patrick – 2 Comments

Vorgestern und heute konnte ich mein erstes rpm-Paket erstellen. Da ich so was noch nie gemacht hatte, war es für mich eine gewisse Herausforderung.
Das Ergebnis sollte ein RPM-Paket sein, welches beim Installieren eine Ordnerstruktur anlegt, Files kopiert und danach ein Script ausführt. Beim Deinstallieren soll zuerst ein Script ausgeführt werden und dann die Kopierten Files wieder gelöscht werden.

Für jemand, der das schon ein paar mal gemacht hat, mag das einfach klingen, ich weiss – für mich war es aber alles andere als das ;)

Jedoch, da ich auch schon mal für Windows paketiert habe, kann ich auch gleich einen Vergleich anstellen: Es ist viel unkomplizierter und einfacher unter Linux, wenn das SPEC-File mal steht… wenn :)

Doch nun zum Vorgehen!
Der Kern des Paketieren stellt das Programm rpmbuild und eine selbst erstellte SPEC-Datei dar.
Die SPEC-Datei kann man dabei wie eine Art Anleitung ansehen, wo aufgeschrieben wird, wann was getan werden soll. Anhand dieser Anleitung erstellt rpmbuild dann ein Paket.

Die allgemeine Funktionsweise habe ich mir aus dem Internet angeeignet. Besonders geholfen dabei hat mir diese Anleitung.

Das Problem aber, all diese Anleitungen basieren darauf, dass der Source aus dem Internet nachgeladen wird. Mein Paket musste aber alle Dateien lokal zur Verfügung haben.

Nun die erste Herausforderung: Wie mach ich das?
Nach viel probieren und testen hatte ich endlich eine Lösung… Unter dem Punkt %files werden die Dateien so aufgelistet, wie sie danach beim Zielsystem kopiert werden:

1
2
3
4
5
6
%files
/opt/itc/bin/soe-rootadd
/opt/itc/bin/soe-updatepubkeys
/opt/itc/prepost/install_post.sh
/opt/itc/prepost/remove_post.sh
/opt/itc/.sshsoe_id

Während dem Erstellen des Paketes mussten die Dateien aber im Ordner ~/rpmbuild/BUILDROOT/Paketname/opt/itc/../ liegen, damit es korrekt in das RPM integriert wird.

Die zweite Herausforderung war das Script: Unter %pre, wo ich auch alle Ordner erstellen liess, konnte ich das Script nicht starten, da zuerst %pre und danach erst %files abgearbeitet wird, wodurch das Script beim Starten noch gar nicht an seinem Platz ist.
Also habe ich es kurzerhand unter %install abgelegt. Doch aus welchem Grund auch immer – da wurde es nie gestartet…
Darauf habe ich ohne noch lange weiterzuprobieren, das Script unter %post abgelegt, welcher nach der Installation abgearbeitet wird.

Das die Dateien dann beim Deinstallieren wieder gelöscht werden, war ein kleines Problem. Einfach alles unter %preun eintragen und gut ist.

Mein SPEC-File sah am Schluss so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
...
%pre
mkdir -p /opt/itc/bin/
mkdir -p /opt/itc/ssh/pubkeys/
mkdir -p /opt/itc/prepost/
 
%post
/opt/itc/bin/install_post.sh
 
%preun
/opt/itc/bin/remove_post.sh
rm -f /opt/itc/bin/soe-rootadd
rm -f /opt/itc/bin/soe-updatepubkeys
rm -f /opt/itc/bin/install_post.sh
rm -f /opt/itc/bin/remove_post.sh
rm -f /opt/itc/.sshsoe_id
 
%prep
%build
%install
%clean
rm -rf $RPM_BUILD_ROOT
 
%files
/opt/itc/bin/soe-rootadd
/opt/itc/bin/soe-updatepubkeys
/opt/itc/prepost/install_post.sh
/opt/itc/prepost/remove_post.sh
/opt/itc/.sshsoe_id

Beim erstellen des Paketes zeigt sich dann die Stärke von Linux. Auf dem 32Bit System, welches ich zur Erstellung verwendet habe, habe ich ohne Probleme mit dem Parameter –target x86_64 ein Paket für 64Bit Systeme erstellt.
Das Begeistert mich deshalb so, denn unter Windows konnte ich auf einem 32Bit-Host auch nur ein Paket für dessen Architektur machen.
Und da ich schon damit gerechnet hatte, für jede Architektur ein eigenes Hostsystem aufzusetzen, war ich umso erfreuter :)

Kampf mit dem Citrix Receiver

Posted in Citrix, Fedora on Februar 5th, 2010 by Patrick – Kommentare deaktiviert

Um auf ein paar unserer Server zugreifen zu können, musste ich heute auf meinem Fedora 12 den Citrix Receiver installieren.
Am Anfang war ich noch glücklich darüber, dass ich die Installation nicht unter Debian / Ubuntu durchführen musste, da es schon fertige RPM-Pakete von Citrix gibt für Fedora.

Frisch fröhlich habe ich mit der Installation des Paketes begonnen:

1
rpm -i ICAClient-11.0-1.i386.rpm

Dummerweise besteht ein Abhängigkeitsproblem, also gleich mal yum durchrennen lassen:

2
yum install ICAClient-11.0-1.i386.rpm

Doch dummerweise findet auch yum das benötigte Paket libXm.so.3 nicht…

Nach ein bisschen googeln habe ich dann herausgefunden, dass man unbedingt openmotif installieren muss. Doch auch das scheint nirgends in den Paketquellen vorhanden zu sein??
Also lade ich mir das Paket halt manuell herunter und installiere es:

3
yum localinstall --nogpgcheck openmotif-2.3.1-1.RHEL3.0.i386.rpm

Soweit so gut, also gleich nochmal versucht den Receiver zu installieren.

Doch noch immer scheint libXm.so.3 nicht vorhanden zu sein… Nach weiterer Suchzeit auf Google habe ich noch ein weiteres benötigtes Paket gefunden:

4
yum install libXaw

Doch damit wurde libXm.so.6 und nicht wie benötigt libXm.so.3 installiert. Also muss man noch ein bisschen bescheissen:

5
ln -s /usr/lib/libXm.so.6 /usr/lib/libXm.so.3

Auch bin ich oft über die Aussage gestolpert, dass möglichweise ein paar Fonts rumzicken könnten:

6
7
8
cd /usr/share/fonts/cjkuni-uming/
mv fonts.dir fonts.dir.disabled
mv fonts.scale fonts.scale.disabled

und dann war es endlich soweit:

9
yum install ICAClient-11.0-1.i386.rpm

Jetzt konnte ich den Receiver endlich installieren.
Doch damit noch nicht genug, man sollte die Applikation ja auch starten können… Und genau daran haperte es noch!
Als Ausgabe erhielt ich immer:

10
/usr/lib/ICAClient/wfcmgr: Zeile 197: Vereinbarung: Kommando nicht gefunden.

Doch nach ein bisschen Überlegen und Nachdenken war das ein kleineres Problem. Denn wenn man den Fehler so liest, so habe ich gleich an ein Problem mit der Eula gedacht. Also mal recherchieren, wie man das Anzeigen der Lizenz umgehen kann ;)

11
touch ~/.ICAClient/.eula_accepted

Und von nun an kann ich auch unter Fedora alle Citrix Applikationen gebrauchen:

12
/usr/lib/ICAClient/wfcmgr -icaroot /usr/lib/ICAClient

Xymon konfiguration

Posted in Linux, Monitoring, Xymon on Dezember 30th, 2009 by Patrick – 2 Comments

Vor einiger Zeit habe ich über die Installation von Xymon geschrieben. Heute will ich ein paar Worte zu der eigentlich sehr simplen Konfiguration verlieren.

Alle zu überwachenden Servern und Netzwerkkomponenten werden in der Datei /etc/hobbit/bb-hosts eingetragen.

Ein Eintrag ist dabei immer gleich aufgebaut:

1
172.16.10.2		voodoo.hswn.dk		# ssh ntp dns bbd apache

Zuerst steht die IP, welche zum überwachen verwendet wird.
Danach folgt der Name, unter welchem alle Stati auf der Seite schlussendlich aufgeführt werden.
Am Schluss, entgegen jeder Logik, stehen auskommentiert die zu überwachenden Funktionen und Dienste.
Im Falle unseres Beispieles sieht das wie folgt aus:

Nun kann man mit Xymon die gängigsten Funktionen und Services überwachen. Jeder Service, den man überwachen will, muss wie obig schon aufgeführt, nach der Raute eingetragen werden.

Die gebräuchlichsten Funktionen sind dabei die folgenden:

1
2
3
4
5
6
7
8
9
10
11
12
13
ssh:		Überwacht den SSH Zugriff
ntp:		Überwacht das NTP (Network Time Protokoll)
dns:		Überwacht DNS Funktionen des Servers
bbd:		Überwacht den Xymon Daemon
apache:		Überwacht die Apacheserver-Funktionen
dialup:		Überwacht den Dialup Zugriff
noconn:		Deaktiviert die Überwachung per Ping
smtp:		Überwacht die SMTP Funktion eines Mailservers
pop3:		Überwacht die POP3 Funktion eines Mailservers
imap:		Überwacht die IMAP Funktion eines Mailservers
clamd:		Überwacht den ClamAV-Daemon
dnsreg:		Überwacht den DNS Eintrag auf dessen Gültigkeit
[URL]:		Überwacht den HTTP(S) Zugriff auf die angegebene URL

Alle bisherigen Einstellungen haben sich mit den Funktionen, welche man überwachen will beschäftigt.
Besonders in geschäftlicher Umgebung, wo man sehr viele Server hat, ist es interessant, dass man auch den Look & Feel des Webinterfaces mitbestimmen kann.

So kann man seine gesamte zu überwachenden Komponenten in Server und Services unterteilen:

1
2
3
4
5
6
page servers Systems
172.16.10.2		voodoo.hswn.dk		# ssh ntp dns bbd apache
[weitere....]
page services Services
172.16.10.2		mail.hswn.dk		# smtp pop3 imap clamd
[weitere...]

Dies hat zur folge, dass man beim Aufrufen des Webinterfaces nicht von hunderten von Servern erschlagen wird, sondern das man zwei Punkte ‘Systems’ und ‘Services’ zur Auswahl hat:

Da die Seite Services wirklich nur für Services gedacht ist, fehlen da auch Überwachungspunkte wie CPU, Disk etc. Diese werden in der Kategorie Servers automatisch zugefügt, und überwachen z.B. die Auslastung der CPU oder freien Speicher der Festplatte.
Dies ist nicht etwa ein Bug, sondern tun bei der Überwachung eines Service einfach nichts zur Sache und wurden absichtlich weggelassen.

Zur weiteren Strukturierung kann man nun auch noch Server und Services innerhalb einer Seite weiter zusammenfassen und gruppieren:

1
2
3
4
5
6
group-compress <font size="+1">Mail</font>
172.16.10.2		mail.hswn.dk		# smtp pop3 imap clamd
[weitere...]
group-compress <font size="+1">Web</font>
172.16.10.2		www.hswn.dk		# http://www.hswn.dk/ apache
[weitere...]

Dies wiederum zeigt sich im Webinterface wiefolgt:

So nun eine komplette Konfigurationsdatei kann etwa so aussehen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Master configuration file for Hobbit
#
# This file defines several things:
#
# 1) By adding hosts to this file, you define hosts that are monitored by Hobbit
# 2) By adding "page", "subpage", "group" definitions, you define the layout
#    of the Hobbit webpages, and how hosts are divided among the various webpages 
#    that Hobbit generates.
# 3) Several other definitions can be done for each host, see the bb-hosts(5)
#    man-page.
#
# You need to define at least the Hobbit server itself here.
 
0.0.0.0			.default.		# bbd
 
page servers Systems
group-compress <font size="+1">Servers</font>
172.16.10.2     	voodoo.hswn.dk		# ssh ntp dns bbd apache
 
172.16.10.5		miro.hswn.dk		# ssh http://miro.hswn.dk/
 
172.16.10.4		dali.hswn.dk		# ssh dialup
 
group-compress <font size="+1">Test systems</font>
0.0.0.0			osiris.hswn.dk		# dialup
0.0.0.0			localhost		# ssh
 
page services Services
group-compress <font size="+1">Network</font>
147.29.31.155		adsl.hswn.dk		# noconn
 
group-compress <font size="+1">Mail</font>
172.16.10.2     	mail.hswn.dk		# smtp pop3 imap clamd
 
group-compress <font size="+1">Web</font>
172.16.10.2     	www.hswn.dk		# http://www.hswn.dk/ apache
172.16.10.2     	webmail.hswn.dk		# https://webmail.hswn.dk/src/login.php
 
group-compress <font size="+1">News</font>
172.16.10.2     	news.hswn.dk		# nntp
 
group <font size="+1">Domains</font>
0.0.0.0			hswn.dk			# noconn dnsreg
0.0.0.0			storner.dk		# noconn dnsreg
0.0.0.0			storner.com		# noconn dnsreg

Wie das ganze nun schlussendlich aussieht, findet man auf der offiziellen Seite von Xymon.
Auf dieser Seite findet man auch die Konfigurationsdatei, welche ich obig verwendet habe. Wer also nicht meine vereinfachte Version will, kann hier die Originale finden.