Hier habe ich mal ein Script geschrieben wie man die Bind Version von allen Nameserver einer Domain herausfindet.
#!/bin/bash
for ns in $(host -t ns $1 | awk '{print $4}'); do
echo -n "$ns: "
dig @$ns -c CH -t txt version.bind | grep "^version.bind." | grep TXT | awk '{print $5}'
done
Ausgabe:
#version-bind.sh istoph.de
ns01.caix.de.: "9.9.1-P3"
ns03.caix.de.: "9.9.2rc1"
Um das zu verhindern kann man in der /etc/bind/named.conf.options im Options teil die Variabele version sätzen.
options
{
version "unknown";
...
Danach liefert bind nur noch den String in der Versions-Variable aus:
#version-bind.sh istoph.de
ns01.caix.de.: "unknown"
ns03.caix.de.: "unknown"
Veröffentlicht am: 19.10.2012 von: CHR | Tags: bind | publiziert in: Linux, Security
Toll wenn auslaufende gpg keys einen daran erinnern wie lange man schon in der Firma ist. Heute ist der Key für unseren deb Pakete ausgelaufen. Da ich diesen mit als erstes Projekt in der Firma hatte freute ich mich heute wie ein Bär über folgende Fehlermeldung.
W: GPG error: http://repository.chr.istoph.de gpl Release: The following signatures were invalid: KEYEXPIRED 1348734885 KEYEXPIRED 1348734885 KEYEXPIRED 1348734885
server:~# gpg --list-keys
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
/root/.gnupg/pubring.gpg
------------------------
pub 1024D/F748C82F 2010-09-28 [expired: 2012-09-27]
uid Christoph Hueffelmann (repository.chr.istoph.de)
server:~# gpg --edit-key F748C82F
gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
pub 1024D/F748C82F created: 2010-09-28 expired: 2012-09-27 usage: SC
trust: ultimate validity: expired
sub 2048g/686FE6D2 created: 2010-09-28 expired: 2012-09-27 usage: E
[ expired] (1). Christoph Hueffelmann (repository.chr.istoph.de)
Command> key 1
pub 1024D/F748C82F created: 2010-09-28 expired: 2012-09-27 usage: SC
trust: ultimate validity: expired
sub* 2048g/686FE6D2 created: 2010-09-28 expired: 2012-09-27 usage: E
[ expired] (1). Christoph Hueffelmann (repository.chr.istoph.de)
Command> expire
Changing expiration time for a subkey.
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0) 2y
Key expires at Sat 27 Sep 2014 12:08:30 PM CEST
Is this correct? (y/N) y
pub 1024D/F748C82F created: 2010-09-28 expired: 2012-09-27 usage: SC
trust: ultimate validity: expired
sub* 2048g/686FE6D2 created: 2010-09-28 expired: 2014-09-27 usage: E
[ expired] (1). Christoph Hueffelmann (repository.chr.istoph.de)
Command> quit
Save changes? (y/N) y
Anschließend musst ich nur noch das gesamte repository neu bauen lassen um damit die signierten Dateien neu signiert wurden. Auf den Clients die auf das repository zugreifen muss der Key nicht geändert werden.
Veröffentlicht am: 27.09.2012 von: CHR | Tags: OpenPGP | publiziert in: Security
Veröffentlicht am: 03.09.2012 von: CHR | publiziert in: bash
Heute habe ich mal meinen alten SCSI CD Tower aus der Ecke gekramt, um mein CD Sammlung auf Platte zu ziehen. Nach einer reihe Kernel Module bauen wurden mir die Laufwerke /dev/sr0 - 6 zu Verfügung gestellt. Dafür habe dann ein Bash Script geschrieben womit ich die Daten von den CDs kopieren kann und nach dem kopieren die CDs ausgeworfen werden damit weitere eingelegt werden können.
#/bin/bash
space=/root/video
function copy () {
m=$1
save="$space/`ls -al $space | wc -l`"
mkdir $save
touch $m
mount /dev/$m /mnt/$m || echo "mount error $m"
rsync -avP /mnt/$m/ $save/ > $m
umount /mnt/$m
eject /dev/$m
rm $m
}
while true; do
for i in {0..6}; do
if [ ! -f "sr$i" ]; then
if dd if=/dev/sr$i bs=1 skip=32808 count=12 2>/dev/null ; then
echo "sr$i"
copy "sr$i" &
else
echo "no cd in sr$i"
fi
sleep 2
else
echo -n "."
fi
done
sleep 15
done
exit 0
Mit der etwas unüblichen abfrage dd if=/dev/sr$i bs=1 skip=32808 count=12 2>/dev/null ermittle ich ob eine CD eingelegt ist und bekomme in einem den CD Titel angezeigt. In der Funktion copy erstelle ich zuerst den Verzeichnis wohin die Dateien kopiert werden sollen. Mounte das CD Laufwerk und kopiere die Dateien dann mittels rsync. Zumschluss werden die CDs durch den Befehl eject /dev/srX wieder ausgeworfen.
Veröffentlicht am: 02.09.2012 von: CHR | publiziert in: bash, Linux
Gehen wir von folgenden Szenario aus. Wir wollen eine Funktion in Bash in den Hintergrund schreibe um den Ablauf zu Parallelisieren. In diesem Beispiel wird lediglich ein sleep ausgeführt.
#!/bin/bash
function background ()
{
#do somsing
sleep $1
}
for i in {1..100}; do
background $i &
done
Problem: Wir wollen aber maximal nur 10 Prozesse gleichzeitig laufen lassen. Dafür habe ich eine Funktion waiting geschrieben die solange wartet bis die Anzahl des übergebenen wertes erreicht ist. Für das Zählen habe ich Dateien verwendet da wenn man Variablen übergeben würde diese nicht in der for schleife zur Verfügung stehen würden.
#!/bin/bash
tmpd=`mktemp -d`
function waiting() {
while true; do
if [ `ls $tmpd | wc -l` -le "$1" ]; then
break
fi
sleep .5;
done
}
function background () {
touch $tmpd/$1
#do somsing
sleep $1
rm $tmpd/$1
}
for i in {1..100}; do
background $i &
waiting 10
done
waiting 0
rm -r $tmpd
Veröffentlicht am: 16.08.2012 von: CHR | publiziert in: bash