Freitag, 30. Dezember 2011

openSUSE Release Event

Donnerstag, 29. Dezember 2011

[GERMAN] ich muss es einfach posten

gerade schlägt diese tolle Nachricht (zum zweitenmal) in meinem Postfach auf. Beim ersten mal wurde noch versucht sich friedlich zu einigen mit
 Bitte deutsch schreiben man kann es nicht lesen

und nun, achja seht selbst



Betreff: AW: Undelivered Mail Returned to Sender
Datum: Wed, 28 Dec 2011 19:33:26 +0100

 Nicht auf englisch

-----Ursprüngliche Nachricht-----
Von: Mail Delivery System [mailto:MAILER-DAEMON@SOMEDOMAIN]
Gesendet: Mittwoch, 28. Dezember 2011 15:03
Betreff: Undelivered Mail Returned to Sender

This is the mail system at host mailSOMEDOMAIN

I'm sorry to have to inform you that your message could not be delivered to
one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can delete your own
text from the attached returned message.

                   The mail system

    SOMEOTHERDOMAIN[X.X.X.X]:25: Connection timed out

Current usage

Hi again,

its just the week between christmas and the new year. Time to do some clean up on every system and to reinstall my desktop at work, so lets talk about my usage of openSUSE

  1. Home Desktop PC
    Running openSUSE 12.1 and Windows 7, each on an own harddisk

  2. Work Notebook
    Running openSUSE 11.4 and Windows 7 both on the same disk. I reinstalled 11.3 caused by sveral problems I had and talked about in some other posts, they where still not fixed and because its my work notebook and i had some afterwork attendance to do is just reinstalled 11.3

  3. Work Desktop PC
    On tuesday i installed 12.1 on them, the old Kubuntu is gone, i'am really happy with it but nepomuk did really s*** so i disabled it, it was eating 1.1g of my ram

  4. Private virtual server 1
    it is running openSUSE 11.3 in addition to Apache, MariaDB, Wordpress, Mediawiki and it is the host :-)

  5. Private virtual server 2
    its running openSUSE 12.1 and was the testserver for the openSUSE 12.1 posts

Mittwoch, 21. Dezember 2011

Mein Lenovo Versuch #1

Nachdem openSUSE auf meinem Lenovo Thinkpad T410i nicht mehr läuft habe ich es mal mit OpenIndiana versucht.

Release Version war development 151a, das booten ging soweit ganz gut, ich musste einmal rebooten da sich die Grafik wohl etwas zerlegt hatte. Beim zweiten Versuch (bei dem ich dann auch anwesend war :-) sah es ganz gut aus, die Treiperunterstützung ging soweit.

Einziges Problem, der WiFi 1000 Intel Chipsatz wird nicht unterstützt. Dies war auch leider der O-Ton des OpenIndiana Wikis.

Schade, der Versuch stoppt an dieser Stelle, da es für ein Notebook schon schön wäre WiFi zu haben.

Mittwoch, 7. Dezember 2011

[UPDATE] Strange, someone has an idea?

Thanks a lot to

As we now found out the boot/shutdown problems where just caused by systemd so, while booting (on the grub menu) you can switch to systemV via F5 and that just worked.

So now we must talk about making systemV  default again, so just look what SUSEhelp post us via IRC

<SUSEhelp> By default, openSUSE now boots using systemd. In case of trouble, you can switch back to the old way using sysvinit by pressing the F5 key on the boot. If you want to switch to sysvinit permanently, install the sysvinit-init package. To switch back to systemd, reinstall the systemd-sysvinit package.

So as easy as it is told:
zypper in sysvinit-init

Problem: sysvinit-init-2.88+-66.58.2.x86_64 conflicts with namespace:otherproviders(sbin_init) provided by systemd-sysvinit-37-3.4.1.x86_64
Solution 1: deinstallation of systemd-sysvinit-37-3.4.1.x86_64
Solution 2: do not install sysvinit-init-2.88+-66.58.2.x86_64

Choose from above solutions by number or cancel [1/2/c] (c):

Now take solution 1, it will replace systemd

Freitag, 2. Dezember 2011

Strange, someone has an idea?

So, i told you about the minor Problems. The behaviour of my Thinkpad is still strange.

  1. Boot takes about a minuite

  2. Shutdown leads to kernel panic

  3. Parts of the system just freeze

A bit more details

  1. When booting it comes to an harddisk related issues. Directly after mounting the / partition i hangs for about 40sec before it really starts up.

  2. It was strange, the green screen of openSUSE just stood there and after some minuits i just switched them off. Yesterday i pressed the ESC button early enough to see it is running to an kernel panic. But, it is not written to disc and i only could see some last lines of the stack output

  3. When i open some software windows, for example Firefox , Kate and an java app. Sometimes i can browse the web but i cant switch to any other running app. Even the KDE Menue button does not work.
    Dmesg or syslog does not show anything.

So, maybe someone has an idea or an hint on this points?!? 

Sonntag, 27. November 2011

Upgrading my systems, Minor Problems ahead

Hey, has everybody upgraded to 12.1? Experienced some problems? For me there has been some minor problems with the switch from 11.4 to 12.1. Of course i upgraded via dvd.

First on my Thinkpad: The upgrade was just fine. No Problems. The reboot takes quite long cause it hangs on some harddisk related issues when booting, i need to take a closer look. When it has started the network connection button is just lost, but thats a real minor problem, cause you can simply add it in KDE, a bit weird is that i had to type in my root key about 6 times to add this button. Also strange is that it does not show my home network, just when disable/enable of the wifi it shows up.

On my desktop: Also the upgrade via dvd worked just fine. Only Problem that it just changed the order of my two harddisks. So i had to edit (hd0,0) to (hd1,0) at the grub menu and change it via yast. The network connection has the same problem as on the Thinkpad. What is remarkable is that firefox is slow as hell. First i thought on my internet connectivity, but konqueror works fine.

On my dev-server: Here i upgraded via zypper and yast, as shown in my blog everything was just fine. No problems since the upgrade. Yesterday the machine runs into some kernel panic which i need to take a closer look to.

But as said these are only minor Problems. I already did a reinstall of my dev-server and made some nice screenshots on the textinstall. I told you about. I had no problems with this system yet.

So have a lot of fun

Mittwoch, 23. November 2011

[Quick view:] btrfs & snapper

The real great feature in openSUSE 12.1 for me (as I am a server administrator) is btrfs & snapper. After installing the new server environment i guess its time to talk about this feature a bit in detail.

  • btrfs - Its just a new filesystem. Often spoken as Butter FS or Better FS. The development started in 2007. Now a days i guess its a good decision if you like ZFS cause it provides mostly the same features but it is GPL and it runs on Linux :-)
    Some information


  • snapper - snapper is a tool written by the SUSE guys to make btrfs snapshots and of course handle them

Lets take a closer look

openSUSE handles snapshots in two very cute ways. First of all we have timeline snapshots to take a look on the timeline config  /etc/snapper/configs/root contains the information you are looking for.

But lets take a look on what happens
snapper list

shows you the list of snapshots
Type   | #  | Pre # | Date                     | Cleanup  | Description   | Userdata
single | 0  |       |                          |          | current       |
pre    | 1  |       | Sun Nov 20 18:09:05 2011 | number   | yast firewall |
post   | 2  | 1     | Sun Nov 20 18:09:21 2011 | number   |               |
single | 3  |       | Sun Nov 20 18:15:02 2011 | timeline | timeline      |
pre    | 4  |       | Sun Nov 20 18:17:15 2011 | number   | zypp(zypper)  |
post   | 5  | 4     | Sun Nov 20 18:17:16 2011 | number   |               |
pre    | 8  |       | Sun Nov 20 18:17:54 2011 | number   | zypp(zypper)  |
post   | 9  | 8     | Sun Nov 20 18:17:55 2011 | number   |               |
pre    | 10 |       | Sun Nov 20 18:18:05 2011 | number   | yast runlevel |
post   | 11 | 10    | Sun Nov 20 18:18:22 2011 | number   |               |
pre    | 12 |       | Sun Nov 20 18:18:43 2011 | number   | zypp(zypper)  |
post   | 13 | 12    | Sun Nov 20 18:19:07 2011 | number   |               |
single | 19 |       | Mon Nov 21 00:15:01 2011 | timeline | timeline      |
single | 28 |       | Mon Nov 21 09:15:02 2011 | timeline | timeline      |
single | 29 |       | Mon Nov 21 10:15:01 2011 | timeline | timeline      |
single | 30 |       | Mon Nov 21 11:15:01 2011 | timeline | timeline      |
single | 31 |       | Mon Nov 21 12:15:01 2011 | timeline | timeline      |
single | 32 |       | Mon Nov 21 13:15:01 2011 | timeline | timeline      |
single | 33 |       | Mon Nov 21 14:15:02 2011 | timeline | timeline      |
single | 34 |       | Mon Nov 21 15:15:01 2011 | timeline | timeline      |
single | 35 |       | Mon Nov 21 16:15:01 2011 | timeline | timeline      |
single | 36 |       | Mon Nov 21 17:15:01 2011 | timeline | timeline      |
single | 37 |       | Mon Nov 21 18:15:02 2011 | timeline | timeline      |
single | 38 |       | Mon Nov 21 19:15:01 2011 | timeline | timeline      |
single | 39 |       | Mon Nov 21 20:15:02 2011 | timeline | timeline      |
single | 40 |       | Mon Nov 21 21:15:01 2011 | timeline | timeline      |
single | 41 |       | Mon Nov 21 22:15:01 2011 | timeline | timeline      |
single | 42 |       | Mon Nov 21 23:15:01 2011 | timeline | timeline      |
single | 43 |       | Tue Nov 22 00:15:01 2011 | timeline | timeline      |
single | 44 |       | Tue Nov 22 01:15:01 2011 | timeline | timeline      |
single | 45 |       | Tue Nov 22 02:15:01 2011 | timeline | timeline      |
single | 46 |       | Tue Nov 22 03:15:01 2011 | timeline | timeline      |
single | 47 |       | Tue Nov 22 04:15:02 2011 | timeline | timeline      |
single | 48 |       | Tue Nov 22 05:15:01 2011 | timeline | timeline      |
single | 49 |       | Tue Nov 22 06:15:01 2011 | timeline | timeline      |
pre    | 50 |       | Tue Nov 22 07:12:35 2011 | number   | zypp(zypper)  |
post   | 51 | 50    | Tue Nov 22 07:12:41 2011 | number   |               |
single | 52 |       | Tue Nov 22 07:15:02 2011 | timeline | timeline      |

these are the snapshots my system has done since i installed it for the former post. Here you can find the timeline snapshots which seems to run hourly.
The nicest feature is that openSUSE does snapshots before and after you do changes to the system via yast or via zypper. These snapshots like
pre    | 1  |       | Sun Nov 20 18:09:05 2011 | number   | yast firewall |
post   | 2  | 1     | Sun Nov 20 18:09:21 2011 | number   |               |

consists of two snapshots. One is taken before the change and one after these snapshot above should be the changes i made to the firewall to open the ports for ssh. but we can find out
snapper diff 1..2

--- /.snapshots/1/snapshot/etc/sysconfig/SuSEfirewall2  2011-11-20 18:05:29.957000000 +0100
+++ /.snapshots/2/snapshot/etc/sysconfig/SuSEfirewall2  2011-11-20 18:09:20.133078475 +0100
@@ -318,7 +318,7 @@
 # Example: "samba-server nfs-kernel-server"

 ## Type:       string

So, yes, i opened the firewall :-)
Now we could do a
snapper undochange 1..2 /etc/sysconfig/SuSEfirewall2

to just revert the change of the file. To gain a bit more overview on snapper you should take a look on snapper help which provides all the information you could need.


Have a lot of fun

Montag, 21. November 2011

openSUSE 12.1 - installation and features

openSUSE 12.1 is just released, to have some of the very nice features i need to setup a complete new system. So what features are the one you want to have

  • Btrfs - Btrfs is a new filesystem which make usage of B-trees so take a look at with this FS we can have a very great feature

  • snapper - snapper is a new system which comes around with openSUSE 12.1 it can handle Btrfs snapshots and gives new features to openSUSE such as restoring config files after a failure or restore failed upgrades.

So lets get started. To Install my new serversystem i use the netinstall cd. On the boot screen i do some changes.

  • use VESA textinsstall

  • use german (sorry, the screenshots will be german in most parts)

  • set network options

The first interesting point during the installation is choosing what to installthere you should go for the minimal serversystem. This includes the minimal features like openssh server and the base system.

We do this new install just for the btrfs system so the second screen which is important will be the partitions.This partition scheme is mostly the default. I am installing on an virtual server, thats why you find an qemu image there.

  • sda1 the /boot partition still needs to be ext4 because openSUSE does not actually support booting the kernel out of btrfs. This is also caused by grub.

  • sda2 is the swap partition

  • sda3 the / system will be btrfs

So, finally what will happen Now we will do the installation. On my side thats just it. There should be no further problem. The installation did just work whithout any problems. After some minuits (depending on your network connection) the machoine should perform an reboot and you should be welcome by

Thats it. Now you should do the normal stuff like starting ssh and open the firewall for the openssh server via yast.

I f you are interested on what btrfs has done to your system

Have a lot of fun

Mittwoch, 16. November 2011

OpenSuse 12.1 PREvisited [UPDATE]

The 12.1 release of OpenSuse is very close . Close enough to upgrade one of my development systems i guess and take a closer look on what comes around, here it goes

[Less than 17 hours away, so its time for the final PREvisit]

The general:

Linux johe 3.1.0-1.2-desktop #1 SMP PREEMPT Thu Nov 3 14:45:45 UTC 2011 (187dde0) x86_64 x86_64 x86_64 GNU/Linux

First one of my favourits, the

  • PostgreSQL database will be available in Version: 9.1.1-3.1.4

  • Apache will be in Version:2.2.21-3.2.2

  • php in Version: 5.3.8-4.2.1

  • perl in Version: 5.14.2-1.9

  • python in Version: 2.7.2-7.1.3

  • gcc has Version: 4.6-15.1.3

  • mariaDB in Version: 5.2.9-2.2.1

  • postfix comes around in Version: 2.8.5-3.2.1

So, a short tour guide for your flight
if you wanne upgrade to the factory, its just an easy step

  1. open yast on the console
    you will find "Software Repositories" in the menu "Software"

  2. Just disable all 11.4 repos
    and add a two new URLs

  3. Save all
    zypper up and zypper dup via console

Dienstag, 15. November 2011

MySQL migrate to MariaDB

I just thought it is the right time to do a switch. So i will switch from MySQL Community Server to MariaDB.

So first whats the difference

As you can see there is just a little difference in the version number. What does this means to us? If you need some overview on the main differences there are several knowledgebases provided by Monty

So with a bit of reading we have found out that both SQL servers should be replaceble with each other cause they are full comaptible.

so, lets get it started
first of all i saved my MySQL data
cp /var/lib/mysql/mysql/* mysql_bak/

than, the afterall easiest step
zypper in mariadb mariadb-client

it was just easy. There will show up two questions. Which will tell you that you need to deinstall MySQL in that casem so something like that
Problem: mysql-community-server-5.1.53-4.7.1.x86_64 conflicts
with namespace:otherproviders(mysql) provided by
 Solution 1: deinstallation of
 Solution 2: do not install mariadb-5.1.55-0.5.1.x86_64

So solution 1 just will work. After that you can simply restart mysql via
service mysql restart

and it just worked.

Montag, 14. November 2011

Hello to

My blog is now listed on, so for all new readers

Hello openSUSE world!

and here a short description on what you can find in this blog.
First maybe some sort of introduction to mysql. My name is Jörg Stephan and i work as a system and server administrator. My employee is a TOP 10 domain registrar with round about 3.500.000 domains in service.
I am adminsitrating the 299 debian servers and i currently setup a new service system running SUSE Enterprise Server.

In my privat server infrastruktur i am running openSUSE. And that are the topics of my blog entries. So here you can find posts about apache, webserver, databases and so on.

Have a lot of fun

Sonntag, 13. November 2011

The Packman Repo (cause of sox)

This post does not target any server specific issue. But aims on showing you another repo wich is not already placed in the official OpenSuse repository.

This is called Packman

In this repo you can find many software pakets which you maybe need. I found the repo while trying to convert some of my .ogg files to .mp3. A forum just told me that i could do it just with
sox file.ogg file.mp3

maybe it is really that easy but not with the sox from the OpenSuse repo, so i found the packman repo

In case of 11.4 just do a
sudo zypper addrepo ''

and you will be able to install pakets fom this repo
zypper refresh
zypper in sox

told me to do a
zypper install sox-14.3.2-26.5.x86_64

and now it works.
For all who have a directory full of ogg files just do
for x in *.ogg ; do sox $x `echo $x|awk -F . '{print $1 ".mp3"}'`; done

and Have a lot of fun :-)

Donnerstag, 27. Oktober 2011


I just found out that WebYaST exists. Well maybe that took a while, but here we go.

1. What is it
I guess we all knew YaST (or YaST2) for a while now. Currently I am planning to switch some business servers to SUSE Linux Enterprise, so i searched for some nice features which could make it easier to administrate the 40 virtual and hardware servers.

The answer couldn't be easier: WebYaST

WebYaST, the idea couldn't be easier, we can access our YaST via every webbrowser. Even a Android App exists.

2. Install it
Well, there is quite a long list witch packages you need to install on every single server, and it takes about 28 MB to do but okay, thats fine
zypper in webyast-software-ui webyast-status-ui webyast-status-ws
webyast-time-ui webyast-time-ws webyast-users-ui webyast-users-ws
webyast-kerberos-ui webyast-licenses-ui webyast-licenses-ws
webyast-ldap-ui webyast-reboot-ui webyast-reboot-ws webyast-roles-ui
webyast-roles-ws webyast-network-ui webyast-services-ui
webyast-services-ws webyast-firewall-ws webyast-kerberos-ws
webyast-language-ws webyast-base-ws webyast-ldap-ws webyast-mail-ws
webyast-network-ws webyast-software-ws webyast-base-ui_ws

136 new packages to install, 1 to remove.
Overall download size: 36.6 MiB. After the operation, additional 136.5 MiB will be used.

The 1 package which gets removed is caused by patterns-openSUSE-minimal_base which must be removed.
right after that we should open the firewall for this services:

  • WebYaST

  • WebYaST UI

now its time to start our services
rcyastws start
rcyastwc start

thats it, our service should no be running. There is only a short step left. If you want to use the service from an external computer you should open the firewall ports via yast.

3. Use it
The next step is maybe the easiest one. just point any browser you like to

login and use it. Be sure to use the ssl connection, it will not work with a normal http request. Login must be performed with root and the root_password.

So, Have a lot of fun


Mittwoch, 13. Juli 2011

(My OpenSUSE Project) vsftpd user managment

nachdem der FTP Server nun läuft müssen wir natürlich noch die user konfigurieren, wie das geht? Ab auf die Projektseite

User managment for FTP

After succesfully setting up an vsftp server, we should think about the usermanagment.  So we want to add a user which just has specific rights which allows ftp connection. So first, an overview on what we want to do with such an user

  • accesss webspace via ftp

and nothing more i guess.

So what to do. The first step is to use YAST :-) So we can find out the settings and maybe if we have all parameters we need, we can automate this procedure later.

Yast offers us an  Security and Users with option User and group Management. we just add a normal users and change the behaviour in the details tab.

  • Home Directory => /srv/www/vhosts/<subdomain>

  • Login Shell => /bin/false

  • Default Group => www

Some explain about this,
the home directory should just be the subdomain, so we just set this option the the fullpath /srv/www/vhosts/, with the Login Shell option we choose to not allow the login via ssh, the default group is just set to www because of the directory will be owned by www.


Montag, 11. Juli 2011

(My OpenSUSE Project) vsftpd server

Der nächste Schritt im Projekt

Einen vsftp Server aufsetzen. Mit Yast ist es ganz einfach.

FTP Server

So, whats next.

Many features of Wordpress or Typo3 for example need access to the filesystem, via an FTP Server. So lets set up one . Regarding YAST there are two truely supported by yast, so the best way is to choose one of this. So we Install
zypper in yast2-ftp-server vsftpd

Now, we can find

  1. shell> yast

  2. Network Services

  3. FTP Server

and we can customize our FTP server

There is not much to configure to get it working. One of the important things you need to do is to open the firewall as shown in Apache webserver. You should click around and set:

  1. Start-Up -> When Booting

  2. Selected Service -> vsftpd

  3. Authentication-> Authenticated User Only

  4. Uploading -> Enable Upload

Freitag, 8. Juli 2011

T-Mobile Geschwindigkeit

Ich bin ja  im Besitz eines Nokia N97 mini. Nun habe ich mir JoikuSpot zugelegt damit ich auch bequem von überall auf der Welt online gehen kann und Dinge tun die ein Admin halt tun muss.
In diesem Zusammenhang habe ich natürlich mal die Geschwindigkeit testen müssen, die obige Statistik ist also das Zusammenspiel von

Donnerstag, 7. Juli 2011

(My OpenSUSE Project) Apache Webserver

Die erste Hürde ist genommen!
OpenSUSE und Apache arbeiten nun zusammen, vhosts funktionieren und an der automatisierung habe ich auch gearbeitet.

Die Anleitung unter:

Apache Server

So, finally it works,

I just setup the Apachewebserver on this server. There was a little difficulty in getting the vhosts to work. So here is the HowTo in 4 Steps


We need to install the software first
zypper in apache2 php5 apache2-mod_php5

Step2 (Open firewall)

OpenSUSE has an firewall, it is enabled by default an d blocks all incoming connections. So we need to open the http/https ports to get an working apache

  1. shell> yast

  2. goto Security and Users and open Firewall

  3. goto Allowed Services

  4. add HTTP Server and HTTPS Server

  5. Next and Finish

Step3 (Changes in /etc/apache2/httpd.conf)

Here you should add a line
NameVirtualHost *:80

this will enable the vhost feature, so you can have many apache vhosts listen on the same server.

Step4 (Changes to autogenerate vhosts)

So, now just before i setup my first vhost i worked on a little script which will make it easier to generate vhost, first of all i generated an vhost_cur_template file in /etc/apache2/vhosts.d/
<VirtualHost *:80>
ServerName __SERVERNAME__
DocumentRoot /srv/www/vhosts/__SERVERNAME__
ErrorLog /var/log/apache2/__SERVERNAME__-error_log
CustomLog /var/log/apache2/__SERVERNAME__-access_log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
ScriptAlias /cgi-bin/ "/srv/www/vhosts/__SERVERNAME__/cgi-bin/"
<Directory "/srv/www/vhosts/__SERVERNAME__/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
<Directory "/srv/www/vhosts/__SERVERNAME__">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

Then i wrote a little shell script to produce new vhosts
# exec: sh
mkdir -p /srv/www/vhosts/$1/cgi-bin/
sed "s/__SERVERNAME__/$1/g" /etc/apache2/vhosts.d/vhost_curr.template > /etc/apache2/vhosts.d/$1.conf
service apache2 reload

so, now you can gerate a new vhost just by sh for example

Mittwoch, 6. Juli 2011

(OpenSUSE) Discountinued Versions

Einer der vielen Gründe warum ich Hosteurope so mag ist das sie einen FTP Server haben mit alten SUSE versionen

So findet man SuSE 7.3 bis 10.0 zum Beispiel unter

Dienstag, 5. Juli 2011

(IPv6) mal beachten

Der World IPv6 Tag ist ja vorbei. Das haben viele schon gemerkt. Schade ist nur das ein paar Seiten noch immer einen AAAA Record, antworten aber auf diesem nicht.
Das führt natürlich dazu das die IPv6 Anfrage erstmal ins timeout muss bevor es mit IPv4 weitergeht.

Also mal jeder bei sich kucken :-)

Montag, 4. Juli 2011

(OpenSUSE) neues Projekt

Ich starte dann mal ein neues Projekt.

Nachdem ja nun NOVELL komplett an Attachmete gegagngen ist und die nun SUSE wieder aufleben bzw,. wieder eigenständig machen wollen Vergleiche.
Hoffe ich ja das es dann auch wieder eine schöne freie OpenSUSE Server geben wird. Aus diesem Grund und da ich SUSE auf Servern mal wieder testen muss

Dienstag, 28. Juni 2011

(OpenEMM) Init Script

Ich beschäftige mich ja relativ viel mit OpenEMM mittlerweile habe ich die Installation sogar im Griff :-)
Das einzige was mir zu meinem Glück fehlt ist ein Initscript so wie das hier

# Openemm INIT Startup
# Author: Jörg Stephan <>
# Stand: 06. Sep 2010 DEBIAN

# Provides:
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.

test -f /home/openemm/bin/ || exit 0

. /lib/lsb/init-functions

case "$1" in
start)  echo "Starting Openemm"
        su - openemm -c "/home/openemm/bin/ start"
        chmod 0644 /var/log/maillog
        log_end_msg $?
stop)   echo "Stopping Openemm"
        su - openemm -c "/home/openemm/bin/ stop"
        log_end_msg $?
restart) log_daemon_msg "Restarting Openemm"
        su - openemm -c "/home/openemm/bin/ stop"
        su - openemm -c "/home/openemm/bin/ start"
        chmod 0644 /var/log/maillog
         log_end_msg $?
*)      log_action_msg "Usage: /etc/init.d/ {start|stop|restart}"
        exit 2
exit 0

Montag, 27. Juni 2011

(Ubuntu) von Ubuntu -> Kubuntu

Ich denke ich habe ja schon gesagt wie sehr mir das neue Ubuntu grafisch so gefällt, also gar nicht.
Daher habe ich beschlossen das ich auf Kubuntu wechsele, da dieser Wechsel nach ein paar kleinen Problemen gerade geklappt hat will ich euch den Weg ja nicht vorenthalten.
  1. synaptic starten: mittels Synaptic (ein grafisches Frontend zu apt) kann man Pakete im System installieren
  2. suchen nach kubuntu-full
  3. vormerken zur Installation und Anwenden
  4. Reboot
Und schon hat man ein kubuntu. Eigentlich sollte es auch über das Paket kubuntu-desktop möglich sein, leider verlief dies eher schlecht und ich musste doch das full auswählen. Die Nachinstallation umfasst dann ca 1200 Pakete.

Freitag, 10. Juni 2011

(OpenIndiana) [Apache/PHP/MySQL] Mit OpenIndiana was tun (aka man bin ich blöd)

Also, ja ich bin blöd.
Gebe ich an dieser Stelle gerne zu. Ich wollte mich etwas mit OpenIndiana beschäftigen und stand da wie der Ochse vor dem Berg, aber da es schließlich ganz einfach war....

Apache + PHP + MySQL

1. Die Software zusammen suchen die wir nun brauchen werden:
pkg search apache
hiermit stellen wir fest das unser gesuchtes Paket ungefähr so aussehen sollte:  pkg:/web/server/apache-22
pkg search apache | grep php
 zeigt uns das PHP Modul das wir brauchen:  pkg:/web/server/apache-22/module/apache-php5
pkg search mysql
 auch hier finden wir das gewünschte Paket als: pkg:/database/mysql-51

2. Nun müssen wir das ganze auch installieren, dies ist nach dem Wissen von oben genau so einfach.
  • pkg install pkg:/web/server/apache-22
  • pkg install pkg:/web/server/apache-22/module/apache-php5
  • pkg install pkg:/database/mysql-51
 die Apache configs finden wir dann unter /etc/apache2/2.2
nun müssen wir die Services natürlich noch enablen und durch starten
  • svcadm enable apache22
  • svcadm enable mysql
  • svcadm restart apache22
  • svcadm restart mysql

Donnerstag, 9. Juni 2011

(OpenIndiana) Netzwerk starten (und ssh)

Ich habe heute ein neues Testsystem mit Openindiana eingerichtet. Direkt stieß ich auf die ersten Probleme, das Netzwerk. Also was tun?

  •  dladm show-link
rtls0       phys      1500   unknown  --         --
nun kennen wir zumindest den Namen der Netzwerkkarte, hier eine rtls0
Als nächstes schalten wir nwam aus

  • svcadm disable network/physical:nwam

und default ein
  • svcadm enable network/physical:default

  • ifconfig e1000g0 plumb

aktiviert die Netzwerkkarte im Kernel dann auch wieder
schließlich noch ein paar Anpassungen

  • echo > /etc/hostname.rtls0
 um die IP Adresse festzulegen
  • svcadm restart network/physical:default
um die IP Adresse zu aktivieren, bzw die Schnittstelle neu zu starten
  • route add default
eine default route setzen
  • mv /etc/nsswitch.dns /etc/nsswitch.conf
die nsswitch configuration für dns bereit machen
  • echo 'nameserver' > etc/resolv.conf 
den Nameserver (hier google) setzen 

wenn man dann jetzt noch ein SSH haben möchte sollte man
  • svcadm enable ssh
  • svcadm restart ssh

Welches OS?

Die Frage stellt sich ja ab und an mal. Man überlegt sich was man wie und wo einsetzen will und kann. Dann treffen zumeist Ideen, die Frage der Bedienbarkeit und natürlich schon fast religiöse Gründe aufeinander.

Wie ich mir diese Frage, heute, beantworte? Tja...

Desktop System
  • Linux/Unix oder Windows oder Beides?
Das ist ja heutzutage ganz einfach, ich nehme beides. Warum? ich bin ein Nerd (darf man das von sich sagen?) mit einer Freundin. Das ist noch nichts schlimmes. Aber die Freundin will das der Drucker geht (!!!!!). Und der Epson Stylus SX 125 den sie mir sogar Geschenkt hat, war zwar zum drucken zu bewegen, aber der Scanner....
Also teilen sich ein Linux und ein Windows 7 (Lizensiert!) meinen Rechner zu hause.
Dank EMC teilen sie sich auch eine Festplatte in meinem Notebook. Den wer hat ein Verwaltungstool das nur unter Windows so richtig funzt? genau, EMC.

Die eher schwierige Frage ist, welches Linux benutzt man den. Hier kommt die Religion ins Spiel glaube ich (Kommt auf die Wortwitzliste :-) Man kann ja verschiedenen Götter huldigen, ja soll man nicht, aber manchmal verkacken es die alten Götter ja auch mal. (ich bin Christlich erzogen!)

Der Hut-Gott zB und sein Hut-Sohn. Ich war echt begeistert, bis ein Kernelupdate kam und sie es schafften zwar den Kernel neu zu machen, aber den Nvidia Treiber erst ne Woche später zu bringen. Und das taten sie oft.
Der Gott der alt afrikanischen Gemeinschaft. Eigentlich schon nett. Aber echt. Das neue Gewand in das es sich kleidet ist Müll.
Vielleicht der lokale Christkindl-Markt Gott. Er schafft es immer wieder mich zu begeistern. Bzw, ich schaue es mir immer wieder mal gerne an :-)

Server Systeme

  • Linux/Unix oder Windows?
Naja, die Frage stellt sich ja nur Teilweise.  Da ich mir keinen Windows Server leisten kann fällt die Option flach. Nee, ich würde es auch nedd wollen!!
Aber was benutzt man den nun?

  1. OpenSolaris/OpenIndiana: Finde ich echt super Toll. Ich muss mich leider mehr damit beschäftigen um es nutzen zu können. Die Syntax Unterschiede sindin meinen Augen doch extrem
  2. Die RedHat-Clone vor allem Centos: Kommt wohl am nächsten an ein Enterprise Linux heran. Leider ist das Original zu teuer. Und Centos wird nur von ein paar Entwicklern getragen, bei denen es all zu oft auf die Tagesform ankommt. Dafür haben sie aber auch verdammt helle Köpfe in ihren Reihen.
  3. Debian/Ubuntu: Läuft beides Erfahrungsgemäß sehr stabil. Leider muss ich zugeben erst nach einer Weile. Manchmal wäre ich froh ich hätte alles auf Lenny gelassen da man sich mit dem Upgrade aus Squeeze alle Probleme gefangen hat die man bei anderen Distris auch findet.
  4. Opensuse: Zur Zeit spiele ich damit (mal wieder) herum und setze es auf zwei Servern ein. Ich mag die Vorzüge von Yast auf der Konsole. Auch sehe ich zypper weit vor yum oder aptitude, was aber schon an den Kürzeln liegen kann :-) also zypper se paket VS. apt-cache search paket
  5. FreeBSD: Mag ich sehr, vorallem weil es klein und schnell ist. Es kommt zur Zeit auf meinem Router zum Einsatz. Dieser ist ein altes PIII Notebook und wäre Ram technisch zu klein für ein neues Linux.
So, das ist dann mal meine Meinung dazu, wie ist eure?

Mittwoch, 8. Juni 2011

(OpenIndiana) Upgrade 148 to 151

Okay, ich gebe es zu, ich poste das hier nur weil ich mir heute Morgen den Wolf gesucht habe

pkg image-update --be-name OI151 --require-new-be

Dienstag, 7. Juni 2011

(Keepalived) Loadbalancer für Nameserver

Es soll ja vorkommen das komische Menschen wie ich einer bin, einmal ausprobieren möchten wie man einen Nameserver per keepalived ansprechen kann.
Gründe hierfür sind dann zB die Lastverteilung auf zwei Nameserver, oder natürlich die hochverfügbarkeit eines Nameservers. 

hier die Übersicht

keepalived Eintrag

virtual_server 53 {
    delay_loop 10
    lb_algo wlc
    lb_kind DR
    protocol TCP

 # ns1
    real_server 53 {
        weight 100
          MISC_CHECK {


    # ns2
    real_server 53 {
        weight 100
          MISC_CHECK {

Der zugehörige misc_check könnte dann so aussehen


if [ `dig +time=1 @$1 | grep -c` -eq 1 ]; then
                exit 0
            exit 1

Known issues
  1. Auf dem Zielserver hinter dem Loadbalancer muss ein dummy0 Interface vorhanden sein welches die IP vom Virtualserver hat
  2. Da wir ein Problem bei UDP haben, müssen wir noch eine Zeile bein powerdns setzen, der pdns darf nur auf die beiden IP Adressen des Realservers und des Virtualservers hören, Andernfalls "verfliegen" sich die Pakete, also

    Mittwoch, 25. Mai 2011

    (Nagios) SMS senden via

    Ich hätte da mal wieder eine Howto von gestern

    Auf dieser Seite:

    es kann ja mal vorkommen das es wichtige Ereignisse in der Infrastruktur gibt welche uns zwar von Nagios gemeldet werden aber wir sind im Wochenende oder ähnliches. Handelt es sich hierbei Aber zb um das Mailgate oder die Klimaanlange interessiert es uns ja bestimmt doch.

    Einfache Lösung!?! Einfach per sms benachrichtigen.

    Mit einem Anbieter wie geht es hierbei wohl am einfachsten. Aber der Reihe nach.

    Schritt 1

    Einen Kontakt anlegen.
    Hierzu legt man eine datei contacts.cfg an und in dieser einen Kontakt. Der Einfachheit halber und damit man Kontakte unterscheiden kann lege ich zu jedem User der eine SMS bekommen will in der Datei contacts-sms.cfg einen sms Kontakt an.

    define contact{
    contact_name Testuser-sms
    alias Ein test user
    service_notification_period 24x7
    host_notification_period 24x7
    service_notification_options u,c,r
    host_notification_options d,u,r
    service_notification_commands notify-by-sms
    host_notification_commands host-notify-by-sms
    pager 49123456789

    Für üns interessant ist hierbei die Angabe Pager, hier lässt sich nun eine Handynummer eintragen.
    Wichtig! ist auch das der Eintrag der notification richtig gesetzt ist.

    Schritt 2

    Ein Befehlsskript findet man unter welches ich in python geschrieben habe. Nun muss man diesen Befehl noch in Nagios anlegen.
    Eine Datei misccommands.cfg enthält das script

    define command{
    command_name    notify-by-sms

    Somit ist nun möglich das ganze Abzuschicken.

    Schritt 3

    Nun müssen wir noch einmal alles verheiraten. Hierzu habe ich in der Datei contactgroups.cfg Eine Gruppe für die neuen sms Kontakte angelegt. Nun wird bei jedem Service, die notification auf unserer sms gruppe gesetzt. Hier die linux-admins-sms

    define service{
    host_name linux-server
    service_description check-disk-sda1
    check_command check-disk!/dev/sda1
    max_check_attempts 5
    normal_check_interval 5
    retry_check_interval 3
    check_period 24x7
    notification_interval 30
    notification_period 24x7
    notification_options w,c,r
    contact_groups linux-admins-sms

    Und das War es auch schon!

    Skript Nachtrag

    damit mein Python Skript auch richtig funktioniert gibt es ein paar Sachen zu beachten.

    1. 1 Die Konfiguration bzgl der Zugangsdaten findet im Skript statt, also einfach Ihre Accountemail nehmen und dann die Daten einfügen.

    1. 2 Es gibt eine log Datei. Diese muss aber von Hand angelegt und frei gegeben werden. Natürlich ist der Pfad der Datei auch im Quelltext editierbar. Per default sollten sie so vorgehen

    echo '' > /var/log/sendsms4.log

    chmod 777 /var/log/sendsms4.log

    Mittwoch, 18. Mai 2011

    Ubuntu 11.04 TEIL 2

    11.04, alles ist anders!

    Verwirrt, Verwirrt, Verwirrt. Ist wohl die eigentliche Aussage die ich treffen muss. Nichts ist beim alten. Ich vermisse gerade die einfachsten Features und kann sie irgendwie nicht finden, vielleicht muss ich auch weiter suchen.

    Also, es gefällt mir nicht. Ich denke für ein Netbook oder eine "TippStation" ist es ein richtig schönes und buntes System das Freude macht, aber...


    • ich habe keinen sinvollen Umschater zwischen Anwendungen, ich muss alles über dieses Bunte etwas an der Seite tun, wobei ich das "Welches Fenster zeige ich an"-System noch nicht verstanden habe
    • Ich muss wenn ich ein Programm starten will mich entweder lange durch PopUp Menüs klicken, oder gleich den Namen tippen
    • Der Arbeitsflächenumschalter ist mir zu langsam. Vielleicht macht es mit einer riesigen Grafikkarte Sinn das man animiert zuerst zu einer Gesamtenübersicht wechselt, mir bringt es nix.
    • Kann man keinen Schnellstartbutton in die Taskleiste machen? Oder kann das nur ich nicht?
    Und finally:
    • mein Nagstamon geht nicht mehr!

    Dienstag, 17. Mai 2011

    (vmware) Was man nicht tun sollte / Was man dann danach machen sollte

    ich habe da mal noch einen alten blog Eintrag gefunden, den man vielelicht mal brauchen kann :-)

    Ich hatte kürzlich das Problem das eine virtuelle Festplatte unter VMWare voll war. Dies ist auch unter VMWare Server eigentlich keine grosse Sache. Also auf die console eingeloggt und los ging es:

     vmware-vdiskmanager -x 64GB /var/opt/vm/vm1/vm1-001-0.vmdk

    Ohne meckern oder murren vergrösserte der vdiskmanager dann auch die gewünschte Festplatte. Beim neustart des Systems gab es dann aber eine böse überraschung. Sie lief nämlich nicht mehr.
    Der Grund? ganz einfach ich hatte übersehen das es mal einen Snapshot auf dieser Platte gab und habe diesen schlicht weg ignoriert. Also im selben Ordner war auch noch ein vm1-001-0-00000001.vmdk Auf diese Zeigte auch auf diesen Snapshot. Dumm gelaufen

    The parent virtual disk has been modified since the child was created (18).

    Ich beschreibe nun kurz was man tun sollte, muss leider auch dazu sagen das es bei mir nicht so recht wollte, aber leider habe ich aus dem schon schweren Fehler durch leichtes zutun einen SuperGau gemacht.

    Also erstens: KEINE Panic

    Da sich jemand die Mühe gemacht eine Art worst-case Liste zu machen schauen wir einfach ob unser Problem in dieser Liste ist wir schauen also auf nach ob wir unsers Fehler finden. Und ja da ist er auch schon. ALso müssen wir nicht viel tun.
    1. Wir betrachten uns die disc und den Snapshot und finden einen Unterschied in der CID des Parent und im CIDParent eintrag. Diesen müssen wir ausgleichen,also schreiben wir in den CIDParent eintrag logisch den CID des Parent
    2. Desweiteren sehen wir das die RW der Einträge nicht mehr stimmt, auch hier übertragen wir die RW vom Parent auf das Child
    3. Natürlich hat der Parent nun auch mehr Einträge. Da vmware ja (normalerweise) 2GB Files anlegt, wir haben bei einer vergrösserung von 10GB also 5 Files mehr. Diese löschen wir aus der Datei und die -fxxx.vmdk files von der Festplatte
    Die Festplatte (snapshot) würde nun wieder ohne murren booten. Ich empfehle vorher noch folgendes

    vmware-vdiskmanager -r <snapshot>.vmdk -t 0 new_vmware.vmdk

    Somit kopieren wir den Snapshot, im idealfall sollte es nun auch wieder eine Disk ohne Snap sein, den man dann weiter benutzen kann.

    In meinem Fall kann ich nur abschliessend sagen: Gut wenn man ein Backup hat

    Donnerstag, 28. April 2011

    Ubuntu 11.04 TEIL 1

    Heute bin ich doch tatsächlich auf die Idee gekommen mein Ubuntu auf dem Arbeitsrechner zu upgraden. Was auch immer mich da geritten hat, so geht es:
    • sudo -i 
    um uns zur root zu machen, ich empfehle per Strg + Alt + F2 auf eine Konsole zu wechseln, sollte sich während des Upgrades etwas in der Grafik zerlegen hat man so immer noch die Möglichkeit zu sehen was das Upgrade macht
    • aptitude install do-release-upgrade
    dies installiert einen Installer der den Rest des Upgrades durchführt
    • do-release-upgrade
    das eigentliche Herzstück des Vorgehens. Dies macht dann innerhalb von einigen Stunden ein Upgrade des Systems auf die jeweils neuere/neuste. Die paar Fragen die gestellt werden lassen sich eigentlich nur mit Yes beantworten

    ... und dann hat man den Salat, dazu jedoch mehr wenn ich es ein paar Stunden getestet habe.

    Freitag, 8. April 2011

    FreeBSD: Fehler bei autoconf

    Hm, als ich gerade etwas mit Horde rumspielen wollte wurde ich von einem Fehler bezüglich der php abhängigkeiten überrascht

    autoconf: required version 2.68 not found

    eigentlich recht Merkwürdig, wenn die Lösung auch relativ einfach ist. Autoconf hat eine Art "Shellskript" den autoconf-wrapper, dieser befindet sich unter 
    • /usr/ports/devel/autoconf-wrapper
    • make deinstall && make install 
     brachte den gewünschten effekt

    Donnerstag, 7. April 2011

    FreeBSD: Ports frisch halten

    Letztens wollte ich über die ports eine neue Software installieren. Dies hatte leider nicht funktioniert, da meine ports doch schon stark veraltet waren, an dieser Stelle hilft dann nur diese zu Updaten.

    Ich bevorzuge hier die Portsnap Method (Vergleiche:FreeBSD ports )

    • portsnap fetch
    Dies läd einen Gepackten Snapshot der aktuellen Ports von einem Spiegelserver.

    Wenn es noch keinen ports Ordner gibt dann müssen wir als nächstes
    • portsnap extract
     ausführen, dies extrahiert dann den kompletten Snapshot unter /usr/port. Wurde dies schon einmal ausgeführt, dann genügt ein
    • portsnap update
    um die ports auf den aktuellen Stand zu bekommen.

    Dienstag, 22. März 2011

    Nagios Services neu checken

    So, meine 2 Wochen Urlaub sind rum. Also vielleicht auch mal wieder Zeit was zu schreiben. Heute morgen bin ich über ein altes Skript gestolpert welches für einen kleinen Post genau das Richtige zu sein scheint.

    Wir checken zB den Debian Paketstatus einmal am Tag. Kommen jetzt über Nacht ganz viele dieser Updates, so haben wir für 24 Stunden ein schönes rotes Nagios. Also macht man Updates und rechecked den Service, alleine schon wegen der Übersicht. Aber muss man das von Hand machen? Nö!

    # by j AT xadmin DOT info

    if [ -z "$1" ];
            echo "Please tell me which check to kick by usage: sh <service>"
            for host in `grep 'host_name=' /var/nagios/rw/status.dat | cut -f 2 -d "=" | sort | uniq`
                    /usr/bin/printf "[%lu] SCHEDULE_SVC_CHECK;${host};$1;1110741500\n" `date +%s` > /var/nagios/rw/nagios.cmd
    Der einfache Aufruf sh apt sorgt nun dafür das alle apt services auf jedem Server neu gechecked werden.

    Geht natürlich auch mit anderen :-)

    Was Squeeze da anscheinend ein wenig anders macht
    nagiosserver ~ # locate status.dat
    nagiosserver ~ # locate nagios.cmd
    # by j AT xadmin DOT info

    if [ -z "$1" ];
                    echo "Please tell me which check to kick by usage: sh <service>"
                    for host in `grep 'host_name=' /var/cache/nagios3/status.dat | cut -f 2 -d "=" | sort | uniq`
                    /usr/bin/printf "[%lu] SCHEDULE_SVC_CHECK;${host};$1;1110741500\n" `date +%s` > /var/lib/nagios3/rw/nagios.cmd

    Freitag, 4. März 2011

    Zend Optimizer

    Noch ein Paket gibt es in der PHP Toolbox. Den Zend_Optimizer dieser findet mittlerweile auch in Webshops Verwendung, da er verspricht das Anwendungen nun bis zu 40% schneller laufen. Also genug gründe auch seine Installation mal unter die Lupe zu nehmen.

    Nachdem man sich auf der Internetseite das Paket heruntergeladen hat

    findet man nach dem entpacken findet man unter ./data/5_2_x_comp/
    die Datei
     diese legen wir wie schon mal beim IoncubeLoader unter
    • /usr/local/
     ab und erstellen folgenden Eintrag in der php.ini
    •  zend_extension=/usr/local/
    Man sollte aber auch dran denken das der ioncubeloader immernoch Numero Uno in der php.ini sein will :-)

    Apache neu starten und geht! 

    with the ionCube PHP Loader v3.3.20, Copyright (c) 2002-2010, by ionCube Ltd., and
       with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies

    Mittwoch, 2. März 2011

    FreeBSD: Nginx installieren

    Manchmal muss man ein wenig über den Tellerrand schauen wenn man auf der Suche nach einem Webserver ist, es muss ja nicht immer Apache oder Lighttpd sein, Nginx kann dies auch...

    Nginx - Wiki -

    Die Reise beginnt wie so oft in /usr/ports/ wir finden nginx in
    • /usr/ports/www/nginx/
    • make && make install && make clean
    können wir die Sourcen kompilieren und haben kurze Zeit später (kurz als dehnbarer Begriff) schon einen Webserver, welchen wir über
    •  echo 'nginx_enable="YES"' >> /etc/rc.conf
    •  /usr/local/etc/rc.d nginx start
    starten können.
    Die Konfigdateien finden wir in /usr/local/etc/nginx
    die dortige nginx.conf enthält Grundlegende Konfigurationen, hier ein Beispiel

    worker_processes  1;
    error_log  logs/error.log;

    events {
        worker_connections  1024;

    http {
        include       mime.types;
        default_type  application/octet-stream;

        sendfile        on;
        keepalive_timeout  65;

    server {
            listen  80;
            server_name  <SERVERNAME>;

            access_log  /var/log/nginx/<SERVERNAME>/access.log;

            location / {
                root   /usr/local/www/nginx/;
                index  index.html index.htm;

            error_page   404 500 502 503 504  /50x.html;
            location = /50x.html {
                root   /usr/local/www/nginx;
      location ~ /\.ht {
                deny  all;
    Das wars auch schon... demnächst mehr zu Nginx

    Mittwoch, 23. Februar 2011

    FreeBSD: 8.2-RELEASE jetzt upgraden

    So, ich weiss ja nicht ob es schon jedem aufgefallen ist, aber das FreeBSD 8.2-RELEASE ist zum Upgrade verfügbar, ich habe es auch auf meinem ersten Server zuhause für Testzwecke versucht, während ich dem Reboot zukucke beginne ich dies hier zu schreiben... und es hat geklappt... also

    Ein Upgrade ist mittlerweile auch keine Hexerei mehr wir beginnen als root mit einem
    • freebsd-update -r 8.2-RELEASE upgrade
    Hiernach folegn dann viele Meldungen. Im groben beginnt er nun einzelne Pakete zu fetchen und die Installation vorzubereiten, es folgen ein paar Dialaoge im Stil von

    The following components of FreeBSD do not seem to be installed:
    kernel/generic world/catpages world/dict world/doc world/games
    Does this look reasonable (y/n)? y
    diese können nach bestem Wissen beantwortet werden, ein y sollte immer gehen.
    Danach fehlt uns nun  ein
    • freebsd-update install
    nun beginnt die eigentliche Installation der neuen Pakete. Wenn dies abgeschlossen ist sollte man zu Sicherheit nochmal ein
    • nextboot -k GENERIC
    ausführen und rebooten

    Montag, 21. Februar 2011

    Iptables (Schnelle Hilfe)

    Eines in meinen Augen beste und schnellste Tool wenn es um einen Schuz des eigenen Systems geht ist Iptables, die seit Kernel 2.4.x integrierte Firewall. Natürlich gibt es hierzu mehr Howtos als man alleine lesen kann. Trotzdem möchte ich die IPtables noch einmal kurz beleuchten, da ich sie im täglichen Geschäft immer mal wieder brauche.

    So habe ich in meinem Dokumenten Ordner eine Datei die nennt sich "iptables_fastuse.txt" hier befindet sich eigentlich nur eine kleine Übersicht über verschiedene Regeln die ich schonmal gebraucht habe, mit einer kleinen erläuterung was diese einegtlich tun (ich vergesse das nämlich dauernd).

    Der Erste aufruf in meiner liste

    iptables -A INPUT -s -j DROP wie sich ebstimmt vermuten lässt, erstellt diese eine Regel welche jeden reinkommenden Traffic (INPUT) von einer gewissen Adresse (-s nicht an (DROP). Hierbei steht das -A für Append, also die Regel wird am Ende der "regelnliste" angestellt.

    Wie sich also zeigt ist der Aufbau der iptables sehr einfach gehalten. Wir unterscheiden also eigentlich auf der einen Seite


    hierbei gilt natürlich auch die Unterschiede zwischen -A -I -D zu beachten.
    -A fügt die regel hinten an die Liste an
    -I fügt die regel vorne in die Liste ein
    -D löscht die passende Regel wieder aus der Liste

    und auf der -j Seite (Also der "Was tun wir damit")


    Zunächst noch ein/zwei ganz wichtigen Hinweisen. Die Regeln der iptables werden von oben nach unten durchgegangen, also die erste Regel vor der Zweiten und so weiter. Somit muss man etwas aufpassen, wenn das System eine Default auf ACCEPT hat, dann muss man Verbindungen verbieten, ist die default ein DROP so kann man dies natürlich mit ACCEPT steueren.
    In den folgenden Regeln gehen wir von einem default auf ACCEPT aus.

    Löschen der ganzen Regeln geht einfach mit iptables -F, dan ansehen der Regeln via iptables -L.

    Kommen wir nun also zu ein paar anderen Regeln, die man etwas besser benutzen kann, und ich denke das sie ein paar Feinheiten von iptables aufzeigen die man täglich benutzen kann.

    iptables -A INPUT -p tcp --syn --dport <<PORT>> -m connlimit --connlimit-above <<ANZAHL>> -j REJECT --reject-with tcp-reset
    Dies ist ein sehr schöner Befehl, mit Hilfe von connlimit sperren wir den gleichzeitigen Zugriff von einer IP auf unseren PORT sobald diese über ANZAHL hinaus gehen, sehr schön um zB Kundenzugriffe auf Datenbanken einzuschränken

    Dann erwähnen wir im gleichen Atemzug natürlich auch noch

    iptables -A INPUT -p tcp -m limit --limit 1/s --limit-burst 3 -j RETURN
    Der Limit Funktion, anders als der connlimit, ist es egal von welcher IP die Zugriffe kommen sie sorgt eibfach dafür das in diesem Fall nur 1 Zugriff pro sekunde über tcp möglich ist. Diese Kommando lässt sich auch mit --dport PORT erweitern, um also einen Zugriff auf diesen Port zu beschränken

    Es hat sich auch bewährt das ganze als Log zu schreiben, da man ja nachvollziehen möchte wen man so rausgeschmissen hat, folgender Eintrag vor dem eigentlichen Eintrag (z.B. einer der Erste) sorgt dafür das dies als zeile in /var/log/kern.log gespeichert wird

    iptables -A INPUT -p tcp --syn --dport <<PORT>> -m connlimit --connlimit-above <<ANZAHL>> -j LOG man beachte also das für das REJECT ein LOG benutzt wird, also wird es in diesem Falle nur gelogt, die eigentliche Verbindung funktioniert aber trotzdem. Deshalb muss auch dieser Eintrag _vor_ dem Reject stehen, da ansonsten die Verbindung unterbrochen wird und kein LOG gschrieben wird.

    Donnerstag, 17. Februar 2011

    Neuer (Web-)VServer

    FreeBSD********** 8.1-RELEASE FreeBSD 8.1-RELEASE

    date:Thu, 17 Feb 2011 13:47:29 GMT
    content-type:text/html transfer-encoding:chunked
    expires:Thu, 19 Nov 1981 08:52:00 GMT (29 years and 3 months ago)
    cache-control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 pragma:no-cache

    Also relativ klassisch :-)
    • FreeBSD 8.1 amd64
    • Nginx Webserver
    • PHP 5.2.17 als fcgi
    • MariaDB

    Bacula und Nagios

    Wenn man eine Monitoring Lösung wie Nagios am Start hat, dann möchte man Zwangsläufig das die Backuplösung sich hier integriert. Wenn man dann sich umschaut, findet man einiges an HowTo Lösungen, die irgendwie alle nicht so recht wollten.
    Ich habe mich jetzt mal einen Tag mit der Problematik befasst und fasse mal zusammen was man tun muss...

    Schritt 1: PASSIV CHECK
    Bacula soll nach beendetem Job uns eine Information geben was mit dem Job passiert ist, hierzu erstellen wir einen Passivcheck innerhalb von Nagios, dieser könnte so aussehen
    define service {
    hostgroup_name     bacula
    service_description bacula-fd
    use                          generic-service
    check_command     check_dummy_crit
    max_check_attempts 1
    check_interval       1440
    retry_interval        1440
    check_period        workhours
    notifications_enabled 0
    register 1
    check_dummy_crit ist hierbei das check_dummy script, welches immer critical ist, es sei denn es wird, in unserem Fall von Bacula, auf critical gesetzt.

    Schritt 2: Bacula2Nagios
    Wir brauchen für Nagios ein Script, dieses soll dafür sorgen das die Information von Bacula an nagios übermittelt wird. Hierbei müssen wir beachten, dass dieses Script nur auf dem Director liegen muss!
    Denn, wir werden später die Funktion RUN AFTER JOB benutzen, ich musste auch lange recherchieren bis mir auffiel das der Director diesen Aufruf macht und nicht der Client :-)
    Unser Script sieht dann so aus:
    # Bacula2Nagios V1#
    # args:
    # $1: Job name
    # $2: Status (0:OK)
    # $3: Plugin Output
    if [ $2 -eq 0 ]
    then status=0
    else status=2
    /bin/echo "$1;bacula-fd;$status;$3" | /usr/sbin/send_nsca -d ';' -c /etc/nagios/send_nsca.cfg -H <NAGIOSHOST>
    MAN BEACHTE!: Es ist hierfür wichtig das der "Job name" auich gleich dem Hostname in Nagios ist.

    Schritt 3: RUN AFTER JOB
    Nun fügen wir in jede JobDefs folgende beiden Zeilen ein
     Run After Job = "sh /usr/lib/nagios/plugins/ \"%n\" 0 \"%e %l %v\""
    Run After Failed Job = "sh /usr/lib/nagios/plugins/ \"%n\" 1 \"%e %l %v\""
    Hierbei ist
    • %n : der Jobname
    • 0/1: der Nagios Wert 0: OK 1: CRIT
    • %e der Job exit status
    • %l der job level
    • %v das Zielvolume
    • Nagios
    • Bacula
    • NSCA
    • bash und vi:-)  
    Viel Spass damit

    Montag, 14. Februar 2011

    I love Free Software!

    MySQL Replizieren

    Heute beschäftigen wir uns kurz mal mit dem Thema "MySQL Replikation".
    Ja! Lange dauert das ja nicht :-)

    Nehmen wir mal die Ausgangssituation
    Einen Debian Server MASTER mit MySQL
    Auf die Installation von Debian bzw MySQL muss man wohl nicht mehr im Detail eingehen, diese ist bei Debian ja so schön automatisiert das nichts schief gehen sollte, und
    Einen Debian Server SLAVE mit MySQL
     Wenn man die beiden Server zufällig in einem Rack haben sollte, so bevorzuge ich es an eth1 einfach ein Crosskabel anzuschliessen (Anmerkung!: Ein Crosskabel braucht man eigentlich nicht mehr, neue Neztwerkkarten sind so toll das sie dies alleine tun können).
    Somit konfigurieren wir uns auf beiden Servern ein Netz, zB
    auto eth1
    iface eth1 inet static
            address 10.0.1.X
    10.0.1.X sollte hierbei das X als 1 auf dem Master und 2 auf dem Slave gesetzt sein. Nach einem  /etc/init.d/networking restart sollte eine ping Probe möglich sein
    root@mysql-master:~# ping
    PING ( 56(84) bytes of data.
    64 bytes from icmp_req=1 ttl=64 time=3.95 ms
    Nun beginnen wir mit der Arbeit auf dem Master
    Als erstes editieren wir die /etc/mysql/my.cnf, hier suchen wir die Zeile

    • #server-id            = 1
    • #log_bin              = /var/log/mysql/mysql-bin.log
    und kommentieren sie ein, danach
    • mysql -p
    um in das MySQL Interface zu gelangen

    • flush privileges;
    Nun brauchen wir noch den Grunddatensatz, hierzu packen wir uns einfach das data_dir welches wir in /etc/mysql/my.cnf finden. Im Falle von Debian sollte dies /var/lib/mysql sein

    • cd /var/lib/mysql
    • tar cfz /tmp/mysnap.tar.gz .
    • scp mysnap.tar.gz
    Letzter Punkt auf dem Master, wir brauchen das aktuelle Logfile

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    | mysql-bin.000001 |      106 |              |                  |
    1 row in set (0.00 sec)

    ACHTUNG! Debian hat einen eigenen Systemnutzer, mit dieser Methode wird auch sein Passwort überschrieben, was dazu führt das MySQL auf dem Slave gleich nicht mehr gestartet werden kann. Workaround ist relativ simple, man kopiere sich die Passwörter aus /etc/mysql/debian.cnf und ersetze diese auch auf dem Slave.

    Nun machen wir auf dem Slave weiter
    Auch hier suchen wir den server-id Eintrag, setzen ihn aber auf 2

    • server-id            = 2

    Nun entpacken wir unser Archiv, wenn Sie unsicher sind können Sie hier auch im my.cnf File nachsehen welches das data dir ist

    • tar xfz mysnap.tar.gz -C /var/lib/mysql/
    Im letzten Schritt

    • mysql -p
    Abschliessende Kontrolle:
    So, eigentlich sollte unsere Arbeit hiermit erledigt sein, wir testen unser tun natürlich noch, ich kopiere mit Absicht nicht die ganze Zeile der Ausgabe, aber so ungefähr sollte sie aussehen

    Auf dem Master
    • show processlist;
    • 35 | repl | | NULL | Binlog Dump |  914 | Has sent all binlog to slave; waiting for binlog to be updated | NULL

     Auf dem Slave, so etwas wie

    • show processlist;
    • Waiting for master to send event |    | repl        |        3306 |            60 | mysql-bin.000001 |                 106 | mysqld-relay-bin.000002 |           251 | mysql-bin.000001 
    ACHTUNG! Fast hätte ich es vergessen. Was mir auch sehr spät bei der Kontrolle aufgefallen ist, ist das Debian standardmässig nur auf hört daher muss die bind-adresse noch angepasst werden.

    • bind-address =

    Danke das wars :-)

    Donnerstag, 10. Februar 2011

    Debian Backports (Squeeze)

    Vielleicht mal ein guter Zeitpunkt um ein wenig über mein Lieblingsrepo zu reden.

    Wer kennt das nicht, man sucht ein Softwarepaket und muss leider feststellen das die Version die wir in unsere Liste finden (okay, ich rede von 24 Monaten Lenny :-) ) eigentlich schon ziemlich alt ist. Nun haben wir hierbei ein wirkliches gutes Repository zur Hand welches genau aus diesem Grund geschaffen wurde

    Um es mit den Worten der Maintainer zu sagen:
     You are running Debian stable, because you prefer the Debian stable tree. It runs great, there is just one problem: the software is a little bit outdated compared to other distributions. This is where backports come in.
    Backports are recompiled packages from testing (mostly) and unstable (in a few cases only, e.g. security updates) in a stable environment so that they will run without new libraries (whenever it is possible) on a Debian stable distribution. It is recommended to select single backports which fit your needs, and not to use all available backports.

     Der Weg zu diesem Repo ist auch sehr einfach gestaltet, und geht prinzipiell in 3 Schritten

     Zu allererst brauchen wir einen neuen Eintrag in /etc/apt/source.list
     deb squeeze-backports main 
    wenn wir diesen Eintrag angelegt haben brauchen wir nur noch die Liste zu updaten
    aptitude update
     hier wird dann die Liste der Pakete auf den neusten Stand gebracht. Nun können wir einzelne Pakete aus diesem Repo installieren mit
    aptitude install -t squeeze-backports <paketname>
    das gleiche gilt natürlich auch für search/update

    Nun sollte man noch einen Eintrag in /etc/apt/preferences machen, dieser soll dafür sorgen, das auch automatisch Upgrades aus den Backports genommen werden
    Package: *
    Pin: release a=squeeze-backports
    Pin-Priority: 200
    Und das war es auch schon...

    Dienstag, 8. Februar 2011

    Ioncube Loader

     Der Ioncube Loader. Wird immer beliebter. Er ermöglicht es zwar php Anwendungen an einen Kunden herauszugeben, verhindert aber das dieser Kunde den Quelltext sehen kann.
    Somit ist er Ioncube Loader natürlich für Unternehmen interessant die primär mit ihren Webentwicklungen Geld verdienen wollen.

    Nun haben wir auch vorgesehen dieses beim nächsten Update unserer Web_Skeletons diesen endlich mal fest einzubauen, bis dahin ist aber immernoch ein wenig Handarbeit von Adminseite nötig.
    Aus diesem Grund beschreibe ich doch  nun mal kurz das allgemeine Vorgehen um einen Ioncube Loader in Betrieb zu nehmen.

    Also erstmal zum Abgleich die Grundlagen
    • Debian Lenny 5.0.8
    • Apache/2.2.16 (Debian)
    • PHP 5.2.6-1+lenny9 with Suhosin-Patch
    Wir laden von der oben genannten Seite das passende Linuxpaket
    nach dem entpacken haben wir folgende Verzeichnisstruktur 

    home01:~/ioncube# ls  LICENSE.txt     loader-wizard.php  README.txt
    natürlich kann man an dieser Stelle den loader-wizard in den Webspace verschieben, die seite aufrufen und der Anleitung folgen, da es aber nun schon ein paar mal getan wurde, geht es so weiter:
    1. Wir verschieben alle Dateien nach /usr/local/ioncube (wahlweise auch nur die die wir wirklich brauchen in unserem Falle also die
    2. Wir erstellen folgenden Eintrag in der /etc/php5/apache2/php.ini am besten direkt ganz am Anfang der Datei, da es sonst (zumindest bei mir) öfter zu Problemen kommt
    zend_extension = /usr/local/ioncube/
    Apache neustarten und Thats it!

    Montag, 7. Februar 2011

    Debian Lenny to Squeeze (Just another howto)

    Endlich ist es soweit, am Wochenende des 05./06. Februar hat jemand beschlossen das Debian Squeeze stable ist. Was bedeutet das für uns Admins, natürlich werden Images ausgetauscht und die ersten Testsysteme auf Squeeze hochgezogen.

    Als allererstes sollte man sich natürlich ein Backup der wichtigen Daten machen. In meinen Augen zählt hierzu auch eine Liste der Pakete

    • dpkg --get-selections
    sowie auch das (nahezu) komplette /etc/ Verzeichnis. Dieses sichern meiner Ansicht nach die wenigstens obwohl natürlich nichts nerviger ist als die ganzen configs neu zu schreiben wenn ein Rechner den Geist aufgibt.
    Mit Hilfe von /etc und den Paketen lässt sich Debian Server eigentlich sehr schnell wieder herstellen.

    Nun also zum Upgrade.
    Wir editieren also die /etc/apt/source.list
    deb squeeze main contrib non-free
    deb-src squeeze main contrib
    #deb lenny-backports main
    deb-src squeeze/updates main
    deb squeeze/updates main
    So könnte diese dann ungefähr aussehen.
    Danach eigentlich nur noch

    • aptitude update
    und natürlich ein

    • aptitude full-upgrade 
    Hierbei passiert nun wirklich einiges, ziemlich viele Pakete müssen gezogen werden und auch ein paar Konflikte aufgelöst. Bei mir lief es soweit ohne Probleme.

    Viel Spass mit Squeeze!

    Sonntag, 6. Februar 2011

    Pfui! Böses Böses Windows!

    Manchmal ist es schon toll was man so neues in Sachen Windows lernen kann.

    Vor knapp einer Woche habe ich einen Arbeitsplatzrechner mit einem Windows XP Pro ausgestattet (Ja, wir benutzen das immernoch). Die Installation lief soweit Problemlos, auch das Aktivieren klappte auf Anhieb.

    Nun, habe ich mich getraut eine Woche diesen PC alleine zu lassen und etwas Urlaub zu machen, als ich dann heute aus dem Urlaub kam, war ich doch sehr überrascht. Das Windows wollte doch wirklich wieder aktivieren lassen. Dies war für mich noch nicht so schlimm, jedoch das aktivieren viel in folgenden Schritten aus:

    1. Anmelden
    2. Sie müssen Windows Aktivieren
    3. Ja klicken
    4. Sie haben Windows bereits aktiviert
    5. Abmelden
    6. .... (Endlosschleife)
    Natürlich begann an dieser Stelle meine Google Suche nach diesem Problem auch wenn ich zugeben muss noch keine Lösung gefunden zu haben, will ich trotzdem mir die Zeit nehmen und einen echt tollen Ansatz weiter zugeben, den ich so noch nicht kannte.

    Windows XP Deaktivieren

    Wir booten das Windows in den "Abgesicherten Modus", hierzu drücken wir F8 während der Startphase des Rechner, sollte der Windows Boot Bildschirm erscheinen waren wir leider zu spät. 

    (Schritt 1) Als erstes löschen wir die Datei, die für das Aktivieren zuständig ist, hierzu starten wir den Windows-Explorer und gehen zum Ordner C:\windows\system32\ hier befindet sich eine wpa.dbl Datei die wir löschen.
    Nun benutzen wir die "Original Windows XP CD" und spielen diese Datei neu ein, sollte Ihr CD-Laufwerk D: sein so sieht der Befehl ungefähr so aus:
    • expand D:\i386\wpa.db_ C:\windows\system32\
    Nun haben wir diese Datei in Ihrer Originalversion, weiter...

    (Schritt 2) Nun müssen wir etwas an der Registry rumbasteln, hierzu nutzen wir START -> Ausführen und führen regedit aus, wir gehen zu
    Unter dem Punkt NOTIFY sollte es einen Eintrag RESETS geben, welchen wir mittels Rechts-Klick und Löschen entfernen.
    Da wir in der Registry schonmal sind bearbeiten wir noch einen Punkt
    Hier Ändern wir mittels Rechts-Klick auf OOBETimer  den Inhalt WICHTIG! ist es das der Inhalt wirklich geändert werden muss und nicht einfach gelöscht, wie diese Änderung jedoch aussieht ist relativ egal.

    Nun ist Ihr Windows wieder Deaktiviert und der Aktivierungprozess kann von neuem Beginnen.

    Freitag, 4. Februar 2011

    Die Altlasten

    Wie vorher erwähnt habe ich ja Altlasten entsorgt

    Die habe ich aus dem alten Zimmer im Haus meiner Eltern erstmal ins EG getragen und gestapelt

    • Apple Monitor
    • Ein Umax Apus (Apple Clon)
    • 4 PC Gehäuse teileweise leer
    • ca. 10 CD / DVD Laufwerke
    • Sun 19" Monitor
    • Sun Sparcstation 1, 2, 3, 4, 5
    • Sun Ultra 5 und 10
    • Sun Sparcstation IPX und IPC
    • ca 3 externe Platten und CD Gehäuse
    • Allerlei Kabel
    • Dockingstation für ein Compaq Notebook
    • Dazu Allerhand uralt SCSI Festplatten
    Wenn man den Anschaffungspreis nimmt (was teilweise Stand 1993 war :-) ) habe ich also ein schönes neues Auto weggeschafft. Vom Gewicht her wohl fast auch :-)

    Stanford University Network aka SUN

    So, das Bild fliegt nun schon ne Weile auf meinem Desktop rum und ich denke ich sollte es mal posten bevor es bei Aufräumarbeiten verloren geht.

    Ja ich mochte SUN. Eine klasse Firma. Auch wenn ich mich am Montag von meiner SUN Sammlung nahezu vollständig getrennt habe, so kann ich doch immernoch zwei Maschinen mein Eigen nennen

    • SUN Ultra 10
    • SUN Ultra 60
    Von diesen beiden werde ich mich so schnell nicht trennen :-)

    Dienstag, 1. Februar 2011

    Roundcube am limit

    Letztens ist es passiert das Roundcube auf einem unserer Rechner am Limit war.
    Soll heissen das die Ausgabe von top eine Wait von 85% zeigte, und damit einhergehend natürlich auch Loginzeiten (bzw auch Seitenaufbauzeiten) jenseits der 1 Minute Grenze.

    Der erste Lösungsansatz schlug leider fehl. Dieser bestand darin den Apache Server und den MySQL Server neuzustarten. Doch wie gesagt, dies führte zu einer Verbesserung für gerade mal 3 Minuten. Bevor die Wait auch hier wieder über einen Wert von 60% ging.
    Allgemein sollte man vielleicht wissen das Wait zumeist mit Festplatten zugriffen zusammenhängt, also ein Prozess würde zwar gerne etwas tun, muss jedoch auf die I/O warten.

    Also, da Roundcube primär auf MySQL basiert, bzw diese Datenbank als Backend nutzt, fand sich hier auch ein besserer Lösungsansatz und zwar über das löschen/leeren einer Roundcube Tabelle in Mysql.
    Hierzu betrachtet ich mir die Zugriffe in MySQL selbst und fand schnell heraus das Roundcube mittels einer Tabelle eine Art Cache simuliert.

    Die Lösung und Vorgehensweise:
    • mysql -p
    Dann natürlich das login in die Datenbank als root mit Passwort.
    • use roundcube;
    • select count(*) from cache;
    Dies brachte einen Wert jenseits von 160.000 zurück.
    • truncate cache;
    • quit;
    Die führte dazu das es ziemlich genau 3 Monate sehr gut lief, bis der Speicher auch hier wieder voll war.