aka Cameron Kerr
Home | News | Documents | Programs | Packages | Random Tips | Links | Contact


Most, if not all of these programs, are shell scripts. If you just click on the links, they will likely open in your browser. If you want to download, please make sure you use the Download Link Target feature for your Browser.

Slackware Linux specific

smprms .gz (<1k)
Bourne Shell (sh) and sed script for generating a script to recover all of the filesystem permissions listed in the MANIFEST.gz file. Useful for restoring permissions after a botched restore from backup. Be sure to check permissions that are not "out of box"
Sample usage
zcat /cdrom/slackware/MANIFEST.gz | smprms > /tmp/
less /tmp/
su -
(if not root already)
sh /tmp/
Last Updated
22 August 2001
testldddeps .gz (<1k)
Bourne Shell (sh) script for finding out what libraries are missing in your system.

The output list of files will be colour-coded. Green for those that do not have missing libraries, and Red for any that have libraries that are "=> not found". Currently, it writes out those missing libraries to /tmp/lddep.list, but will one day look through MANIFEST.gz to find out what package they are in.

Sample usage
find / -type f -perm +111 -xdev -print | testldddeps
Last Updated
13th July 2001
whichpkg .gz (<1k)
sh and awk script for answering the question "Which Slackware Linux package(s) provide the file XXX?". This question is most often asked when a library or supporting program is missing. You must be able to point to the MANIFEST.gz file on your Slackware Linux installation media (or the decompressed version).
Sample usage
whichpkg /cdrom/slakware/MANIFEST.gz /lib/libcrypt
Last Updated
17th July 2001

Made for Linux


X-QuotePercent .gz (<1k)

I get sick of people in UseNet who don't strip out irrelevant quotes in their followups, it wastes bandwidth and space, and makes a post harder to read. Sometimes I wish I could filter out such posts, or mark them in some way in order to some auto-snips.

So I made this program. At the moment, its not entirely useful, as it needs to hook into the news-server. I use leafnode, and I still need to make it leafnode apply this program to each post as it receives each article.

This is the program what writes the X-QuotePercent header into an article. The contents of the header is the percentage of quoted text in the article. It does not could quoted or original blank lines. A patch for leafnode hookins should be available soon.

Leafnode Newsgroups Statistics

ngstats .gz (2k)

Last updated: 8 April 2002 20:10

ngstats will rip through the articles stored by the leafnode NNTP server on the local host. Currently, it gives information about the following:

  • Top 10 Posters
  • Top 10 Mailers (database continually refined)
  • Number of Posts and Posters
  • The number of days the results span across.
  • Min, Avg, Max number of lines in posts.
  • Ratio of New/Quoted text (and blank lines).
  • Distribution of number of newsgroups posted to.
  • Number of posts which have folllowup-to set.

I haven't tried it with any other news servers, but as long as it stores articles in individual files, it should work (with no or very litte change).

Also, users should note that as new User-Agents are seen, the script will need to be updated to take account of them. Please send any updates to me with the FIXME string that was output.

What Mail

whatmail .gz (<1k)
conpine .gz (<1k)

whatmail is a small script useful to people who use procmail to filter their email into numerous mailboxes (mbox format). When run, it will print the names of mailboxes (hardcoded into the script at present) that have new and unread email. To do this, it uses the Status header in the email. If the Status header is missing, this indicates that the mail has arrived since the MUA last processed the mailbox. I have only tested it with Pine at present. Please send any bug reports to me.

Hack it to suit your mailboxes before using it. You might like to put this in your login script, in place of biff. To make best use of this script, you should make sure you read all of your mail.

Future versions will return a value, so that programs like xbiff, which only checks your spool (your inbox), can be made more intelligent. With window managers such as FVWM, you could even click on xbiff &emdash; if its swallowed in a FvwmButton &emdash and have the output of whatmail show up in an xmessage dialog.

I've also included a utility script conpine, which will display the output of whatmail in an xmessage dialog, and prompt the user to start the pine MUA, or to cancel. This is useful for checking your email from a window manager.

List Users

lsusers .gz (<1k)

Lists the usernames registered on the system. Will report local and NIS users. Future versions may include support for LDAP, but is not planned at this stage.

Ethernet Link Watcher
Coming Soon

ethlinkw is a tool for watching when the network cable is connected/disconnected. It is meant for use in modern laptops, which have an internal MII chip. This means your machine requires a 10/100 ethernet interface. I do not know if this will work on PCMCIA devices.

When the cable is attached or detached (or the link goes up or down) then a set of user written scripts will be executed, in much the same style as SysV init scripts.

Any user can use this program, no root priviledges are required. No communication is done with the network itself, but I have taken steps to make it behave as any good daemon should.

mii-tool is required for proper use of this program. Unfortunately, the default buffering is not suitable, so I have provided a patch for mii-tool (one line difference). It may be possibly to use the unbuffer program that can be found on most Slackware Linux boxen, but I have not tried this yet.

Current Status: Working, not-quite complete.

Fast Installation System
In Active Development

This is a system for installing images (tar archives of an entire system) on many machines very quickly. It is designed (if you can really call it designed) to be used in a teaching environment where student workstations are regularly rebuilt, so that the students have a new installation to practice system and network administration on.

Multiple images are supported. Each image has its own installation script, which takes care of partitioning (a rule based tool is/will be developed to handle different sized disks), formats filesystems, unpacks, installs, configures and reboots.

Booting is done via Slackware Linux install disks, over an NFS connection. Because booting from three floppies is quite slow, and takes a considerable amount of operator time, floppy disk network booting using etherboot will be added in the future. A script will be developed to take care of configuring for NFS, mounting server, and choosing what image to install. Interaction is with the dialog program, which is standard on Slackware Linux

This will be release in the near future, as I'm working on it for use at work (that what it is designed for anyway)

Rose HTTP Personal Proxy

Something resembling planning happened, but thats all for now.

Viewing the Web through Rose tinted glasses. Rose HTTP will be a personal scripting proxy. That means that a user runs it under their own name, and provides a simple proxy service.

What makes RoseHTTP unique (well, sorta) is that it will run a series of scripts to remove undesirable elements of a webpage. If we stopped there, we would basically be the same as Muffin, which is a similar sort of thing, written in Java.

The scripts will be provided by the user (a library will be provided) and will commonly use sed and awk to rescript pages. More ambitious filters could be provided to reshape pages, so instead of the common format of links being on the left, the page would be reshaped so that the links could be at the start, which is much nicer for lynx users

I'm stuggling to decide on a language for this. I'm thinking of Python, since it has classes for HTTP Proxying. I don't know Perl, but then, my Python's very rusty also. There's also gawk (GNU awk), which can do TCP/IP networking. I know awk fairly well, so that might be the one to use. We'll see. It'd be a good chance to learn Perl.

IP Accounting by User
Just an Idea so Far

IP accounting software generally reports based on IP. This is sub-optimal with multi-user operating systems, where more than one user can be on a machine at one time. Often, you might want to see who is using the bandwidth.

Classically, you might use a proxy that requires a login to measure usage of services such as www and ftp. With Linux, ssh is a very common service, and is not a proxyable protocol.

This program would be run on each workstation, and measure traffic destined for the gateway (or outside a specified network), and the owner of the program that created the traffic. Every so often, the data would be consolidated and sent to the server, where it would be stored and used for accounting information.

This is just an idea so far, one day, when I've got a whole bunch of spare time, I might find some time to write it.

Best viewed with any browser