Once viewing these scripts, you can save them using File -> Save As from your web browser. This is safer than using your mouse to cut-and-paste, since tabs and end of lines will be preserved correctly. Be sure to make them executable using chmod +x.
Why do I keep this page up to date? Why do I write these things in my spare time? So when I start at a new company, or setting up a new machine, I can just grab all this stuff easily, without having to rewrite it all over and over.. ;)
Web chat script.
Allows multiple users to chat with each other via web browsers. Uses fixed width fonts so that users can post code snippets amongst each other easily.
Telnet chat server with split screen user-to-user interaction (written in perl)
Run this single perl script in a unix shell window to allow people to connect to the chat server using telnet, and talk with you in a split screen mode, similar to talk(1).
The script acts as a server to remote users, and an interactive client for you. When someone telnets to you chat server, it notifies you with a 'beep' when someone connects, and you can just type directly into it as a client to the conversation.
To let users connect in, you only have to make a port forward
in your firewall to redirect the port# you want to use to
your machine, then tell your remote friend to telnet to your
firewall with that port number,
It's fairly secure, because you can leave it off when you're
not using it. Just run it when you expect someone to connect
in, then kill it when done. It doesn't let anyone run external
programs.. just types text and shows it.
Currently, it only allows one person to connect at a time..
it gives a 'BUSY' signal to others trying to connect while
a conversation is in progress.
The script runs on Linux or MacOSX, and supports
users using telnet from just about any platform. Tested
with remote users running Windows telnet, MacOSX telnet,
and Linux telnet.
It's fairly secure, because you can leave it off when you're not using it. Just run it when you expect someone to connect in, then kill it when done. It doesn't let anyone run external programs.. just types text and shows it.
Currently, it only allows one person to connect at a time.. it gives a 'BUSY' signal to others trying to connect while a conversation is in progress.
The script runs on Linux or MacOSX, and supports users using telnet from just about any platform. Tested with remote users running Windows telnet, MacOSX telnet, and Linux telnet.
Converts /etc/hosts file into a DNS configuration
This script makes it easy to maintain a simple internal DNS domain for an home or small company network. Converts an /etc/hosts file into a DNS configuration, enabling the local DNS server to start on boot, and restarts it after changes are made. Should be a one step way to start and sustain a simple internal DNS domain server. (Also acts as a resolver for internet domains)
All you have to do is maintain your /etc/hosts file on the DNS server with up-to-date info, and run 'hosts2dns&nsbp;-update' whenever changes are made to update the DNS config. Only three special comments are needed in the /etc/hosts file to define your domain name and 'START' and 'END' markers that define the range of hosts in the file that will be installed into DNS.
Intended for configuring a simple internal *private* DNS domain on a DNS server *INSIDE* a firewall, ie. for small home or business networks to handle resolving internal hostnames.
See an example /etc/hosts file used by 'hosts2dns', showing the three comment markers needed to configure an internal DNS domain.
Redhat9/Fedora Core3/MacOSX 10.3.x + 10.4.x
Hierarchical ps(1) report.
Put this in the global user's path, so all users can easily see process parenting, and/or 'grep' for certain processes by name.
Note: Now a days, some OS's support the 'f' flag to ps(1), which does pretty much the same thing, eg. 'ps fax' under linux
See some sample reports from piss. IRIX/Linux/BSDI/MacOSX Recently added better Jaguar/OSX support and FreeBSD.
a hex/decimal/binary dump utility like od(1)
Few DOS utilities impressed me as much as DOS debug. One of the things I loved about debug was it's hex/ascii dump format. od(1) is just not as good. So, I wrote a debug utility that outputs in DOS-like format, and even has decimal and binary format dumps.
See some sample dumps.
Print the path as separate lines
Shows your path one subdir per line, for clearly seeing
the subdirs that make up your path. '-s' flag sorts alphabetically,
so you can easily spot duplicates.
Wait for process(es) to complete
Ever want to run a command that starts only when other
already backgrounded programs finish running?
Combination of find(1) and egrep(1)
A handy little tool that Recursively descends directories, searching for a text string. Handles .gz, .z and .Z files too.
Use findtext -help for help.
Warning: Use this command sparingly; it recursively descends directory hierarchies, which puts a lot of load on the disk. Avoid using on NFS mounted directories; rlogin to the remote machine hosting the disk before running this command. IRIX/Linux
greps mail headers for text, prints matching messages on stdout.
Handy for searching email folders, and getting full email messages for all matches on output, which can be redirected to the printer, or to create or append to other mail folders.
findmail 'this|that' < ~/nsmail/Inbox | more
A slate program written in perl. Uses the ImageMagick tool set to create and manipulate the image. Tested on Redhat 9.0, supports all image formats supported by ImageMagick.
Allows user comments, scene, take, shot, date, etc. Different x/y resolutions can be specified; the text and graphics are scaled appropriately.
Use slate -help to see usage.
Frame manipulation tool
Yes, someday I should rewrite this in perl(1). But it's in nawk(1) right now.
A tool to help manage lists of frames; moving them, renaming them, running any unix command on them. Use the -d flag first to preview the operations that will take place, to make sure it will do what you expect. Like the header says, use at own risk. ;)
Use frames -help to see usage.
See some sample uses of frames. IRIX/Linux
List Frame Ranges
Small perl script to output a directory containing sequences of frames as sequences, rather than individually.
Phone list tool.
Put this in the global user's path, so all users can easily see the phone list. By modifying the permissions of the central phone list file, you can limit who can edit the phone list.
See some sample uses of phone. IRIX/SunOS/Linux
Print text documents in 2 columns wide along page.
This filter takes an ascii file on input, and outputs a postscript document that prints out the ascii file in two columns. It does this by using a small font, and printing in landscape mode.
Usage: lprint2 < /etc/sendmail.cf | lp
On linux machines, this program is made obsolete by the much more powerful 'mpage(1)' program, which can shrink 4, even 8 or 16 pages onto one page! (If your eyes and printer are good enough to handle it)
Tool for printing labels on a Dymo LabelWriter 450 via lp(1)/B>
Outputs PostScript suitable piping to lp(1) for printing
Dymo 30252 labels on a Dymo LabelWriter 450. (For instance,
installing the Dymo on an OSX box with the default configuration,
piping the output of this program to lp(1) should print a proper label).
Usage expects the lines either piped to stdin, or specified on
the command line, eg:
Tool for printing video tape / hardware id labels.
Outputs PostScript suitable piping to lp(1) for printing Avery 5267 label sheets (4 labels across). Automates tape numbering, so each label has an incremental number. Yes, you can supply the starting number. See a sample printout. IRIX/SunOS/Linux
Tool for printing address labels, or any repeating static text.
Outputs PostScript suitable piping to lp(1) for printing Avery 5160 and/or 5260 label sheets (3 labels across). I use it for printing address labels. To make custom label sheets that have different addresses, you can save the PostScript output into a text file, and hand edit the entries to make fully custom label sheets. Then, just lp(1) the file whenever you want to print a new sheet. See a sample printout. IRIX/SunOS/Linux
A nixie tube desktop clock for NT/2K/XP/Vista/Win7, Linux, Irix and Mac OSX.
A fun experiment that turned into a useful program, this simple little desktop clock shows the current time with Nixie tube digits.
A simple NNTP newsgroup server.
An NNTP newsgroup server that's easy to setup + admin! C++ source, docs.
Mike Sweet (manager of CUPS, FLTK) took an interest in my code for newsd, and together we made improvements, and it has managed the FLTK/CUPS/Rush newsgroups since 2004. In 2013 Mike moved on to other things, so Greg took over FLTK's website, and while the FLTK main newsgroups were moved to google groups, newsd continues to mirror the FLTK groups, providing an NNTP read-only interface to monitor the group. In 2017 the code was moved to github where Greg maintains the codebase for just the daemon.
This tool makes it easy to set up a private NNTP server, suitable for serving locally maintained newsgroups. (NOT for Usenet news feeds).
The data format is all simple ascii files (no dbm or binary data formats), and the config file is small and simple. Creating new groups is as minimal as using one 'mkdir' command, or you can create new groups with 'newsd -newgroup', and just answer the questions interactively from the command line.
Handles multiple newsgroups, uses /var/spool/news as the directory hierarchy. Single daemon, comes with manpage docs. Also has bi-directional mail gatewaying (as of 1.20 05/10/03) to allow a mailing list interface to the newsgroup.
Here's the old directory where I used to maintain newsd on this site, before Mike moved it to SVN, and then I later moved it to github when Mike moved on to other things.
Runs unix commands in parallel!
Supply a list of commands to run, one per line, and it runs them all in parallel. You can limit the number of parallel processes with the -M flag. Even keeps track of all the stdout/stderr logs, serializing them for easy reading. Hit ^C to stop all processes.
Great for multiple rsh, rcp or rdists to run on a whole network quickly. Very small, simple program no one has time to write, but everyone always needs when managing multiple hosts.
See sample use. IRIX/SunOS/Linux
Monitors IP traffic volume with auto-updating screen (you must have tcpdump)
Filters tcpdump(1) output to tell you which hosts on your network are using the ethernet the most. Auto-updating screen makes it easy to see which machines are chattering the most.
See sample use. Linux (probably sgi too)
Sysadmin tool for maintaining adminstration logs.
Put this in the global user's path (or at very least root's) and use permissions to prevent normal user editing. Lets sysadmins keep a record of what modifications were made to a machine or network.
See some sample uses of admlog. IRIX/SunOS/Linux
Sysadmin tool for maintaining list of hosts.
An easy way to manually maintain a list of hosts, their status (online|offline), platform specific criteria, etc.
See some sample uses of hosts. IRIX/SunOS/Linux
resize(1) for BSD machines
Some BSD machines don't have resize(1), a tool that figures out how big the user's terminal is, and sets the rows/cols values with stty(1).
Simple perl script does all the magic. Just run it from your user's .login files with eval `resize`.
sendmail maillog viewer
Prints out sendmail (8.9.1) maillog files in human readable format.
Use maillog -help to see usage.
Edit path variables, removes duplicate directories
Use this tool to edit path variables in login scripts, to prevent duplicate paths and unnecessary growth. Lets you insert/remove/append to your path easily, while optimizing out duplicate directories.
See the top of this script for usage. IRIX/SunOS/Linux
Nice tcsh and csh prompts.
Put these two files in your home directory, and modify your .cshrc to source them using these instructions to have a nice 'date/time/pathname' prompt.
See some sample prompts. IRIX/BSDI/Linux
Sample 'standard' cshrc/login templates.
Tweak to you're liking. Install these in a central directory,
and have all users source them.
Manage rc files (cshrc, login, etc)
Put this in /usr/local/bin to help maintain and simplify user access to software environments. Use rc -help for install details. IRIX, (probably supports BSDI and LINUX)
Unix System V Banner
System V did certain things better than BSD, and one of them was banner(1).
Not to be confused with the rarely useful novelty BSD version of banner, which is only good for printing 10 foot long 'welcome home' and 'happy birthday' printouts on form-feed printers.
System V banner(1) is actually practical for users, programmers, and sysadmins alike. Often, though, the System V banner is not to be found on most Linux and BSD systems and, I was tired of recompiling it all the time, so I wrote one in perl; enjoy.
Note: One program that kicks ass on banner(1) is figlet; a banner like program with a zillion fonts.. my banner only has two fonts; big and small.
See some sample uses of banner. IRIX/SunOS/Linux
Configures a beefy gr_osview(1)
A good gr_osview config is necessary for debugging cpu load, network problems, memory leaks, etc. I wrote this ~/.grosview file based on the excellent, volumnous manpage, including comments on what does what.
Put this .grosvew file in your home directory, then run 'gr_osvew' *without* any arguments and it will look something like this:
Click for bigger picture.
View manpages in VI
Quite often one wants to view the man(1) pages in the text editor of their choice. manvi(1) removes all escape characters, so that you can search easily. It honors the EDITOR variable, and will use vi(1) if unset.
View info(1) in VI
Quite often one wants to view the info(1) in the text editor of their choice. infovi(1) grabs all the info files to do the search easily. It honors the EDITOR variable, and will use vi(1) if unset.
View gzipped files
Wouldn't it be nice if you could just say 'vi foo.gz' and view the
file unzipped? Well, now you can.
Change Window Title for Xterm and Xwsh
For instance 'wintitle TAR BACKUP' will change the title of your window
to TAR BACKUP.
Are you a sysadmin with a bunch of new machines, and are having trouble coming up with new hostnames?
Use this document to help you come up with better names than "dhcp3204" for the hosts on your ever growing network.
A Unix Cheat Sheet
This isn't a program, it's a manpage. But it's handy all the same. Describes magic Unix commands, and includes short references for most of the unix programming languages, such as nawk, csh, sh, etc.
Install this as a manpage at your site; catman/man5/cheat.5 and send me mail if you have any comments or suggestions.
Hayes Modem Command Reference
This isn't a program, it's a manpage. But it's handy all the same. Describes the essential command set for the Hayes Sportster modem. This documentation is useful for programming a hayes modem for dial-in/dial-out use on an SGI.
Install this as a manpage at your site; catman/man5/hayes.5 and send me mail if you have any comments or suggestions.
Supra Modem Command Reference
This isn't a program, it's a manpage. But it's handy all the same. Describes the essential command set for the Supra 28.8 fax modem. This documentation is useful for programming a supra modem for dial-in/dial-out use on an SGI.
Install this as a manpage at your site; catman/man5/supra.5 and send me mail if you have any comments or suggestions.
Wrapper for cal(1) to allow 'cal nov', etc.
cal(1) drives me nuts -- it doesn't understand arguments like 'dec' and 'oct'. This wrapper script will handle that.
Install this in somewhere like /usr/local/bin, and make sure it is earlier in your path than the real cal(1).