Sam Tannous Note: Due to time constraints, Gconfig is not currently being worked on. I've left the code here for others to study and use.

A router configuration and networking toolkit written in Python. Please read the copyright at the bottom of this page. This is just a bunch of sample Python code you may find useful. It isn't terribly functional but you may find it worth looking at.

[   News   |   Information   |   Download   |   Screenshot   |   Copyright   ]

N     E     W     S
February 10, 1999
Version 0.4.1 is released. This new version contains a minor bug fix where you see "non-default argument follows default argument (line 1048)"
December 30, 1998
Version 0.4 is released. This new version contains the pixmaps in the code so separate pixmap files are no longer needed. And the fix in GtkExtra.py has been committed to pygtk-0.5.9. This new version also requires gtk+/glib 1.1.9 since it uses the new GtkCTree widget.
November 3, 1998
Initial Release (v 0.3). There is a minor bug in pygtk 5.3 so that you will need to hand edit the file GtkExtra.py until the bug gets incorporated and change the line

item.connect("activate", callback)


item.connect("activate", callback,args)

for the Servers and Tools menus to work correctly.

I     N     F     O     R     M     A     T     I     O     N

Gconfig is a set of tools written in Python using the GTK+ toolkit. This is done using the pygtk bindings. Python was chosen because it seems to be the fastest way to prototype complex code. And using the Pygtk bindings, the conversion to ANSI C is pretty simple since their is a direct mapping between from the Python GTK toolkit calls to their C counterparts.


At the present time, Gconfig has enough functionality to be useful, but it's far from complete. It's still alpha software, and new features and bug fixes are being added all the time. Here is the list of features, current as of November 3, in no particular order:

  • The TACACS+ server control section (under Servers menu) is fully functional. You can start, stop, check, restart, set debug level, and change the port of a tac+ daemon. It is assumed that you have already downloaded and compiled a tacacs+ daemon.

  • Here is what is planned: GUI control of Sylog and TFTP servers. GUI control of a scheduler (to allow commands to be run on routers at particular times). A database is also planned (postgresql) to hold configs, and show command output. This is Linux centric in that it may only have been tested on Linux systems. The changes to other systems should be minor.
  • Some Cisco IOS centric tools to make Access-lists easier to configure, a tool to help with IP subnet design, some tools to help understand Cisco IOS debugs, a tool to analyze Cisco IOS configs and point out potential problems, a tool to help troubleshooting by analyzing specific Cisco IOS "show" commands", and some handy pointers to Cisco IOS commands and Error codes.
  • Also planned is a set of menus and notebooks that will help configure Cisco IOS routers. The idea is to allow you to fill in fields to configure things like a router hostname, ip addresses on interfaces, add usernames with passwords, configure logging, NTP, RIP, OSPF, DLSw+, etc.... In addition to configuring this from scratch, we should also be able to import existing configurations, and generate configs that can be tftp'd to a router, configured directly on a router (via an expect type script), or simply pasted into an existing terminal session on a router.
Screen shot

Here's the obligatory screenshot.

D     O     W     N     L     O     A     D

Recent sources can be found here:

  • gconfig-0.4.1.py Minor bug fix.
  • gconfig-0.4.py (Note: this version no longer requires seperate pixmaps files (they are in the Python code). Also, this new version requires at least gtk+/glib 1.1.9 and pygtk 0.5.9 since it uses the new GtkCTree widget)
  • gconfig-0.3.py (Note: this version requires gtk/glib 1.0.6, pygtk 0.4.5, and the pixmaps below.)
  • required pixmaps for toolbar for gconfig-0.3.py
  • You can avoid the Python and Pygtk requirements by using a compiled (actually it's frozen) binary that includes the Python interpreter in it. It's rather larger (about 2.5Mb, 600kb gzipped) but you still need the gtk+ and glib shared binaries. It is here: gconfig-0.3-python-frozen-i386-binary.gz
System Requirements

Before you download it, you may want to verify that the following packages are installed on your system

You can avoid the Python and Pygtk requirements by using a compiled (actually it's frozen) binary that includes the Python interpreter in it. It's rather larger (about 2.5Mb) but you still need the gtk+ and glib shared binaries.

  • A compiled tacacs+ server. You can get a freeware server from Cisco Systems' ftp site. If you plan to use this, please read the users_guide that comes with the developers' kit. You don't have to have a TACACS+ server to play with Gconfig. Gconfig will run without it. You will just see an error message when you try to start the tac+ server. If you don't know what TACACS+ is, please read the FAQ. Also, please take a look at the latest Users' Guide.
  • The GIMP Toolkit, available from the GTK site. Some newer versions of Gconfig require newer packages. These are noted in the code download section and in the source code itself. If you are running a Redhat Linux system, get the latest stable gtk+ and glib shared library RPMs.
  • Python 1.5.1 If you are running Linux, you can get RPM's from Oliver Andrich
  • You will need Pygtk as well. You can get this here pygtk and compile it yourself or you can get the RPM's from Oliver Andrich.
  • Another package you may eventually need as we progress is a postgresql server.

any patches to contribute, please drop me a note.

C     O     P     Y     R     I     G     H     T
You are free to do whatever you want with this code....it's just sample code. Please NOTE: None of the code available here comes with any warranty or support. Furthermore, it is not being activly worked on.