my half-arsed attempt at blogging
software
apt-listbugs and suite-wide scripted upgrades
Nov 28th
Having finally got fed up with logging in, individually, to upgrade each of the no2id machines and jails, a bit ago, I decided to write a script to do the ‘hard work’ for me.
This worked fine, until today, when I noticed apt-listbugs complaining, and causing the script to fail to dist-upgrade.
Not a problem, thought I. I’m sure others have had this issue too. Being lazy, I thought first point of call would be the internets. I’d have thought something like:
"DEBIAN_FRONTEND=noninteractive" "apt-listbugs"
might have done the trick. It didn’t (that I could find).
So I went back to doing what a lot of the new-breed of ‘devops’ fail to do, and what I’m quite hypocritical of; looking at the manpage.
The manpage provides us with this gem:
ENVIRONMENT VARIABLES
o APT_LISTBUGS_FRONTEND If this variable is set to “none”
apt-listbugs will not execute at all, this might be useful if
you would like to script the use of a program that calls
apt-listbugs.
So there we go.
for M in $MACHINES
do
echo "Connecting to ${M}.no2id.net"
- ssh root@${M}.no2id.net 'export TERM=xterm; export DEBIAN_FRONTEND=noninteractive; apt-get update && echo "" && echo "" && echo "This is "'${M}'".no2id.net" && echo "" && echo "" && apt-get dist-upgrade'
+ ssh root@${M}.no2id.net 'export TERM=xterm; export DEBIAN_FRONTEND=noninteractive; export APT_LISTBUGS_FRONTEND=none; apt-get update && echo "" && echo "" && echo "This is "'${M}'".no2id.net" && echo "" && echo "" && apt-get dist-upgrade'
done
hopefully, this will help others, whose first port of call is the internets, and not manpages.
You may, however be sensible — and have had the time to roll out Puppet (ugh, when did they change their website! Why‽) or Chef though.
arpinfo
May 20th
Ever wanted to know who the OEM/Supplier/Manufacturer of network devices attached to a machine were?
I did. And couldn’t see anyone else’s script to steal, so here’s a really ugly way to do it
# arpinfo:
# pull hardware info from the arp() table
#
# Copyright (c) 2010 Adam McGreggor. Some rights reserved.
# Email:
#
# $Id:$
#
WEBSOURCE=http://standards.ieee.org/regauth/oui/oui.txt
DOC=/usr/local/doc/oui.txt
curl --silent ${WEBSOURCE} -o "${DOC}"
arp | awk '{print $3}' | awk -F: '{print $1"-"$2"-"$3}' | while read ARP
do
grep $ARP ${DOC}
done
arp
Works for me… although it could do with a tidy-up. As a quick and dirty thing, mind…
Firefox Extensions
Jan 10th
Thought this might double up as a note of the firefox extensions I currently have installed — I’ve tried getting this to script, but, the source file isn’t something I’m over-familiar with, and getting fields to match-up ain’t happening, due to my crapness.
Anyhow, I would appear to have these firefox extensions installed:
- Adblock Plus
- AutoPager
- BetterFlickr
- Better YouTube
- Delicious Bookmarks
- DownloadHelper
- Echofon
- Extended Statusbar
- Fast Video Downloader (with SearchMenu)
- Firebug
- Firefox (default)
- Firefox (en-GB)
- Flagfox
- Flashblock
- Gmail Manager
- Greasefire
- Greasemonkey
- Image Download
- Image Zoom
- Inline Code Finder for Firebug
- is.gd Creator
- JavaScript Options
- keyconfig
- Magic’s Video Downloader
- oldbar
- Password Exporter
- Save Image in Folder [sic]
- ShowIP
- SkipScreen
- TinyUrl Creator
- Ubuntu Firefox Modificiations
- URL Fixer
- VMware Remote Console Plug-In
- Xulrunner (en-GB)
- YesScript
A few of those don’t have links I can identify from the URI.
Want some code that vaguely does this for you?
#!/bin/sh
#
# ffexts:
# list firefox extensions: names and URIs for download/homepage
#
# Copyright (c) 2010 Adam McGreggor. Some rights reserved.
# Email: <adam@amyl.org.uk> Web: <http://blog.amyl.org.uk>
#
# $Id: ffexts 119 2010-01-10 00:38:04Z adam $
#
set -e
MOZDIR=~/.mozilla/firefox
PROFDIR=`ls -lha ${MOZDIR} | grep default | awk '{print $NF}'`
FILE=extensions.rdf
INFILE=${MOZDIR}/${PROFDIR}/${FILE}
OF=~/tmp/ffexts
OUTFILE=~/pseudohome/nas-docs/firefox-extensions-$(date '+%Y%m%d')
# check for existing outfile, as we'll be
# appending; if so, zap it
if [ -e ${OUTFILE} ]; then
rm ${OUTFILE}
fi
# grab the interesting bits from the RDF file
for K in name homepageURL
do
# nice fix-up, eh?
grep "NS1:${K}" ${INFILE} | sed -e "s/NS1:${K}=//" \
-e 's/"//g' -e 's/>//' \
-e 's/^[ \t]*//' | sort | uniq > ${OF}-${K}
# using wc here is entirely optional ![]()
wc -l ${OF}-${K}
# append
cat ${OF}-${K} >> ${OUTFILE}
done
