10.02.2017

Yum Version Lock

Manchmal kommt es vor dass man verhindern will das automatisch Pakete upgedatet werden.
zB macht es manchmal Sinn das automatische Update des check-mk-agent auf Centos 7 zu verhindern wenn man das epel Repository eingebunden hat.
Dies erreicht man einfach mit dem YUM Plugin versionlock

yum install yum-plugin-versionlock
yum versionlock check-mk-agent

Das kann man dann noch relativ einfach nachprüfen indem man in das lockfile schaut. 

cat /etc/yum/pluginconf.d/versionlock.list
# Added locks on Fri Feb 10 13:50:57 2017
0:check-mk-agent-1.2.6p12-1.*

Danach macht ein yum update kein automatisches Update des check-mk-agent mehr.

Kategorie: Linux, CentOS


21.10.2016

Verzeichnisdatum korrigieren

Oft ist es sinnvoll, wenn in Linux Datum/Uhrzeit eines Verzeichnisses mit dem des neuesten Files in diesem Verzeichnis übereinstimmt.

Lösen kann man dies am elegantesten mit der zsh (Z-Shell). Man geht in das Verzeichnis, das aktualisiert werden soll und tippt (in der zsh) folgendes ein:

touch -r *(Dom[1]) .

Wenn alle Unterverzeichnisse rekursiv ebenfalls angepasst werden sollen:

for d (**/*(D/)) touch -r $d/*(D.om[1]) -- $d

Dies muss händisch durchgeführt werden. Soll das immer automatisch gehen, könnte man eine Lösung mit incron basteln. Dies sei dem geneigten Leser als Übung überlassen...

Kategorie: Linux


29.07.2016

Routing mit openconnect-VPN

Unter Linux gibt es openconnect, mit dem z. B. zu einem Cisco AnyConnect-VPN verbunden werden kann. Das Problem ist, dass die gesamte Routingtable verändert wird, und man nur mehr in das VPN kommt. Ein Zugriff auf das "normale" Internet ist nicht mehr möglich.

Abhilfe schafft ein kleines Script, das für die VPN-Verbindung einen eigenen Networknamespace generiert:

#!/bin/bash

IP=`hostname -I | cut -d' ' -f1`

ip netns add myvpn
ip link add veth0 type veth peer name veth1
ip link set veth1 netns myvpn
ip netns exec myvpn ifconfig veth1 192.168.99.1/24 up
ifconfig veth0 192.168.99.2/24 up
ip netns exec myvpn route add default gw 192.168.99.2
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.99.0/24 -j SNAT --to-source $IP
ip netns exec myvpn openconnect -b --no-cert-check -u myvpnuser --passwd-on-stdin https://123.123.123.123 < pw.txt
ip netns exec myvpn sudo -u myunixuser /bin/bash

killall openconnect
iptables -t nat -D POSTROUTING -o eth0 -s 192.168.99.0/24 -j SNAT --to-source $IP
ifconfig veth0 down
ip netns exec myvpn ifconfig veth1 down
ip link delete veth0
ip netns delete myvpn

123.123.123.123 ist dabei die Adresse des VPN-Servers
myvpnuser der Username für das VPN
myunixuser der Username im lokalen Linux-System, mit dem gearbeitet werden soll
Das Skript muss als root aufgerufen werden.

In der Datei pw.txt muss das VPN-Passwort stehen. Alternativ kann man es jedesmal eingeben, wenn man --passwd-on-stdin weglässt.

Nach Aufruf des Skriptes startet eine bash-Shell, in der das VPN aktiv ist. Außerhalb dieser Shell ist das VPN nicht erreichbar, dafür ist das Routing dort unverändert. Es kann also ganz normal auf das Internet zugegriffen werden. Braucht man eine zweite VPN-Shell, ruft man diese Zeile einfach in einer weiteren Shell auf:

ip netns exec myvpn /bin/bash

Jede dieser VPN-Shells kann mit exit beendet werden. Die erste Shell (die vom Skript geöffnet wurde) sollte als letztes beendet werden.

Kategorie: Linux


14.09.2014

Openstack: Resize und Migration

Soll eine Instanz auf einen anderen Host wandern, müssen die beiden Hosts aufeinander per SSH zugreifen können. Beim Resize wird die VM in geänderte Größe auf einen anderen Host migriert. Um diesen SSH-Zugriff zu ermöglichen, müssen die public keys der anderen Hosts in der authorized_keys eines jeden Hosts sein.

Um das bei einer größeren Zahl von Hosts nicht unüberschaubar werden zu lassen, empfiehlt es sich, für alle Compute-Hosts den selben Schlüssel zu verwenden. Jeder hat also den selben public und private key und ersteren auch in der authorized_hosts.

# usermod -s /bin/bash nova
# su - nova

# mkdir -p -m 700 .ssh

# cat > config <<EOF
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
EOF

# ssh-keygen -f id_rsa -b 1024 -P ""
# cp /var/lib/nova/.ssh/id_rsa.pub /var/lib/nova/.ssh/authorized_keys

Die Dateien config,id_rsa, id_rsa.pub und authorized_keys dann auf alle compute hosts verteilen!

Kategorie: Linux, Virtualization


21.03.2014

Netzwerk trace nach prozess id

wenn man zB ein bestimmtes Email netzwerkseitig debuggen möchte, ist es auf einem Mailserver mit sehr viel Traffic oft sehr schwierig da das abhören des Port 25 sehr viel anderen Traffic der nicht relevant ist ebenfalls aufzeichnet.
Besser ist es da, den Netzwerktraffic des expliziten Prozesses mitzuschneiden. Der Output ist leider kein pcap kompatibles Format, aber für den kurzen Check reicht es allemal. 

Hier wurde zB.: nachgesehen welche Spamlists der sendmail verwendet und ob diese auch schnell antworten. Hinter dass -p gehört dann natürlich die entsprechende Prozess-ID

strace -p 3636 -f -e trace=network -s 10000

send(8, "\331\314\1\0\0\1\0\0\0\0\0\0\3icb\2at\0\0\1\0\1"..., 24, MSG_NOSIGNAL) = 24
recvfrom(8, "\331\314\205\200\0\1\0\1\0\2\0\2\3icb\2at\0\0\1\0\1\300\f\0\1\0\1\0\1Q\200\0\4\303\346\250X\300\ f\0\2\0\1\0\1Q\200\0\21\7goliath\3icb\2co\300\20\300\f\0\2\0\1\0\1Q\200\0\7\4puck\300socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 8
connect(8, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("195.230.xx.xx")}, 28) = 0
send(8, "jB\1\0\0\1\0\0\0\0\0\0\00231\003160\003230\003195\2ix\5dnsbl\6manitu\3net\0\0\1\0\1"..., 52, MSG_NOS IGNAL) = 52
recvfrom(8, "jB\201\203\0\1\0\0\0\1\0\0\00231\003160\003230\003195\2ix\5dnsbl\6manitu\3net\0\0\1\0\1\300\33\0 \6\0\1\0\0\0connect(8, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("195.230.xx.xx")}, 28) = 0
send(8, "\377\375\1\0\0\1\0\0\0\0\0\0\00231\003160\003230\003195\3zen\10spamhaus\3org\0\0\1\0\1"..., 49, MSG_ NOSIGNAL) = 49
recvfrom(8, "\377\375\201\203\0\1\0\0\0\1\0\0\00231\003160\003230\003195\3zen\10spamhaus\3org\0\0\1\0\1\300\3 3\0\6\0\1\0\0\0\226\0004\4need\2to\4know\4only\0\nhostmaster\300\37S\243M\204\0\0\16\20\0\0\2X\0\6\227\200\0\ 0\0\226"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("195.230.xx.xx")}, [16]) = 113

Kategorie: Linux, CentOS


03.02.2014

Textdatei ohne Kommentare ausgeben

Manchmal ist es sinnvoll zB eine Konfigurationsdatei ohne Kommentare und Leerzeilen anzusehen. Bei den sehr großen Konfiguration von zB der apache httpd.conf oder der freeradius radiusd.conf fällt es im Normalzustand oft schwer Konfigurationen von zwei Servern zu vergleichen oder sogar automatisch mit diff zu vergleichen.

Ein bisschen egrep und grep helfen uns dabei wirklich nur die Zeilen auszugeben die wirkliche Konfiguration beinhalten.

Ausganskonfiguration:

# Multi-language error messages
#Include /etc/httpd/extra/httpd-multilang-errordoc.conf
# Fancy directory listings
#Include /etc/httpd/extra/httpd-autoindex.conf
# Language settings
#Include /etc/httpd/extra/httpd-languages.conf
# User home directories
#Include /etc/httpd/extra/httpd-userdir.conf
# Real-time info on requests and configuration
Include /etc/httpd/extra/httpd-info.conf
# Virtual hosts
#Include /etc/httpd/extra/httpd-vhosts.conf
# Local access to the Apache HTTP Server Manual
#Include /etc/httpd/extra/httpd-manual.conf
# Distributed authoring and versioning (WebDAV)
#Include /etc/httpd/extra/httpd-dav.conf
# Various default settings
#Include /etc/httpd/extra/httpd-default.conf
# Configure mod_proxy_html to understand HTML4/XHTML1

Include /etc/httpd/extra/proxy-html.conf

# Secure (SSL/TLS) connections
#Include /etc/httpd/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#

SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

# Deal with user agents that deliberately violate open standards


BrowserMatch "MSIE 10.0;" bad_DNT



RequestHeader unset DNT env=bad_DNT


Suexec On
Include /etc/httpd/extra/httpd-fcgid.conf
Include /etc/httpd/extra/httpd-mod_security.conf 

Nun können mit einem einfach cat und grep die unnötigen Kommentare und Leerzeilen eliminiert werden.

cat /etc/httpd/httpd.conf | egrep -v "^[^a-z0-9]*#" | grep -v "^$"


Include /etc/httpd/extra/proxy-html.conf


SSLRandomSeed startup builtin
SSLRandomSeed connect builtin


BrowserMatch "MSIE 10.0;" bad_DNT


RequestHeader unset DNT env=bad_DNT

Suexec On
Include /etc/httpd/extra/httpd-fcgid.conf
Include /etc/httpd/extra/httpd-mod_security.conf

Diese "stilisierte Config" kann zB mittels diff von 2 Servern analysiert werden um Unterschiede schnell aufzuzeigen.

Kategorie: Linux


12.01.2014

Virtueller Linux Maschine eine Festplatte hinzufügen

Hier kurz ein paar Tips wie man einer virtuellen Linux Maschine eine neue Festplatte hinzufügt.

- fügt ihr die Festplatte in eurer Virtualisierungsplattform euer Wahl der virtuellen Maschine hinzu
- muss man nun einen rescan des scsi Bus initaliesieren damit die neue Platte erkannt wird. Ansonsten müsste man die Maschine neu starten, was man natürlich gerne vermeiden will

echo "- - -" > /sys/class/scsi_host/host#/scan 

danach kann man mittels 

fdisk -l

nachsehen ob die neue Festplatte erkannt wurde. Nachdem die Festplatte nun vom System erkannt wird, kann Sie ganz normal mittels fdisk, cfdisk, etc. partitioniert werden. Zb eine große Partition vom Typ Linux.

fdisk /dev/sdb

Nach dem partitionieren muss man die neue Partition nur noch formatieren und mounten.

mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt

Und schon können wir auf die neue Disk zugreifen. Virtuelle Disken eignen sich übrigens auch hervorragend als "USB-Stick Ersatz" beim kopieren von Daten zwischen virtuellen Maschinen ohne Netzwerkverbindung!

Kategorie: Linux, CentOS


29.10.2013

UTF8-Probleme in mysql-Datenbanken

Beim Import einer Datenbank, die auf einem anderen Server exportiert wurde kann es zu Problemen mit den UTF8-Zeichen kommen.

Besonders ärgerlich ist, wenn die einzelnen Bytes eines UTF8-Zeichens fälschlicherweise beim Export selbst in UTF8 konvertiert wurden. Dann hat man Quargel wie ü statt den Umlauten dort stehen. Da nutzen auch keine Tools wie iconv mehr etwas, weil der Text eigentlich schon in perfektem UTF8 vorliegt. Nur halt mit kryptischen Zeichen statt Umlauten.

Da hilft ein kleines Skript, das das Tool "sed", das auf jedem Linuxsystem vorinstalliert sein sollte, verwendet:

#!/bin/bash

sed -i 's/Ä/Ä/g' $1
sed -i 's/ä/ä/g' $1
sed -i 's/Ö/Ö/g' $1
sed -i 's/ö/ö/g' $1
sed -i 's/Ãœ/Ü/g' $1
sed -i 's/ü/ü/g' $1
sed -i 's/ß/ß/g' $1

 Aufgerufen mit

./scriptname dateiname

kann das mit mysqldump exportierte File korrigiert und mit dem mysql-Befehl wieder importiert werden. Wahlweise können auch andere Sonderzeichen-Ersetzungen im Skript hinzugefügt werden.

Kategorie: Linux


20.08.2013

Kommandozeilen-Tricks für JPG-Bilder

Es muss nicht immer ein Bildbearbeitungsprogramm wie Gimp oder Photoshop geladen werden, um kleine Änderungen an JPG-Bilder durchzuführen. Vor allem bei großen Bildbeständen ist die Kommandozeile viel schneller und effizienter.

Hier ein paar Kommandos unter Linux. Das Paket imagemagick muss installiert sein - es ist bei allen gängigen Distributionen über die Paketverwaltung installierbar.

JPG in PDF konvertieren:
convert -page a4 *.jpg ausgang.pdf
Dies erstellt ein PDF mit allen jpg-Bildern im aktuellen Verzeichnis und speichert es unter ausgang.jpg ab

JPG-Bilder automatisch rotieren:
jhead -autorot *.JPG
Wenn die Kamera die Richtungsinformationen abgespeichert hat, dreht dieses Kommando alle Bilder in die richtige Lage.

Zeit in JPG umstellen:
jhead -ta+1:00 *.JPG
Dieses Kommando fügt zur Uhrzeit, die in einem JPG gespeichert ist, eine Stunde hinzu. Sehr praktisch, wenn man auf der Kamera die Sommerzeitumstellung vergessen hat!

Kategorie: Linux


30.01.2013

Postfix Mails aus der queue löschen

Wenn man beim postfix gezielt Mails aus der queue löschen möchte kann man das mit diesem Befehl tun, wobei searchstring durch den string ersetzt werden sollte nachdem man suchen möchte. zB yahoo.com, etc.

find /var/spool/postfix/deferred/ -type f -exec grep -l 'searchstring' '{}' \; | xargs -n1 basename | xargs -n1 postsuper -d

Kategorie: Linux, CentOS


 
Telefon:
E-Mail:
Fax:
Web:

+43 2682 24080
office(at)epb.at
+43 2682 205 7700 9963
zum Kontaktformular