Notes about open source software, computers, other stuff.

Author: LCK (Page 11 of 14)

A bioinfomatician on the move...

Script to tunnel RDP connections through stepping stone server using SSH

In order to connect to the servers at work we need to connect through a stepping stone host (via SSH). Since some of the servers are MS Windows machines which can be managed via the Remote Desktop Protocol (RDP), this traffic needs to be tunneled over SSH as well.
I wrote the following bash script to automate setting up the tunnel. It sets some default variables and then looks for an available port between 1234 and 1254 (chosen completely arbitrarily) and uses it for the tunnel. Then it uses the rdesktop program to start the RDP connection.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash
#
# This script makes an ssh tunnel to a stepping stone server
# and uses it to start an rdesktop connection to the machine 
# given as the first argument of the script. 
#
# (C) L.C. Karssen
# $Id: winremote.sh,v 1.14 2010/02/10 13:03:08 lennart Exp $
#
 
# User-configurable variables
ssh_username=your_steppingstone_username_here
steppingstone=steppingstone.your_company.com
rdesktop_username=your_windows_username_here
rdesktop_domain=your_windows_domain_here
rdesktop_opts="-z -g 1024x768 -a 16"
rdesktop_port=3389 # This is the standard MS rdesktop port
 
 
# For ordinary users it should not be necessary to change anything below this line. 
# Some functions:
usage()
{
    cat <<EOF
Usage:
    $program [options] rdesktop_hostname 
 
Make a remote desktop connection through an SSH tunnel.
 
Options: 
    -h, --help                                   print this help message
    -s, --steppingstone steppingstone_hostname   set other stepping stone host
                                                   (default: $steppingstone)
    -t, --timeout sec                            set timeout (default: 1)
    -v, --verbose                                verbose output
     --version                                   print version
 
Note that some customisations need to be made in the first few lines of this 
script (e.g. user names and other defaults)
EOF
}
 
program=`basename $0`
 
# Command line option parsing. Shift all options 
verbose=
timeout=1
 
while [ $# -gt 0 ]
do 
    case $1 in
	-v | --verbose | -d | --debug ) 
	    verbose=true
	    ;;
	--version )
	    echo '$Revision: 1.14 $'
	    exit 0
	    ;;
	-t | --timeout ) 
	    shift
	    timeout="$1"
	   if [ $timeout -lt 1 ]; then
	       timeout=1
	   fi
	   if [ $verbose ]; then
	       echo "Timeout set to $timeout"
	   fi
	   ;;
	-s | --steppingstone ) 
	   shift
	   steppingstone="$1"
	   if [ $verbose ]; then
	       echo "Steppingstone server is $steppingstone"
	   fi
	   ;;
	-h | --help ) 
	   usage
	   exit 0
	   ;;
	-*) 
	   echo "$0: invalid option $1" >&2
 	   usage
	   exit 1
	   ;;
	*) 
	   break
	   ;;
    esac
    shift
done
 
# Server name (as seen on the steppingstone) that we want to connect to:
rdesktop_server=$1 
 
################### Config done, let's get to work ########################
 
# Simple usage description
if [ "$rdesktop_server" == "" ]; then
    echo "Error: No rdesktop host given" >&2
    usage
    exit 1
fi
 
# Find a free port on the local machine that we can use to connect through
min_port=1234
max_port=1254
used_ports=(`netstat -tan | awk '{print $4}' | grep 127.0.0.1 | awk -F: '{print $2}' | sort -g`)
if [ $verbose ]; then
    echo "Used ports are: ${used_ports[@]}"
fi
 
# In the next line we first print the $used_ports as an array, but with 
# each port on a single line. This is then piped to an awk script that 
# puts all the values in an array and subsequently walks through all ports 
# from $min_port to $max_port in order to find the first port that is not 
# in the array. This port is printed.
local_port=`printf "%i\n" ${used_ports[@]} | \
    awk -v minp=$min_port -v maxp=$max_port \
    '{ array[$1]=1 } END { for (i=minp; i<=maxp; i++) { if (i in array) continue; else { print i; break } } }'`
if [ "$local_port" == "" ]; then
    echo "Error: No ports free! Exiting..." >&2
    exit 2
fi
if [ $verbose ]; then
    echo "Selected port was: $local_port"
fi
 
# Create tunnel:
if [ $verbose ]; then
    echo "Creating SSH tunnel..."
fi
ssh_opts="-f -N -L"
ssh $ssh_opts $local_port:$rdesktop_server:$rdesktop_port \
    $ssh_username@$steppingstone 
 
# Allow the ssh tunnel to be established
sleep $timeout
 
# Abort if tunnel has not been established
pidof_ssh=`pgrep -f "ssh $ssh_opts $local_port"`
if [ "$pidof_ssh" == "" ]; then
    echo "Error: Timeout while establishing tunnel" >&2
    echo "Exiting..."
    exit 3
fi
 
# Make rdesktop connection
if [ $verbose ]; then
    echo "Opening Remote desktop connection to $rdesktop_server..."
fi
rdesktop $rdesktop_opts -u $rdesktop_username -p - \
    -d $rdesktop_domain localhost:$local_port
 
# Clean up tunnel
if [ $verbose ]; then
    echo "Cleaning up SSH tunnel with pid $pidof_ssh and local port $local_port"
fi
kill $pidof_ssh

Related Images:

Cloning Ubuntu virtual machines: some problems (and solutions)

Yesterday I set up a KVM virtual machine on my new Ubuntu 9.10 server. The VM also ran Ubuntu 9.10 server. In order to do some performance tests (what would be the speed up of having the VM’s disks on an LVM LV on the host, compared to having them in a file on the host) I used virt-clone to clone the machine:

virt-clone --connect=qemu:///system -o testldap -n testldap-lvm -f testldap-lvm/ubuntu-kvm/disk0.img

This clones the VM named testldap to testldap-lvm and put its disk file in the subdirectory testldap-lvm/ubuntu-kvm/. After that I still had to convert this image file to it’s location in an LV, but that’s not what this post is about.

As the machine is cloned, the MAC address of its virtual NIC is also changed. The ‘source’ VM had 52:54:00:f2:cc:40, the new VM was given 00:16:36:46:34:42. As I booted the new VM I noticed it wouldn’t come up as expected. I couldn’t reach it via the fixed IP that I had given the source VM (even though the source VM was shut down, of course). Closer inspection revealed that the interface name for the NIC in the new VM had changed. I vaguely remembered that Debian-derived distro’s do that: because they don’t want NIC name assignments (eth0, eth1, etc.) to change if a new network adapter is added, they tie a name to a MAC address. And, as noted, the MAC address had indeed changed in the cloning process.

The assignments between MAC and eth? name are recorded in the file /etc/udev/rules.d/70-persistent-net.rules. They are set by the script /lib/udev/write_net_rules, so I removed the execute permissions on that file. However, this was not a clean solution, since it resulted in an error on start up. I found that editing /lib/udev/rules.d/75-persistent-net-generator.rules is a far better solution. Adding the lines

# ignore KVM virtual interfaces
ENV{MATCHADDR}=="52:54:00:*", GOTO="persistent_net_generator_end"
# This seems to be the range used by Xen, but also by virt-clone
ENV{MATCHADDR}=="00:16:36:*", GOTO="persistent_net_generator_end"

seems to do the trick (don’t forget to remove the rules already added in /etc/udev/rules.d/70-persistent-net.rules). Make sure to add them after the lines

# read MAC address
ENV{MATCHADDR}="$attr{address}"

so that the variable MATCHADDR has a value. I documented this solution in the Ubuntu bug report that seemed the most appropriate as well.

This solved one problem. Then the next problem reared its ugly head: Both the source VM and the clone refused to finish their boot process, they kept hanging on the NFS mounts defined in /etc/fstab. The only option mountall gave was to enter the root password (after pressing ESC) or type Crtl-D to continue. Doing the latter resulted in nothing but an infinite wait. In an Ubuntu bug report I found that using DHCP for the network interface would solve the problem. And, indeed it did. However, since I want static IP addresses for my servers this was not a solution that I liked. Much to my surprise the NFS mounts worked perfectly after changing the interface (in /etc/network/interfaces) back to static. I don’t know why, but on both VMs I set the configuration for eth0 from static to dhcp, rebooted, changed it back to static and rebooted again to find the problem solved… Strange!

Update 2009-12-18:
As it turns out, the solution to the mount problem doesn’t always work. I tried it again, but now it failed to work after switchting back from DHCP to a static IP. I guess it has something to do with the lease time of the IP, because in the case I described above there was a night between using the DHCP IP and turning static back on. So somewhere, something needs to time out before switching back from DHCP to static IPs works again.

Related Images:

A LaTeX example environment

Edit: Since the LaTeX beamer class already contains an example environment I renamed mine to latexample

During my stay at the National University of Rwanda I gave a LaTeX course to the Master’s students of the department of mathematics. For this course I wrote my own lecture notes (which I will put up on the web some other time), and already quite early in the process I found out I wanted an environment or something similar that would allow me to split the page in two and display some LaTeX code in the first column and the resulting output in the second column. It took me some time to figure it out (and it’s far from perfect and/or fool-proof), but it does the trick for most simple examples I wanted to show.

So, without further ado, here’s the code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
\usepackage[dvipsnames,pdftex]{xcolor}
\definecolor{lstbgcolor}{rgb}{0.9,0.9,0.9} 
 
\usepackage{listings}
\lstloadlanguages{[LaTeX]TeX}
 
\usepackage{fancyvrb}
 
\newenvironment{latexample}[1][language={[LaTeX]TeX}]
{\lstset{backgroundcolor=\color{lstbgcolor},
    keywordstyle=\color[rgb]{0,0,1},
    commentstyle=\color[rgb]{0.133,0.545,0.133},
    stringstyle=\color[rgb]{0.627,0.126,0.941},
    breaklines=true,
    prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
    frame=single,
    language={[LaTeX]TeX},
    basicstyle=\footnotesize\ttfamily, #1}
  \VerbatimEnvironment\begin{VerbatimOut}{latexample.verb.out}}
  {\end{VerbatimOut}\noindent
  \begin{minipage}{0.5\linewidth}
    \lstinputlisting[]{latexample.verb.out}%
  \end{minipage}\qquad
  \begin{minipage}{0.4\linewidth}
    \input{latexample.verb.out}
  \end{minipage}\\
}

In the first seven lines the necessary packages are loaded, the other lines make up the definition of the environment. In line 9 the environment is given its name and we define one argument. In lines 10 to 18 we define the options for the listing environment. Then, in line 19 we use \VerbatimEnvironment followed by the VerbatimOut environment from the fancyvrb package to write everything that’s inside the environment into a file called latexample.verb.out. This concludes the actions that are done at the opening of the example environment. When the example environment is closed lines 20 to 26 are executed. The VerbatimOut is closed and then we start setting up to minipages. The left one contains the text we put into the example environment as an lstlisting read from the latexample.verb.out file (line 22), the right one contains the rendered text by using LaTeX’s \input command (line 25).

This is what it looks like:
latexexample-table.png
This example was made with the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
\begin{verbatim}
\begin{latexample}
  ... LaTeX code here ...
\end{latexample}
\end{verbatim}
 
A simple demonstration of the \verb|tabular| environment can be given like this:
\begin{latexample}[]
\begin{tabular}{|c|c|c|}
  \hline
  \multicolumn{3}{|c|}{AAA} \\
  \hline
  123 & \multicolumn{2}{c|}{456}\\
  \hline
  BBB & CCC & DDD \\
  \hline
\end{tabular}
\end{latexample}

In the first seven lines the necessary packages are loaded, the other lines make up the definition of the environment. In line 9 the environment is given its name and we define one argument. In lines 10 to 18 we define the options for the listing environment. Then, in line 19 we use \VerbatimEnvironment followed by the VerbatimOut environment from the fancyvrb package to write everything that’s inside the environment into a file called latexample.verb.out. This concludes that actions that are done before the text is rendered. When the environment is closed lines 20 to 26 are executed. The VerbatimOut is closed and then we start setting up to minipages. The left one contains the text we put into the example environment as an lstlisting read from the latexample.verb.out file (line 22), the right one contains the rendered text by using LaTeX’s \input command (line 25).

The environment accepts an optional argument. This argument can be one or more options that are passed on to the <>lstset option list for the lstlisting environment. By default it is set to language={[LaTeX]TeX}. For some reason that I haven’t been able to identify yet, the argument must be given, even if empty (see the example above, which starts the evironment with \begin{latexample}[]. The two [] give the empty option list. This is the reason why in line 17 of the definition we set language={[LaTeX]TeX}, even though I also did this in the environment definition in line 9. I wanted to make the argument optional, but haven’t gotten it to work that way.

So, as mentioned earlier, this environment is far from perfect. Things that involve counters (like \chapter and other sectioning commands, but also numbered equations and figures) don’t work in the sense that the numbering in the example is not separate from the rest of the document. So if you put a numbered equation in the example the equations following the example will have their numbers increased by one. I’m working on a slightly more complex definition of the latexample environment that closes that bug.

Related Images:

Fixing sound problem in Ubuntu 9.04

Lately I had some trouble with sound on two Ubuntu 9.04 machines. After waking from hibernation sound would not work, or only work for a short time. After restarting alsa (/etc/init.d/alsa-utils restart) and pulseaudio (/etc/init.d/pulseaudio restart) I checked all volume settings with alsamixer, but nothing seemed out of the ordinary. After some more fiddling I found out that simply starting pulseaudio from the command line was enough to get my sound back again.

🙂

Related Images:

Using tikz to generate an abstract box in LaTeX

LaTeX is a document preparation system that I used for most texts I’ve written since my Master’s thesis, the largest project being my PhD thesis.

Recently a friend of mine asked me if I could help him creating a boxed abstract. Normally a \framebox{} would have done the trick, but he wanted the word “Abstract” in the top left corner of the box. I tried a few variations on his start, but in the end I realised I could try my newly developped tikz skills on it. Together with Google I came up with the following solution that loads the tikz package and then defines the \boxabstract{} command.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  \usepackage{tikz}
  \usetikzlibrary{shapes,shadows}
  \tikzstyle{abstractbox} = [draw=black, fill=white, rectangle, 
  inner sep=10pt, style=rounded corners, drop shadow={fill=black,
  opacity=1}]
  \tikzstyle{abstracttitle} =[fill=white]
 
  \newcommand{\boxabstract}[2][fill=white]{
    \begin{center}
      \begin{tikzpicture}
        \node [abstractbox, #1] (box)
        {\begin{minipage}{0.80\linewidth}
%            \setlength{\parindent}{2mm}
            \footnotesize #2
          \end{minipage}};
        \node[abstracttitle, right=10pt] at (box.north west) {Abstract};
      \end{tikzpicture}
    \end{center}
  }

The resulting PDF looks like this:

Note that since the actual text is set in a minipage normal indentation is not set. This can be circumvented by uncommenting the line that sets the \parindent.

Related Images:

Verandering

En na de vorige post begint dit blog aan een nieuwe koers. De reiziger is thuis, om Boudewijn de Groot maar eens te citeren, dus tijd voor verandering. De verandering houdt in dat ik op deze plek over andere dingen ga bloggen. Waarschijnlijk computer-, techniek- en muziekgerelateerde zaken, wellicht niet direct interessant voor de mensen die hier hun emailadres hadden opgegeven om op de hoogte te blijven van mijn Afrikatijd. Zij kunnen nu afhaken (mocht het niet lukken om je emailadres af te melden, stuur dan gerust een mailtje, dan kijk ik er even naar). Een andere verandering is die van taal. In principe ga ik nu over naar het Engels om mijn hersenspinsels ook toegankelijk te maken voor de rest van de wereld.

Hopelijk blijven er mensen lezen!

Related Images:

Uganda en het einde

Jullie hadden nog wat van me tegoed: het laatste deel van mijn heldenepos over de avonturen in centraal Afrika.

Na ons gorilla-avontuur op de flanken van de vulkanen zijn we naar Kigali gereisd om daar een dagje bij te komen van het inspannende avontuur. En zo vertrokken we, een dag later dan gepland, op vrijdag 3 augustus vertrokken naar Uganda. Met de VIP bus. Een dikke acht uur over een soms goede, maar regelmatig slechte weg richting Kampala. Na ruim een uurtje kwamen we aan bij de Rwandese-Ugandese grens. Een verademing want twee uur in de rij staan. Dat was lekker, want m’n benen konden eindelijk weer even gestrekt worden, en je had even rust aan je kop. Want in VIP bussen hebben ze video. Met fantastische Ugandese rap, of erger nog, gospels… Kortom, hel. Zelfs m’n oordopjes konden het geluid niet onderdrukken, daarvoor houden ze teveel van oehoerend hard.

Enfin, de aankomst in Kampala was fantastisch. Wat een heerlijke grote stad was dat na Butare en Kigali. Een verademing. Behalve letterlijk dan, want dan valt je ook op dat het verkeer in Kigali niet eens zo heel erg verstopt zit. En dat het anti-plastic-zakken-beleid en het maandelijkse verplichte gemeenschapswerk (iedereen moet z’n straat schoonmaken of ander werk doen voor de gemeenschap) in Rwanda z’n vruchten afwerpt. Maar toch, het was heerlijk om de veelheid aan hoge gebouwen en winkels te aanschouwen. Een mens mist de consumptiemaatschappij soms best :-).
Na wat omzwervingen kwamen we uiteindelijk bij een hostel uit dat nog wel plek had en ik vond het prima. Even zitten en bijkomen. En het had wat weg van een camping met een wat groot uitgevallen kantine, dus voor mij perfect voor het vakantiegevoel.

Zaterdag hebben we uitgerust en lekker gegeten bij een Italiaan. En zondag kwam de klapper. Raften op de Nijl bij het plaatsje Jinja, waar de Nijl uit het Victoriameer stroomt. Wat een heerlijke dag! Lekker veel stroomversnellingen en fantastisch weer. Adrift had het perfect geregeld. We werden opgehaald en weer thuisgebracht en na afloop was er een BBQtje met wat bier om weer op krachten te komen.

De drie dagen daarop hadden we een safari geboekt naar Murchison Falls National Park. Met een busje, een jeep, twee chauffeurs, vier Britten van mijn leeftijd en een gezin van zes Nederlanders (ja, die zijn er meer) gingen we op pad. Ditmaal over de beste weg die ik in heel Afrika gezien heb. Lang, recht, en onlangs geasfalteerd. Een genot!
Het middagprogramma bestond uit een tochtje naar de Murchison Falls, alwaar de Nijl zich door een zes meter brede kloof wringt. Erg spectaculair! En toen naar het basiskamp. Met bar! En ‘s avonds werd er lekker voor ons gekookt waarna we moe in ons tentje (!) kropen, maar niet voordat we even naar de wrattenzwijnen hadden gekeken die gezellig het terrein op waren gewandeld op zoek naar restjes.
De volgende ochtend vroeg op voor een game drive. Leuke beestjes gezien! Olifanten, giraffen, apen, hertjes in allerlei soorten en maten en zelfs twee leeuwinnen op jacht. Alleen geen zebra’s niet, die hadden ze niet. Na een lekker lunch zijn we weer vertrokken, ditmaal voor een cruise op de Nijl. Langs hippo’s en krokodillen op naar Murchison Falls, maar nu dan van onderaf gezien. Nou ja, onderaf, je blijft er toch nog een behoorlijk stuk vandaan. Ik vermoed dat ons bootje niet zo tegen de stroming was opgewassen en wellicht wilden ze ook niet het risico lopen op een botsing met rotsen. Of erachter komen dat keren in de kloof wat moeilijk is.
Woensdag, de laatste dag van de safari, begon weer met een heerlijk ontbijt waarna we naar het begin van het park reden, waar een bos is met chimpansees. Ons gorilla-avontuur indachtig waren we ietwat huiverig, maar de bergen waren lang niet zo hoog. Eigenlijk gewoon heuveltjes, dus dat viel goed mee. Wel weer een wandeling van een uur of drie, dus we waren desalniettemin blij om het weer gered te hebben. Na een wederom goede lunch (onze chauffeuse was een fantastische kokin!) vertrokken we weer richting Kampala. Daar alles klaar gemaakt voor de terugreis naar Kigali. Weer met de bus, weer klereherrie (maar beter dan de heenweg, geen gospel maar Nigeriaanse soaps). Donderdagavond kwamen we moe maar erg voldaan weer in Kigali aan.

Vrijdag de 10e zijn we, na wat boodschappen te hebben gedaan bij La Galette, weer met de Volcano bus naar Butare gereden. Een heerlijke thuiskomst. De Texaan en de Pakistaan hadden de boel nog redelijk op orde, hoewel ze me wel gemist hadden :-). En de Koreaan? Wat hij ervan vond weet niemand.

De volgende dag had ik m’n afscheidsfeestje gepland, maar eerst moesten we ‘s ochtends nog even naar de bruiloft van Alice, een collega van mij bij de Research Commissie. We hadden ervoor gekozen om naar de bruidsschatceremonie te gaan omdat dat toch wel heel anders is dan bij ons. De twee families zitten tegenover elkaar en er wordt breed uitgemeten hoe goed de familie van de bruid wel is en dat de vader van de bruidegom dus over de brug moet komen. Er gaan wat flessen whisky richting de vader van de bruid en er wordt veel gelachen. Even later mogen ook andere mannen van de families zich ermee bemoeien en worden er wat oude koeien uit de sloot gehaald over hoe leden van de ene familie leden uit de andere al dan niet onjuist hebben bejegend. Maar alles onder het genot van Fanta en veel gelach. Uiteindelijk komt er zelfs even een echte koe om de hoek kijken en wordt er een traditionele dans uitgevoerd. De ‘herders’ komen nog een verhaal vertellen (of zoiets) en dan komt eindelijk de bruid naar buiten. En dan is er champagne! Voor het bruidspaar, welteverstaan.
Daarna zijn we weggegaan, het liep al tegen de middag en er moest nog ingekocht worden voor het feest. Uiteindelijk hadden we mooi alles op tijd klaar en kwamen de eerste mensen binnendruppelen. Helaas was, geheel in Rwandese stijl, de kok van Chez Gicongoro nog niet aan het maken van de brochettes toegekomen, toen mijn huisgenoten daar aankwamen om ze op te halen. Dus dat duurde wat langer, maar het mocht de pret niet drukken, het werd toch nog een gezellige avond!

De week die daarop volgde stond in het teken van achter m’n laatste geld aanzitten, nog wat bespreken en een borrel met het hoofd van Natuurkunden en een etentje bij m’n baas van de research commission. En Lean mocht mooi ‘de vrouw van’ spelen :-). Uiteindelijk is het niet gelukt om m’n cheque op tijd te krijgen, maar gelukkig vloog de Texaan toch via Amsterdam, dus met een handgeschreven machtiging van mij is het hem een maandje later toch gelukt om de dollars te cashen. Toppie!

En zo kwam er op donderdag 17 juli dan toch een einde aan een avontuurlijk half jaar. Ik ben ontzettend blij dat ik het gedaan heb. Ik heb het, ondanks sommige dipjes, vreselijk naar m’n zin gehad. En wie weet ga ik volgend jaar nog wel even terug voor een maandje. Dat aanbod heb ik in elk geval op zak!

Bedankt voor al jullie steun en reacties!

Len.

Related Images:

Weer in Kenya

Na ruim zes maanden zit ik weer in de transfer lounge op het vliegveld van Nairobi. Om 5:45 lokale tijd aangekomen en om 11:55 vertrekt mijn vlucht naar Londen. Lean is rond 6:15 aangekomen en is rond 8:40 vertrokken. Direct naar Amsterdam. Ze heeft duidelijk een veel betere vlucht :-(. Nou ja, niks aan te doen. Als alles goed gaat stap ik rond 22:30 op Schiphol uit het vliegtuig. Dan zit dit avontuur er weer op. Ergens ook wel weer fijn :-). Lekker in je eigen bed slapen, een bed waar je wel in de lengte in past en waar je niet halverwege de nacht naar de andere kant moet rollen om niet teveel op de planken te liggen. Maar ook: weer zelf schoonmaken en wassen. En geen sigaartje met whiskey op de veranda meer. Of lekkere brochettes met goeie frieten en een koud biertje. Wel weer lekkere vleeswaren! En zo kan ik nog wel even doorgaan natuurlijk.

De afgelopen weken is het op dit weblog behoorlijk stil geweest. Dat kwam omdat op 24 juni Lean is aangekomen voor drie weekjes vakantie. Heerlijk! We hebben een autootje gehuurd (een dikke vette witte Toyota Land Cruiser eigenlijk). Daarmee zijn we van Kigali naar Butare gereden, hebben we spulletjes gedumpt (en van mij weer opgepikt) om vervolgens op een twee weken durende tocht door Rwanda en Oeganda te gaan.

Vrijdags zijn we over de nieuwe weg van Nyanza naar Kibuye gegaan, daar twee nachtjes gebleven en van het Kivumeer genoten. Daarna over een onverharde weg naar Gisenyi. Ook daar weer twee nachtjes doogebracht. Helaas hebben we toen wat buien gehad, terwijl we daar lekker in Praradis Malahide zaten, een klein hotelletje met strand.
Op de 30ste hoefde we alleen van Gisenyi naar Ruhengeri te rijden (een uurtje, misschien anderhalf), dus besloten we een omweggetje te maken door halverwege richting het zuiden (Gitarama) te gaan. De weg begon gewoon verhard maar werd halverwege zo slecht dat zo’n Land Cruiser een heel goed idee bleek. door de regen van de dagen ervoor was er ook hier en daar nog wat blubber om doorheen te crossen, dus lol genoeg! Halverwege die weg wilden we de rivier over om vervolgens weer noordwaards te rijden en zo in Ruhengeri uit te komen. Ondanks wat rondvragen hebben we de juiste brug niet kunnen vinden en omdat we toch echt in Ruhengeri moesten komen in verband met de gorilla-zoektocht op de 1e juli moesten we daar echt wel die avond aankomen. Kortom, dan maar de weg blijven volgen en via Gitarama en Kigali alsnog naar het noorden. Gelukkig werd de weg voor Gitarama al verhard, ook die was net aangelegd. Kun je ineens weer supersnel rijden. Na Kigali weer een bui op ons dak gekregen, maar ditmaal was de enige werkende ruitenwisser (die aan de bestuurderskant) ook stuk. Behoorlijk lastig en spannend, want de kwaliteit van dat traject is niet denderend. Of eigenlijk: het dendert behoorlijk vanwege de vele gaten in het asfalt. Moe en hongerig rond 19:30 in Ruihengeri aangekomen, snel wat gaan eten met een van de Peace Corps meiden die ik daar kende en toen snel bedje in. De gorillas eisten dat we om 5:45 op stonden.

De tocht naar de gorillas was ‘bijzonder’. Bijzonder leuk achteraf, maar bijzonder uitdagend op het moment zelve. Jong, sterk en optimistisch als we zijn wilden we wel naar de verst gelegen groep, die had namelijk de meeste apies. En bigger is better, niet?! Dat hebben we geweten. Onze reisboekies spraken over een uur behoorlijk stijl klimmen, en daarna een a twee uur door het oerwoud. Dat hebben we geweten. Meer dan vijf uur de berg op werd het uiteindelijk. Verschillende nesten gevonden onderweg, maar de apen waren steeds weg. Verder de berg op. Uiteindelijk, nadat we beiden een tijdje door de drager de berg op getrokken waren (ik met vermoedelijk hoogteziekte, Lean had eerder voornamelijk moeite met het tempo), hebben we ze rond een uur of twee bereikt. Ik had de eerste 20 minuten nodig om bij te komen, even zitten, adem happen. Gelukkig begon tegen die tijd het pilletje tegen hoogteziekte te werken, dus kon ik de rest van het uur wel lekker meegenieten van rondrennende, uit bomen vallende en planten etende gorillas van allerlei maten. Wacht maar tot je de foto’s en video’s ziet :-)!
En toen, rond drieën als een haas die berg weer af. Voor Lean wel moeilijk, haar enkel was nog niet geheel hersteld van een val in Zuid-Amerika. Voor mij heerlijk, ademen ging steeds beter, mijn iets verrekte knieband mocht niet meer deren, hoewel ik op het laatste traject door het bamboebos behoorlijk wat weg had van Herr Flick van de gestapo. Uiteindelijk net toen de laatste zonnestraal achter de vulkanen verdween stapten we uit het bos. Dat was rond 18:30. Daarna nog even door wat akkers lopen/strompelen naar de auto. Maar dat was niet onze eigen auto, want we hadden een andere route omlaag genomen. Dus nog weer een klein uurtje achter in een pick-up met de rangers richting onze startplaats. Uiteindelijk waren we rond 20:30-21:00 weer in een hotelletje in Ruhengeri. Van ons originele plan om nog dezelfde dag naar Kigali terug te rijden kwam natuurlijk niks meer. Douchen, eten en slapen. Uitgeteld!

En dan nu, lieve kijkbuiskinderen, tijd dat ik eens bij mijn gate ga kijken. Het Oegandaverhaal komt later.

Fijna dag!

Related Images:

Hoe Raymond aan z’n einde kwam…

Raymond was de nieuwste inwoner van “Chez Mzungu”. Hij kwam woensdagmiddag aan onder de hoede van Israel. Eerst was ‘ie wat versuft, maar al snel ging het beter met ‘m. Een boterham en wat drinken later was ‘ie weer aanspreekbaar. Israel en ik hebben toen maar snel een slaapplaats voor ‘m in elkaar geflansd. Het was maar voor één nachtje, gelukkig, want de volgende ochtend om 4:50 stond Raymond de buurt al bij elkaar te schreeuwen. En dat hield eigenlijk niet meer op. Donderdagmiddag is ‘ie heengegaan, en dat hebben we ‘s avonds met vrienden gevierd (daar ging m’n laatste Belgische bier)!

In de tijd dat Claudio de Zwitser nog hier woonde hadden we al eens het plan opgevat om zelf een kip te slachten, want kippenvlees is hier niet zomaar voorradig in de supermarkt. Maar goed, gebrek aan tijd, gebrek aan kennis (geen van ons had eerder een kip geslacht en zelfs Israel niet) leidden tot uitstel. Toen de Karssentjes op visite waren kwam het plan nogmaals boven tafel, maar ook toen hadden we er geen tijd voor.

En nu, een maand later blijken zowel de Texaan als de Pakistaan eerder kippen (en meer) geslacht te hebben, dus was het plan snel gemaakt. Donderdagavond zou er Pakistaanse kip gekookt worden. Dus Israel en de Pakistaan woensdag naar de markt voor een kip. ‘t Werd een behoorlijk grote haan. Toen Israel thuiskwam hebben we achter het huis een provisorisch hok gemaakt met wat oud spaanplaat. Schoteltje water erin, stukjes brood en klaar was ‘ie. Op weg naar de uni na de lunch vertelde ik de Koreaan over de plannen. Hij vond het een goed idee. Maar, de haan moest Liesje Raymond heten, naar z’n baas. Kon ‘ie mooi z’n frustraties uiten. Zo gezegd, zo gedaan.

Donderdagochtend was de haan zeker niet suf meer. Om 4:50 werd ik de eerste keer wakker van z’n gekraai en dat is eigenlijk zo doorgegaan tot de beide slagers ‘m om 15:30 omlegden. Best een ervaring, zo’n beest slachten. En de twee heren waren ook weer niet zo ervaren, ‘t was voor beiden al weer even geleden, maar gelukkig was onze nieuwe tuinman/nachtwaker/portier er bij. Hij had het duidelijk vaker gedaan, en zo werd het een groepsgebeuren van heb ik jou daar. Alle bewoners van “Chez Mzungu” waren aanwezig, inclusief de Koreaan natuurlijk.

‘s Avonds met wat vrienden lekker Pakistaanse kip met rijst gegeten. De haan was wat taai, maar dat mocht de pret niet drukken. Kortom, ook als deze kok weg is, zal “Chez Mzungu” nog wel even doordraaien. Slechts de menukaart zal wat veranderen.

Related Images:

Graceland

Lekker op tijd thuis, tonic met citroen, Paul Simons Graceland op de achtergrond en kijken naar African skies. Even terug naar Afrika in de jaren tachtig…

Kortom, het is weer eens een mooie dag in dit mooie land. Daar komt bij dat we sinds vanochtend een nieuwe nachtwaker hebben. Eentje met minder entertainment dan de vorige, dat wel. Maar ook een die z’n werk wel doet (vooralsnog). Dus geen gesalueer meer als we binnenkomen. Geen gedans op de veranda. Maar ook geen keiharde radio (omdat de volumeknop stuk was), en geen gedonder met weggaan zonder toestemming. We hebben er alle vertrouwen in!

Vanavond weer lekker eten bij Chez Gikongoro (de Chinees).

Related Images:

« Older posts Newer posts »

© 2025 Lennart's weblog

Theme by Anders NorénUp ↑