fincore ("File IN CORE") is a command that shows which pages (blocks) of a file are in core memory. It is particularly useful for determining the contents of the buffer-cache. The latest distribution can be found here.
fadvise is a command used to give file advisory information to the operating system. Its "--dontneed" option is particularly useful in that it causes the files' pages (blocks) to be evicted from the buffer-cache. The latest distribution can be found here.
FlowScan is a system to analyze and report on flows exported by IP routers and collected using flow-tools, argus, cflowd, etc. It could also be considered a "front-end" for RRDTOOL. The latest distribution can be found here.
RRGrapher is a CGI graphing tool for RRDTOOL. It's basically an interactive web graph construction set. The latest distribution can be found here.
This is a perl API to a Patricia Trie data structure to perform fast lookups by IP address. Patricia Trie is the data structure used by the BSD kernel routing code where it is named "radix". The latest distribution can be found on CPAN.
junipoll is a JUNIper router snmp POLLer. It is an mrtg-like utility which polls the counter values from the firewall filters configured on Juniper routers. The latest revision can be found here.
This is a my perl module/class which provides a way to invoke the functionality of Spectrum Enterprise Manager's Command Line Interface. The latest distribution can be found here or you can find it on CPAN.
This is a utility to identify C header files that should be included in C source files. You run it on your C source files, and it looks for your use of ANSI or POSIX identifiers and generates #include directives for those source files. The latest distribution is headers1.002.tar.gz.
This is a distribution of my perl module that provides SNMP get/walk functionality with built-in name to OID translation alternatively by using .oid files. It is implemented as a derived class based upon SNMP_Session.pm. (A word of caution - Altoids may be confusing unless you've first familiarized yourself with SNMP_Session.pm.) The latest distribution can be found here.
Cflow is a perl module for analyzing flow files written by cflowd, an package used to collect Cisco NetFlow data. Cflow is available here.
This is a distribution of my perl module that provides the ability to "chat" (ala expect(1), chat2.pl, or Comm.pl) with Cisco Internet Operating System routers. The getcnf utility, which is probably the useful component of this package, uses IOSchat to get the flash and/or running configuration. (This output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest release can be found here. getcnf installation requires shc - the neato generic SHell script "Compiler", by Francisco Rosales' (frosal@fi.upm.es). shc is available here, but I've had lots of trouble with ftp timeouts trying to pull it from Spain.)
This is a distribution of my perl module that provides the ability to "chat" (ala expect(1), chat2.pl, or Comm.pl) with Cisco Internet Operating System routers. The getcnf utility, which is probably the useful component of this package, uses IOSchat to get the flash and/or running configuration. (This output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
The latest release can be found here. getcnf installation requires shc - the neato generic SHell script "Compiler", by Francisco Rosales' (frosal@fi.upm.es). shc is available here, but I've had lots of trouble with ftp timeouts trying to pull it from Spain.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Cisco Catalyst 5000s. We use Catalyst 5000s as ATM LANE "edge" devices (hence the name e-getcnf). e-getcnf can fetch the flash and running configurations for the Catalyst 5000 and various optionally installed Cisco ATM OC-3 and OC-12 modules. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. e-getcnf installation requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Cisco Catalyst 5000s. We use Catalyst 5000s as ATM LANE "edge" devices (hence the name e-getcnf). e-getcnf can fetch the flash and running configurations for the Catalyst 5000 and various optionally installed Cisco ATM OC-3 and OC-12 modules. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations from the Cisco VPN 3000 Concentrator Series. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. Installation of this utility requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations from the Cisco VPN 3000 Concentrator Series. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Cisco Catalyst 1900 Switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. Installation of this utility requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Cisco Catalyst 1900 Switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Fore ASX switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. a-getcnf installation requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Fore ASX switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Alteon Switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. Installation of this utility requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Alteon Switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Fore ES-3810 Ethernet Switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. Installation of this utility requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Fore ES-3810 Ethernet Switches. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Extreme Equipment. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. Installation of this utility requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations of Extreme Equipment. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
This is a distribution of my perl script that provides the ability to GET the CoNFigurations from APC Uninterruptable Power Supplies. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.) The latest distribution can be found here. Installation of this utility requires shc.
This is a distribution of my perl script that provides the ability to GET the CoNFigurations from APC Uninterruptable Power Supplies. (As with getcnf above, this output is suitable for storing in an RCS revision file, or to diff(1) to discover configurations changes.)
NetCMS is a Network Configuration Management System for network devices. Currently it supports only Cisco routers and switches. The underlying router getcnf utility have been tested with approximately 200 Cisco routers (2500, 3000, 4500, 7000 and 7500 series) running IOS versions 9.x through 11.25. The switch e-getcnf utility currently supports only Cisco's Catalyst 5000, and optionally installed ATM modules (where the Catalyst 5000 is operating as an ATM "edge" device). The latest distribution is NetCMS1.001.tar.gz.
NetCMS is a Network Configuration Management System for network devices. Currently it supports only Cisco routers and switches. The underlying router getcnf utility have been tested with approximately 200 Cisco routers (2500, 3000, 4500, 7000 and 7500 series) running IOS versions 9.x through 11.25. The switch e-getcnf utility currently supports only Cisco's Catalyst 5000, and optionally installed ATM modules (where the Catalyst 5000 is operating as an ATM "edge" device).
You may wish to check out these more recently released alternatives written by others:
NetTree is a perl package to encapusate the subnet allocations within a network. If you're a hostmaster that manages a large number of subnets it may be useful to you to be sure that you don't define overlapping subnets and such. It is available here.
find_revisions is a reporting utility for use with RCS. This is the accompanying code for my article "Sys Admin File Revision Control with RCS" from the December 1998 issue of Sys Admin magazine. It is available here.
sort_revisions is a perl script that sorts the output of find_revisions.
These utilities watch and record which MAC addresses are in use on which ports of Cisco Catalyst switches, Cisco/Aironet Access Points, and Marconi/Fore ES-3810 ethernet switches, respectively. They maintain a flat-file database, but can also push this data into a relational database such as MySQL.
ipwatch is a perl script which maintains a simple database of IP addresses that it has "seen". It was written to help discover which IP addresses can be recovered by observing that they were not in use over some specified period of time - eg. 1 month. (Once this tool is adopted, its data file serves as a rudimentary database to track assignment of IP addresses.) ipwatch uses 2 methods to determine if a given IP address is in use: (1) by sending ICMP echoes (pings) and waiting for responses, and (2) by examining the ARP cache of specfied routers or switches, via SNMP. The latest release is ipwatch1.007.tar.gz and requires Altoids (see above) and fping.
ipwatch is a perl script which maintains a simple database of IP addresses that it has "seen". It was written to help discover which IP addresses can be recovered by observing that they were not in use over some specified period of time - eg. 1 month. (Once this tool is adopted, its data file serves as a rudimentary database to track assignment of IP addresses.)
ipwatch uses 2 methods to determine if a given IP address is in use: (1) by sending ICMP echoes (pings) and waiting for responses, and (2) by examining the ARP cache of specfied routers or switches, via SNMP.
The latest release is ipwatch1.007.tar.gz and requires Altoids (see above) and fping.
physaddrwatch is a perl script which maintains a simple database of physical media addresses (MAC or ATM) that it has "seen" and the IP or AppleTalk address to which they belong. It does this by walking various tables via SNMP on gateways (routers) that you specify. The latest release is available here and requires Altoids (see above) and BER.pm and SNMP_Session.pm. You should check out arpwatch too: http://www-nrg.ee.lbl.gov/ ftp://ftp.ee.lbl.gov/arpwatch.tar.gz
physaddrwatch is a perl script which maintains a simple database of physical media addresses (MAC or ATM) that it has "seen" and the IP or AppleTalk address to which they belong. It does this by walking various tables via SNMP on gateways (routers) that you specify.
The latest release is available here and requires Altoids (see above) and BER.pm and SNMP_Session.pm.
ip2anonip is a perl script which can be used to anonymize or obfuscate IP addresses or translates IP addresses to hostnames, like ip2hostname. The anonymization employs the prefix-preserving technique implemented in tcpdpriv.
ip2hostname is a perl script/filter which simply translates IP addresses to hostnames. This is useful to improve readability of files containing lots of IP addresses and such.
mac2vendor is a perl script/filter which simply scans input looking for ethernet MAC addresses and appends their respective vendor names (which presumably manufactured the NIC or device that is using the given MAC address). This is done using the IEEE OUI database. This utility is useful to improve readability of files containing lots of MAC addresses. I find that it helps to sanity check hand-typed MAC addresses, for instance in a DHCP server's configuration file, to discover typos (since the address ought to be registered).
iftop top interfaces in real time, similarly to the way the Unix top command displays top CPU processes. This script is a quick hack based on if-counters.pl by Simon Leinen, which is supplied with his SNMP in Perl.
ifTop is a perl script that will show the "top" (most active) interfaces on a router. This is useful for identifying which interface is the source of a Denial-of-Service flood, especially when the source IP addresses are forged.
utmp_days is a perl script that simply shows you which login process have utmp entries older than `n' days. E.g.: $ utmp_days 7
utmp_days is a perl script that simply shows you which login process have utmp entries older than `n' days. E.g.:
$ utmp_days 7
reaper is a perl script to kill off old login processes found by utmp_days.
cpuhogs is a perl script to identify processes which are CPU hogs and optionally kill and notify the owner of the process(es).
sortbyip is a perl script/filter that sorts its lines of input by the first IP address on each line.
sar2rrd is a perl script to convert sar data to RRD format.
subnets2ospf is a perl script to summarize network and subnet allocations using a format that Cisco IOS likes. E.g.: $ subnets2ospf Enter the network (e.g. 10.10.0.0/16): 10.0.0.0/8 Enter subnets to exclude, one per line, terminated with single '.' or EOF: 10.42.42.0/24 . network 10.0.0.0 0.31.255.255 area 0.0.0.0 network 10.32.0.0 0.7.255.255 area 0.0.0.0 network 10.40.0.0 0.1.255.255 area 0.0.0.0 network 10.42.0.0 0.0.31.255 area 0.0.0.0 network 10.42.32.0 0.0.7.255 area 0.0.0.0 network 10.42.40.0 0.0.1.255 area 0.0.0.0 network 10.42.43.0 0.0.0.255 area 0.0.0.0 network 10.42.44.0 0.0.3.255 area 0.0.0.0 network 10.42.48.0 0.0.15.255 area 0.0.0.0 network 10.42.64.0 0.0.63.255 area 0.0.0.0 network 10.42.128.0 0.0.127.255 area 0.0.0.0 network 10.43.0.0 0.0.255.255 area 0.0.0.0 network 10.44.0.0 0.3.255.255 area 0.0.0.0 network 10.48.0.0 0.15.255.255 area 0.0.0.0 network 10.64.0.0 0.63.255.255 area 0.0.0.0 network 10.128.0.0 0.127.255.255 area 0.0.0.0
subnets2ospf is a perl script to summarize network and subnet allocations using a format that Cisco IOS likes. E.g.:
$ subnets2ospf Enter the network (e.g. 10.10.0.0/16): 10.0.0.0/8 Enter subnets to exclude, one per line, terminated with single '.' or EOF: 10.42.42.0/24 . network 10.0.0.0 0.31.255.255 area 0.0.0.0 network 10.32.0.0 0.7.255.255 area 0.0.0.0 network 10.40.0.0 0.1.255.255 area 0.0.0.0 network 10.42.0.0 0.0.31.255 area 0.0.0.0 network 10.42.32.0 0.0.7.255 area 0.0.0.0 network 10.42.40.0 0.0.1.255 area 0.0.0.0 network 10.42.43.0 0.0.0.255 area 0.0.0.0 network 10.42.44.0 0.0.3.255 area 0.0.0.0 network 10.42.48.0 0.0.15.255 area 0.0.0.0 network 10.42.64.0 0.0.63.255 area 0.0.0.0 network 10.42.128.0 0.0.127.255 area 0.0.0.0 network 10.43.0.0 0.0.255.255 area 0.0.0.0 network 10.44.0.0 0.3.255.255 area 0.0.0.0 network 10.48.0.0 0.15.255.255 area 0.0.0.0 network 10.64.0.0 0.63.255.255 area 0.0.0.0 network 10.128.0.0 0.127.255.255 area 0.0.0.0
uniqmail is a perl script to discard duplicate messages in a Unix mbox. It is useful for mailing list archive administrators to remove duplicate messages before running HyperMail or MHonARC.
locker is a perl script to run a command under the protection of a file lock. This is especially useful in a crontab entry so that only one instance of that job can run at a time. E.g.: $ touch /tmp/.lock # create the lock file $ locker -ne /tmp/.lock sleep 60 & # spawn a command with a lock ... $ locker -ne /tmp/.lock sleep 60 # attempt to acquire the lock flock failed: Resource temporarily unavailable $ locker -e /tmp/.lock sleep 60 # block, waiting for the lock ... $
locker is a perl script to run a command under the protection of a file lock. This is especially useful in a crontab entry so that only one instance of that job can run at a time. E.g.:
$ touch /tmp/.lock # create the lock file $ locker -ne /tmp/.lock sleep 60 & # spawn a command with a lock ... $ locker -ne /tmp/.lock sleep 60 # attempt to acquire the lock flock failed: Resource temporarily unavailable $ locker -e /tmp/.lock sleep 60 # block, waiting for the lock ... $
This utility is used to examine or modify the ``load immediate'' instructions in ELF 32-bit SPARC executables. These instructions are those which load ``hard-coded'' 32-bit constant values into registers. For instance if there is an executable for which you don't have the source code that is hard-coded to bind the port 0xd00d, you could modify it to bind port 0xbabe instead. While obscure, I've inculded this utility just because it was a fun hack.
For instance if there is an executable for which you don't have the source code that is hard-coded to bind the port 0xd00d, you could modify it to bind port 0xbabe instead.
While obscure, I've inculded this utility just because it was a fun hack.
This archive contains the accompanying code to an article that I wrote on the use of GNATS (the GNU Problem Report Management System) by System Administrators. It was published in the February '97 issue of SysAdmin magazine.
I contributed (only a bit) to qcam-lib for Linux. This is a library and commands for use with the B&W Connectix QuickCam. Other drivers, such as for the color QuikCam, can be found here and there.