Tcl is heavily used in the realm of system administration. Various resources and tools are described below.
Description
Cameron Laird had this to say (regarding a Tcl vs Perl for Sys Admin question) in comp.lang.tcl:
When people set up these bake-offs, I usually turn away; it's just too easy for Perl to dominate in the obvious "check-box" items.
Tcl Advocacy
In all the "Is {Java,Erlang,PHP,...} better than {C++,Rexx,Ada,...} for {Web scripting,COM automation,...}?" competitions, one of the easiest correct conclusions to draw is that Tcl is the single most essential and desirable language for cross-platform system administration. Here's why:
- Expect is a Tcl extension. Expect is absolutely crucial for SysAd. Perl has an Expect.pm--but it's about a decade (slight exaggeration) behind the original Expect in its polish.
- Tk is a Tcl extension. Again, Perl has Perl/Tk, but the latter has serious flaws on the Windows side.
- Tcl glues better than Perl. Specifically, it's a lot easier to teach newcomers how to manage external processes with Tcl than with Perl. Some Perlites will argue this point. I've been studying it for a long time. I'm right.
- Tcl Blend works. The Java/Perl combinations mostly don't.
- Tcl has the strongest tradition of use as a testing language. Is the pertinence of that to SysAd clear?
- Naive users take to Tcl at least as quickly as to Perl.
I don't put too much weight on this proposition. Season to taste, or, more specifically, apply as appropriate in your own situation.
notable system administration products using Tcl
- Oracle Enterprise Manager
- (formerly–its initial versions, such as 2.x, 8.x and 9.x used Tcl heavily, but since the 10gR2 release in 2005 it has moved away from Tcl, whose role has been taken by Perl; nowadays the core of the product is in Java and C, with Perl used for some scripting.)
- Websphere Control Program
- scripting is done in Jacl (Java-based implementation of Tcl). However, in more recent releases Jacl is deprecated and Jython (Java-based implementation of Python) is the recommended alternative.
- Vignette
- StoryServer templates were defined in Tcl
- Software AG's Graphical Installation for Unix
- BMC Patrol installation GUI
- System Tools Library A library of Windows and Linux system management tools
- Directory management tools, to search, compare, weight, update, recurse, etc. In Windows, they all support Unicode names in any code page, paths > 260 characters, junctions, file & directory symlinks.
- Windows clipboard content filtering tools. They bring the power of the command line to all GUI apps!
- DOS and Windows system management tools. Manage the hardware, BIOS, disks, drivers, etc. The Windows tools work in all versions of Windows since Windows 95 (for the 32-bits versions) and Windows XP/64 (For the 64-bits versions).
See Also
- Expect
- automate and control interactive programs. Includes other useful utilities such as autoexpect, bgpasswd,
- Modules
- provides for the dynamic modification of a user's environment via modulefiles
- A tiny URL extractor
- What groups are shared by these users?
- How can I calculate how much disk space is being used in a directory
- snort
- SMC
- starfish
- outlog - Taking care of log rotations automagically
- failsh
- pass_gen
- tcl -mq , by Alexandros Stergiakis
- POSIX Message Queues for Tcl. This extension provides a Tcl interface to POSIX Message Queues. It allows scripts to create/open/close/unlink multiple parallel message queues, and to send/receive messages synchronously and asynchronously to/from them. GPL license.
- tcl-inotify , by Alexandros Stergiakis
- File -system notification service for Tcl. This is a Tcl extension that provides an interface to the inotify file system notification service of the Linux kernel. GPL license.
- tcl-pam , by Alexandros Stergiakis
- PAM Authentication for Tcl. This project provides a Tcl interface to Pluggable Authentication Modules as implemented in Linux. It implements a Tcl package that exports the client -side functionality of PAM to the Tcl programming language. This allows Tcl scripts to use PAM for authentication. GPL license.
- tcl -syslog
- Syslog interface for Tcl. This project provides a Tcl interface to the standard *nix syslog service. It implements a Tcl package that exports the full functionality of the underlying syslog facility to the Tcl programming language. This includes local and remote logging. GPL license.
- tcl -snmptools
- Tcl SNMP tools for managing remote agents. This is a Tcl package that provides SNMP tools for managing remote Agents. It uses the NetSNMP library and supports all standard SNMP v1/v2/v3 operations and more: get, set, getnext, walk, bulkget, bulkwalk, trap, translate and table. GPL license
- tBar
- displays system status in a compact, easily-readable form. It features different widgets that can be arranged and colored using a provided configuration file.
- OASYS
- Object-oriented Adaptors to SYStem interfaces. A C++ library that provides a set of wrapper classes and utilities for systems programming projects. Includes Tcl shell bindings.
Monitoring Log Files
OK, it's true: there's a hole in the Tcl-SysAd story, and it has to do with logging--SysLog and such.
Tcllib seems like a natural place to build a plug for this hole. And some solutions exists at syslog.
LV: One thing that I'd love to find is some code to deal with monitoring log files. Log files come in many varieties, but in most cases, what one wants when monitoring would involve:
- notification when something appeared in the log
- optionally - statistics on how frequently certain key phrases have appeared in this log
- able to dynamically handle when a log rotation occurs
- able to alert in some manner when a serious entry appears
- able to handle plain text logs or html formatted logs
- ability to browse log files, and interactively creating filters to hide data that isn't currently relevant.
Right now (and I mean that literally) I would love to have something like this to go through event log files on Windows.
Another useful tool that I would love to find would grunge through the variety of log files on a system (on Windows, for example, the tracing logs, the event logs, the IIS logs, etc.) and generate a report concerning items of potential concern.
Misc
Another issue for system administration - how to roll Tcl out to your site.
Some of the issues to consider:
- Does your operating system already come with Tcl?
- If so, then are you satisfied with waiting on updates from the vendor, or do you need to install newer (or older) versions to get around problems or add new features?
- If you are going install your own version, how do you do so in a manner that prevents a) current vendor utilities from breaking as you update Tcl, b) damage to your tcl installation when the operating system is patched or updated
- How many versions of Tcl (or extensions) will you keep online at one time?
- How are you going to handle updating user applications that are dependant on specific version features (or mis-features)?
- Where will extensions be installed?
- Where will docs, demos, etc. be installed?
jmpb 2006-12-29: Thought it was worth mentioning: tclkits, starkits and starpacks ;). The OS need not come with Tcl. This is IMHO a valid answer to all of those questions (except maybe extensions, docs, demos, etc. - online or downloaded in a starkit).