zone files eine IP ändern

Mal eben schnell in allen Zonefiles eine IP ändern und die serial Nummer updaten.

#!/bin/bash
for item in *; do 
  if [ -f $item ]; then 
    sed 's/'88.198.44.248'/'46.4.34.52'/g' $item > $item.tmp;
    if [ "$(md5sum $item | awk '{print $1}')" = "$(md5sum $item.tmp | awk '{print $1}')" ]; then 
      rm $item.tmp
    else
      sed "s/$(cat $item.tmp | grep 'serial' | awk '{print $1}')/2012040601/g" $item.tmp > $item
      rm $item.tmp
    fi   
  fi 
done

Das funktioniert natürlich nur solange wenn die Zonefiles noch nicht geupdatet wurden und die Serienummern mit ;sirial getakt sind.

Cannot register the hard disk because a hard disk already exists

Heute haben wir während einer Installation eine vdi Datei Coppiert. Lieder haben wir nicht daran gedacht das die VDI Dateien feste UUIDs zugeordnet sind. Das fürte bei einbinden der Platte zu folgenden Fehler:

VBoxManage: error: Cannot register the hard disk 'precise.vdi' {bbc079a9-ca5d-406d-a43f-435c995822e8} because a hard disk 'lucid.vdi' with UUID {bbc079a9-ca5d-406d-a43f-435c995822e8} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 210 of file VBoxManageDisk.cpp

Abhilfe schafft folgender befehl:
VBoxManage internalcommands sethduuid precise.vdi
UUID changed to: 5a3ecc9a-ea07-4d6f-9ff9-3437702df22b

Quelle: grahamrhay.wordpress.com

Sporadische Seitenladefehler durch Segmentation fault

Vergangene Woche war meine Blog immer wieder von ausfällen geplagt. Das komische war das es immer wieder in der gleichen WordPress Funktion call_user_func_array auftauchte.
Bei Debuggen verschob sich aber immer wieder der Ort wo der Fehler auftrat, ähnlich der Heisenbergsche Unschärferelation. Zudem trat der Fehler nur bei jedem vierten seiten Aufruf auf.

[notice] child pid 29729 exit signal Segmentation fault (11)
[notice] child pid 29856 exit signal Segmentation fault (11)
[notice] child pid 29888 exit signal Segmentation fault (11)

Im Endeffekt habe ich jetzt erst mal PHP und Apache ohne -threads* kompeliert.

tail -F für logrotate

Ich bin darauf aufmerksam gemacht worden das ich tail -F mit einem großen F schreibe. Das mach ich absichtlich, den diese Option bewirkt das das teil das Logfile auch lesen kann wenn es durch logrotate rotiert wird.

Hier der Auszug aus der Manpage:

-f, --follow[={name|descriptor}]
       output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent
-F     same as --follow=name --retry

tail -F color

Heute musste ich den ganzen Tag ein Logfile überwachen. Damit das nicht zu anstrengend wird und man Fehler nicht übersieht, habe ich das Logfile einfach eingefärbt.

tail -F file.log | awk '
   /FATAL/ {print "\033[31m" $0 "\033[39m"}
   /WARN/ {print "\033[33m" $0 "\033[39m"}
   /INFO/ {print "\033[32m" $0 "\033[39m"}
'