Archive for May, 2009

Linode Dynamic DNS Bash Script

Monday, May 11th, 2009

So Mark Walling was working on an ash script for his router running OpenWRT to update Linode's DNS Manager with his IP address. I liked the idea of a simple shell script to update without needing to install libraries for Perl or Python.  I took his script and tried to adapt it to get the DOMAINID and RESOURCEID using sed or awk.  Those utilities seem great for manipulating multiline files of text, but I wasn't getting anywhere trying to parse one line of JSON from wget.  So I used perl to extract the id numbers.  I believe OpenWRT has some sort of perl with limited functionality, so maybe this will work with that or at least be easily adapted.  This could also be easily modified to use curl instead of wget. I suspect someone out there will find this useful.

#!/bin/bash
#
# Script to update Linode's DNS Manager for a given name.
#

# Things you need to change.
APIKEY=$(cat ~/.linode-apikey)
LASTIP="/tmp/lastip"
DOMAIN="domain.com"
SOAEMAIL="hostmaster@domain.com"
STATUS="1"
RRTYPE="A"
RRNAME="home"
IFACE="eth0"

# Shouldn't need to change anything below here.

WGET="wget -qO - https://api.linode.com/api/"
NEWIP=$(ifconfig $IFACE | head -n2 | tail -n1 | cut -d: -f2 | cut -d' ' -f1)
test -e $LASTIP && OLDIP=$(cat $LASTIP) || OLDIP=""

if [ x"$OLDIP" = x"$NEWIP" ]; then
  logger "No IP address change detected. Keeping $NEWIP"
else
   DOMAINID=$($WGET --post-data "api_key=$APIKEY&action=domainList" | 
        perl -e 'if ( =~ /"DOMAIN":"'"$DOMAIN"'","DOMAINID":([0-9]+),/) { print $1; }')
   RESOURCEID=$($WGET --post-data "api_key=$APIKEY&action=domainResourceList&DomainID=$DOMAINID" | 
        perl -e 'if ( =~ /"RESOURCEID":([0-9]+),"DOMAINID":'"$DOMAINID"',"TYPE":"'"$RRTYPE"'","NAME":"'"$RRNAME"'"/) { print $1; }')
   $WGET --post-data "api_key=$APIKEY&action=domainResourceSave&ResourceID=$RESOURCEID&DomainID=$DOMAINID&Name=$RRNAME&Type=$RRTYPE&Target=$NEWIP"; echo
   $WGET --post-data "api_key=$APIKEY&action=domainSave&DomainID=$DOMAINID&Domain=$DOMAIN&Type=master&Status=$STATUS&SOA_Email=$SOAEMAIL"; echo
   echo $NEWIP > $LASTIP
   logger "Updated IP address to $NEWIP"
fi

RHEL Yum Dependency Failure

Friday, May 8th, 2009

It's been awhile since I've posted anything here. I have been quite busy lately and other things seem to take precedence. I have upgraded my Asterisk install and would like to write a post about some of the changes I've made on that front. Although the real reason I'm writing this post is because of a problem I ran into at work with yum under RHEL.

While doing the latest batch up updates, I ran into a dependency problem with kernel-headers and glibc-headers. Here is what I got when I tried yum update.

--> Running transaction check
---> Package kernel-headers.i386 0:2.6.18-128.1.10.el5 set to be updated
---> Package kernel-devel.i686 0:2.6.18-128.1.10.el5 set to be installed
--> Processing Dependency: kernel-headers for package: glibc-headers
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
---> Package kernel.i686 0:2.6.18-128.1.10.el5 set to be installed
--> Finished Dependency Resolution
glibc-headers-2.5-34.i386 from installed has depsolving problems
  --> Missing Dependency: kernel-headers >= 2.2.1 is needed by package glibc-headers-2.5-34.i386 (installed)
glibc-headers-2.5-34.i386 from installed has depsolving problems
  --> Missing Dependency: kernel-headers is needed by package glibc-headers-2.5-34.i386 (installed)
--> Running transaction check
---> Package kernel.i686 0:2.6.18-128.el5 set to be erased
--> Processing Dependency: kernel-headers for package: glibc-headers
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
---> Package kernel-devel.i686 0:2.6.18-128.el5 set to be erased
--> Finished Dependency Resolution
glibc-headers-2.5-34.i386 from installed has depsolving problems
  --> Missing Dependency: kernel-headers >= 2.2.1 is needed by package glibc-headers-2.5-34.i386 (installed)
glibc-headers-2.5-34.i386 from installed has depsolving problems
  --> Missing Dependency: kernel-headers is needed by package glibc-headers-2.5-34.i386 (installed)
Error: Missing Dependency: kernel-headers is needed by package glibc-headers-2.5-34.i386 (installed)
Error: Missing Dependency: kernel-headers >= 2.2.1 is needed by package glibc-headers-2.5-34.i386 (installed)

While googling parts of the error message, I came across a post on a Chinese website. The Google translator wasn't that helpful, but it seems that yum clean all will clear out all the local cached info and that fixes the problem.


css.php