+Linux, +FOSS, +Hurd, +Porting

CSSH but without X; tags=Debian, Linux, FOSS, HowTo
There are many ways to run some commands simultaneously on multiple
hosts like cssh or dsh. They come handy for example when you are
installing software updates on a set of hosts.
dsh is a rather simple comandline tool allowing to execute a command
over ssh on multiple hosts. However it doesn't allow any interactive
input -- so you can't look at the potentially upgrading packages and
press y to accept and you can't go through debconf promts or
similar.
This is solved by cssh which opens a XTerm for every host and a
input area that is broadcastet to all of them. this is working really
well -- you can execute your update on all hosts and still do
individual adjustments just as needed: switch focus from the
broadcasted input to one of the terminal windows and anything you type
just goes there.
Now cssh has a big disadvantage: it requires a running X server (and
doesn't do too well with a fullscreen windowmanager). Requiring X is
quite a blocker if you need to run that ssh multiplexer on a remote
host, for example if the firewalling doesn't allow direct
connections. Fortunately you can make tmux behave as we want -- in a
simple terminal:
First you need a script spawning the ssh sessions in separate tmux
panes and direct input to all of them -- here called
ssh-everywhere.sh (you could also write a tmux config I guess):
#/bin/sh
# ssh-everywhere.sh
for i in $HOSTS
do
tmux splitw "ssh $i"
tmux select-layout tiled
done
tmux set-window-option synchronize-panes on
Now start the whole thing:
tmux new 'exec sh ssh-everywhere.sh'
And be done.
Update
If you want to type in just one pane (on one host) you can do that as well: C-b : set-window-option synchronize-panes off
and moving to the right pane (C-b + Arrow keys)
-- Christoph Egger <christoph@coders-nemesis.eu> Sun, 20 Feb 2011 17:23:04 +0100
Trying GNU/Hurd; tags=Debian, HowTo, Hurd, Porting
So this is a collection of things I came about when trying to get a Debian GNU/Hurd virtual machine running with kvm. Most of it is properly documented if you manage to find that particular piece of information.
Kernel Version
Due to a bug in linux 2.6.37 and .38 hurd will only boot if you supply -no-kvm-irqchip which is not that easy if you are using libvirt. A wrapper `kvm` script in the PATH will do, as will using a 2.6.39 kernel.
sudo
sudo will hang before returning from executing some command. I'm now using screen and sudo -i which keeps you a working tty gets you root and hasn't caused mayor trouble yet
sshd
openssh-server won't come up complaining about missing PRNG – and indeed there's no /dev/{u,}random in the default install. fix is to install random-egd from ports.
-- Christoph Egger <christoph@coders-nemesis.eu> Fri, 06 May 2011 00:02:24 +0200
Marking all closed bug reports "read" in a Maildir; tags=Debian, FOSS, HowTo
#!/usr/bin/python
from btsutils.debbugs import debbugs
import mailbox
import re
import sys
mailbox = mailbox.Maildir(sys.argv[1], factory=False)
bts = debbugs()
for key in mailbox.keys():
message = mailbox[key]
if not 'S' in message.get_flags():
if message['X-Debian-PR-Message']:
try:
bugnr = message['X-Debian-PR-Message'].split()[1]
except IndexError:
continue
else:
test = re.search('Bug#(\d{6})', message['Subject'])
if test:
bugnr = test.group(0)[4:]
else:
continue
try:
bug = bts.get(bugnr)
except AttributeError:
print bugnr
continue
if bug.getStatus() == u'done':
message.set_flags(message.get_flags() + 'S')
mailbox[key] = message
mailbox.flush()
Run it like python cleanbugsmail.py ~/Maildir/.debian.bugs. Anyone
aware of a better solution?
-- Christoph Egger <christoph@coders-nemesis.eu> Sun, 12 Jun 2011 16:53:11 +0200