Installation vom Backup Exec Remote Agent für Linux (Ralus)

Wie hier schon das eine oder andere mal erwähnt haben wir im Geschäft einige Linux Server in einer virtuellen Umgebung. Bisher habe ich hier immer die ganze virtuelle Maschine gesichert, heute habe ich aber mal einen Versuch mit dem Symantec BE 2010 Client unter Linux gemacht und das scheint gut zu funktionieren.
Vor der Installation empfehle ich, die libstdc++5 zu installieren, da diese meistens nötig ist, damit der Client sauber läuft. Für Ubuntu und 64 bit gibts die Installationsdatei hier.
Installiert wird die Datei danach mit dem folgenden Befehl:
dpkg -i libstdc++5_3.3.6-18_amd64.deb

Der Linux Client vom BE 2010 heisst Ralus und ist auf der Installations-CD vom BE im Ordner LinuxUnixMac zu finden. Die Installationsdatei kopiert man nun auf den Linux-Server und entpackt sie idealerweise in einen neuen Ordner:
root@srvWEB01:~# mkdir ralus
root@srvWEB01:~# mv RALUS_RMALS_RAMS-4164.5.tar.gz ralus/
root@srvWEB01:~# cd ralus/
root@srvWEB01:~/ralus# tar -xvzf RALUS_RMALS_RAMS-4164.5.tar.gz

Nun führt man die Datei installralus aus.
root@srvWEB01:~/ralus# ./installralus

Nun folgt man einfach dem Installer. Man wird gefragt, auf welchen Servern man den Client installieren will und auch auf welchem Server (oder welchen Servern) das BE installiert ist. Wichtig ist halt, dass diese Adresse korrekt ist und der Server den Hostnamen auch auflösen kann.
Ist der Installer erfolgreich durchgelaufen kann man entweder den Server neustart oder einfach den Service starten:
root@srvWEB01:~/ralus# /etc/init.d/VRTSralus.init start

Im BE hat man nun bei den Auswahllisten unter "Favorite Resources -> Linux/Unix Servers" den Server drin und kann nach Eingabe der Benutzerdaten bequem die zu sichernden Ordner auswählen.
http://images.t-error.ch/blog/1462/ralus.jpg


Die langzeit Erfahrung mit diesem Service fehlt mir noch, aber das erste Backup ist sauber durchgelaufen. Bei Symantec gibts dazu übrigens noch eine englischsprachige Installationsanleitung.

VMware Tools unter Ubuntu installieren

Wer seine Server mit VMware virtualisiert hat, installiert auf den virtuellen Maschinen idealerweise die VMware-Tools. Auf Windows Maschinen ist das sehr simpel und auch auf Linux-Servern geht das recht einfach.
Dazu muss man zuerst im vSphere Client die Installation der VMware-Tools anstossen, damit dem Server die CD zur Verfügung gestellt wird.
http://images.t-error.ch/blog/1456/vmware_tools_01.jpg


Nun kann man das CD-Laufwerk mounten und die Installationsdatei (für Ubuntu die .tar.gz Datei) in einen anderen Ordner kopieren und das Laufwerk wieder unmounten.
root@srvWEB02:~# mount /dev/cdrom /media/cdrom/
root@srvWEB02:~# cp /media/cdrom/VMwareTools-4.0.0-261974.tar.gz /tmp
root@srvWEB02:/tmp# umount /media/cdrom/

Als nächstes wechselt man in den anderen Ordner und entpackt die Installationsdatei.
root@srvWEB02:~# cd /tmp/
root@srvWEB02:/tmp# tar -xvzf VMwareTools-4.0.0-261974.tar.gz

Jetzt ruft man die Installationsdatei auf und arbeitet sich durch alle Fragen durch. Bei mir haben alle Pfade schon gestimmt und ich musste nichts anpassen
root@srvWEB02:/tmp# vmware-tools-distrib/vmware-install.pl

Nachdem die Installation durchgelaufen ist, starten man den virtuellen Server noch neu und Voila: Die Tools sind installiert:
http://images.t-error.ch/blog/1456/vmware_tools_02.jpg

Grub 2 nach Windowsinstallation wiederherstellen

Ich nutze auf dem Computer zuhause schon seit längerem Untuntu und bin sehr zufrieden damit. Einige Dinge (GPS, Spiele) laufen unter Ubuntu aber nicht darum habe ich paralell noch ein Windows XP installiert. Mit dem Grub Bootloader ist das ja kein Problem. Neulich musste ich aber mein Windows neu installieren, was ja ansich auch kein Problem ist. Bei der Installation überschreibt Windows aber den Bootloader und so kann man Linux nicht mehr booten. Hier darum eine kleine Anleitung wie man den Grub wieder installiert, so dass man Linux und Windows booten kann. Dazu benötigt man einfach eine Ubuntu Installations CD. Ich habe das ganze mit Ubuntu 9.10 durchgespielt.

Als erstes legt man die Ubuntu CD ins Laufwerk und bootet davon im Live Modus. So hat man ein Linux zur Verfügung, ohne dass man etwas ander Festplatte verändert. Das Problem ist aber, dass die Live CD den Grub 1 verwendet, die Installation aber Grub 2, aber das ist ein lösbares Problem.
Darum schreibt man nun als erstes den (alten) Grub in den MBR (Master Boot Record) der Festplatte. Da zu muss man die UUID der Bootpartition sowie der Name der Festplatte wissen. Am besten hängt man die Boot Partition über das GUI ein und gibt danach in der Shell den Befehl mount ein. Dort sieht man, wie die Partition eingebunden ist und auch die UUID der Partition. Wir brauchen wie gesagt die UUID der Partition und der Name der Festplatte. Ist die Parition die /dev/sda6 ist die Platte die /dev/sda. Im Normalfall ist eine IDE Platte die /dev/hda und eine SATA/SCSI die /dev/sda. Den Bootloader schreiben wir nun mit dem folgenden Befehl ({UUID} durch die entsprechende UUID ersetzen.
sudo grub-install --root-directory=/media/{UUID} /dev/sda

Bevor wir den Computer nun neustarten, müssen wir noch wissen, welche Parition die Root Partition ist. Also die Partition, die schlussendlich als / genutz werden soll. Gleiches vorgehen wie vorhin. Schnell einhängen und mit mount die Partition auslesen.
Jetzt können wir den Computer neustarten und die CD aus dem Laufwerk auslesen.

Beim neustart kommt nun der Grub im Konsolen Modus. Also keine Auswahl sondern nur eine Aufforderung etwas einzugeben. Nun müssen wir das System ein erstes mal "von Hand" booten. Zum Glück gibt es eine Autovervollständigung, die das ganze etwas einfacher macht. Als erstes gibt man die folgende Zeile ein:
linux /vmlinuz-2.6.31-20-generic root=/dev/sda6 ro quiet splash

Am einfachsten ist es nur linux /vmlinuz einzutippen und sich dann mit dem Tabulator die verschiedenen Kernel anzeigen zu lassen, so erwischt man auch immer den aktuellsten. /dev/sda6/ ist hier die Root Partition, dessen Name wir vorhin ausgelesen haben. (Das Tastaturlayout ist Englisch. Die Bindestriche und Slashes nimmt man am besten vom Numlock, das Gleichzeichen ist gleich links vom Backspace)
boot linux /vmlinuz-2.6.31-20-generic root=/dev/sda6 ro quiet splash

Nun ist der Kernel geladen und wir müssen nur noch Booten. Das geht mit demselben Befehl, nur noch mit einem boot davor.
boot linux /vmlinuz-2.6.31-20-generic root=/dev/sda6 ro quiet splash

Jetzt sollte das System wieder booten wie vor der Windows installation. Damit man das aber nicht bei jedem Start machen muss, muss man nun noch die neuste Version vom Grub installieren. Das geht recht simpel mit dem folgenden Befehl:
sudo gub-install --root-directory=/ /dev/sda

Wenn man das Windows nachträglich installiert, oder bei der Neuinstallation die Windows Partition komplett gelöscht und neu erstellt hat, muss man das Configfile vom Grub anpassen, damit auch Windows wieder gebootet werden kann. Das geht mit dem folgenden Befehl schnell und vollautomatisch:
sudo grub-mkconfig -o /boot/grub/grub.cfg

Beim nächsten Neustart sollte man nun wieder den Grub 2 mit der Auswahl Linux und Windows haben.

Knistern unter Linux

Seit meinem WK hatte ich mit meinem Linux das Problem, dass der Ton nicht mehr funktionierte. Anstelle von Musik kam nur noch ein komisches Knistert. Im Ubuntu-Forum habe ich nun die Lösung gefunden. In der Shell das folgende eingeben und den Computer danach noch neustarten und schon gehts wieder.
sudo /etc/init.d/alsa-utils reset

bittorrent unter Linux

Ich benutze regelmässig Bittorrent um grössere Dateien herunter zu laden. Nur meist nervt es mich, wenn der Bittorrent-Client dann die ganze Bandbreite benutzt, wenn ich surfen will, oder auch wenn ich den Computer laufen lassen muss, nur damit eine Datei herunter geladen werden kann. Für etwas habe ich ja meine alte Linux-Box, die diese Aufgabe ganz gut übernehmen kann. Schliesslich gibt es einen guten Bittorrent-Client für die Shell, welcher im Zusammenspiel mit screen sehr simpel zu bedienen ist.
Als erstes muss man dazu screen und bittorrent auf der Linux-Box installieren:
apt-get install screen
apt-get install bittorrent

Aus Sicherheitsgründen habe ich extra einen Benutzer namens bittorrent erstellt, unter welchem dann der Prozess läuft:
useradd -g users -d /home/bittorrent -s /bin/bash bittorrent

screen

screen ist ein praktisches Tool mit welchem man Programme starten kann, ohne dass sie bei eine Disconnect (ssh, telnet usw.) sofort beendet werden. Das heisst man startet mit screen eine Terminal-Session, startet darin das Programm (in diesem Fall bittorrent) und kann dann die Verbindung wieder trennen, ohne das das Programm beendet wird.
Erstellen tut man eine solche Session mit dem Befehl screen. Nun kann man in dieser Session ein Programm starten und die Session danach mit Ctrl-A-D wieder beenden. Mit screen -r wird eine bestehende Session wieder aufgerufen.
Das bedeutet, dass man am Anfang mit screen eine neue Session erstellt, darin den Bittorrent-Client startet und danach mit Ctrl-A-D die Session wieder beendet. Wenn man nun nach dem Status sehen will, öffnet man die bestehende Session mit screen -r wieder.
Allerdings ist screen nicht sonderlich einfach zu verstehen, aber darauf wird man im man-File auch hingewiesen:
A weird imagination is most useful to gain full advantage of all the features.

bittorrent

Nun zum eigentlichen Bittorrent-Client:
Ich verwende btlaunchmanycurses damit ist es möglich mehrere Downloads gleichzeitig am laufen zu haben und diese werden auch noch "schön" dargestellt. btmanycurses erwartet als Parameter einen bestimmen Ordner und überwacht diesen. Sobald man in diesem Ordner ein torrent abspeichert, wird das erkannt und heruntergeladen. Die heruntergeladenen Daten werden auch in diesem Ordner abgelegt. Das heisst man kann die torrent-Datei in diesen Ordner speichern und muss dann nur noch warten bis der Download komplett ist. Ich habe mir ein kleines Script geschrieben welches den Client mit den nötigen Parametern startet. Aber das ist reine Bequemlichkeit.
#!/bin/bash
/usr/bin/btlaunchmanycurses /home/bittorrent/

Schlussendlich muss man sich nur mit dem Benutzer bittorrent einloggen, dort einmalig mit screen eine Terminal-Session erstellen und darin das Script starten. Wenn der Bittorrent-Client nun läuft kann man die Dateien in den angegebenen Ordner kopieren und sie werden automatisch heruntergeladen. Den Status sieht man mit screen -r. In verbindung mit einem Samba, FTP usw. Server ist das eine sehr bequeme und einfache Art um torrents herunter zu laden.

Und so sieht das dann aus:
http://images.t-error.ch/blog/1073/bittorrent.jpg


Wichtig ist auch noch, dass man die TCP Ports 6881-9 auf den entsprechenden Computer weiterleitet.

Zusammenfassung

Wenn nun die benötigte Software installiert, der Benutzer und das Script erstellt wurden kann man folgendermassen vorgehen
erstmaliges Starten des Clients
screen
./bittorrent.sh
Ctrl-A-D
Status überprüfen
screen -r
Ctrl-A-D

Apache und PHP Versions-Header entfernen

Apache und PHP sind unter Ubuntu standardmässig etwas gespächig einstellt und teilen dem Browser so immer die Apache und PHP Version mit. Auch die Serversignatur (bei Fehlermeldungen) zeigt die Versionsnummern an. Dies ist aufgrund der Sicherheit nicht empfehlenswert, denn was der Hacker nicht weiss, mach ihn nicht heiss. Die HTTP-Header sehen Standardmässig so aus:
HTTP/1.1 200 OK
Date: Mon, 04 May 2009 11:23:04 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.5 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.5

Content-Length: 4045
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html


In der Datei apache2.conf kann man mit den Optionen ServerTokens und ServerSignature die HTTP-Headers und die Signatur etwas kürzen:
ServerTokens Prod
ServerSignature Off

Die HTTP-Headers vom Apache sehen dann nur noch so aus:
HTTP/1.1 200 OK
Date: Mon, 04 May 2009 11:43:17 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5.5

Content-Length: 4045
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html


Nun muss nur noch das X-Powered-By von PHP weg und dann ist sind die Headers sauber. Dazu muss man in der Datei php5.ini die Option expose_php anpassen:
expose_php = Off
Und nun sind in den Headers keine Versionsnummern mehr drin.
HTTP/1.1 200 OK
Date: Mon, 04 May 2009 11:45:13 GMT
Server: Apache
Content-Length: 4045
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

Mails mit Attachment aus der Shell versenden

Mit einem kleinen Script und einem Cronjob mache ich im Geschäft täglich ein Backup meiner mySQL Datenbank und sende es per Mail an meine GMail-Adresse. Dort habe ich genug Platz und kann so auf ein tägliches Backup zurückgreiffen.
Wie man ein Backup einer Datenbank macht habe ich ja bereits beschrieben. Das Versenden der Datei erledigt bei mir Mutt schon seit einiger Zeit sehr zuverlässig:
echo "Text" | mutt -s "Betreff" -a filename.zip empfaenger@mail.ch

Lösung von CIFS VFS: server not responding

Seitdem ich bei meinem neuen Notebook unter Ubuntu 8.10 meine SMB-Shares wieder in der fstab eingetragen hatte, kam jedes mal beim herunterfahren die folgende Fehlermeldung, welche den Computer für etwa eine Minute blockierte.
CIFS VFS: server not responding
CIFS VFS: No response for cmd 50 mid 155


Nichts wirklich tragisches, aber doch nervig genug um der Sache nachzugehen. Glücklicherweise war ich nicht der einzige mit dem Problem. Das Problem ist, dass die SMB-Shares mit dem CIFS Daemon und nicht über den Kernel gemountet werden. Beim herunterfahren wird dann zuerst der Daemon gestoppt und danach sollen die Shares getrennt werden, was dann natürlich nicht mehr funktioniert. Die Lösung ist recht simpel, ein Script, welches die Shares trennt, bevor der Daemon gestoppt wird. Im Ubuntu-Forum findet man da eine gut funktionierende Lösung. Allerdings muss man sich kurz registrieren, damit man die Datei beziehen kann. Bei mir ist die Fehlermeldung nun verschwunden.

Dualscreen unter Ubuntu 8.10

Als ich vor etwa eineinhalb Jahren zum ersten mal auf dem Notebook Windows deinstallierte und Ubuntu installierte versuchte ich Ubuntu so zu konfigurieren, dass ich meine beiden Bildschirme benutzen konnte. Ich hatte damals Stunden im Internet gesucht, in der xorg.conf geschrieben, den Computer neugestartet usw. Alles ohne Erfolg.
Nun mit dem neuen 8.10: Ein Klick auf System -> Einstellungen -> Bildschirmauflösung, dort den Hacken bei "Bildschirme spiegeln" entfernen. Jetzt nur noch die Bildschirme richtig positionieren, die gewünschte Auflösung einstellen und schnell ab- und wieder anmelden. Und es funktioniert perfekt.
http://images.t-error.ch/blog/916/aufloesung.jpg

Webcam als Überwachungskamera mit Motion

Da mein neues Notebook nun eine integrierte Webcam hat, ich die ab nicht wirklich zum Chatten usw. brauche habe ich mich mich im Internet mal nach alternativen Nutzungsmöglichkeiten ungesehen.
Eine Möglichkeit ist das verwenden der Webcam als Überwachungskamera/Bewegungsmelder. Das Programm Motion kann so konfiguriert werden, dass es sobald sich etwas bewegt einen Film und/oder Bilder macht und diese auf der Festplatte ablegt. Mit einer integrierten Webcam macht das leider wenig Sinn, aber mit einer externen kann man sicher noch "interessante" Dinge anstellen.
Motion ist beim Ubuntu 8.10 schon im Repository dabei und kann so über apt installiert werden.
sudo apt-get install motion

Standardmässig nutzt Motion die Konfigurationsdate motion.conf im Ordner /etc/motion. Diese Datei ist für den Anfang schon recht gut und muss nicht mal gross abgeändert werden. Ich wollte zum Testen, dass Motion bei Bewegungen Fotos macht und diese auf der Festplatte ablegt, einen Film benötige ich nicht.

Darum habe ich in der motion.conf die folgenden Parameter angepasst:

Die Breite und Höhe der Webcam angeben:
width 480
height 320

Damit kein Foto geschossen wird, wenn das Licht ein- oder ausgeschaltet wird.
lightswitch 50

Videoaufnahme deaktivieren
ffmpeg_cap_new off

Den Pfad anpassen
target_dir /home/david/Motion


Gestartet wird nun mit dem Befehl motion in der Shell. Sobald das Programm läuft und man sich vor der Kamera bewegt, werden schon Bilder gespeichert:
[1] File of type 1 saved to: /home/david/Motion/01-20090119210732-00.jpg


Eine weitere praktische Sache ist, dass Motion standardmässig einen HTTP Server auf dem Port 8081 startet, auf dem man die Wercam beobachten kann. Aus Sicherheitsgründen kann man standardmässig aber nur vom Localhost darauf zugreifen.