This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
#! /usr/bin/python | |
print "\n*********************************************************************" | |
print "Cisco IOU License Generator - Kal 2011, python port of 2006 C version" | |
import os | |
import socket | |
import hashlib | |
import struct | |
# get the host id and host name to calculate the hostkey | |
hostid=os.popen["hostid"].read[].strip[] | |
hostname = socket.gethostname[] | |
ioukey=int[hostid,16] | |
for x in hostname: | |
ioukey = ioukey + ord[x] | |
print "hostid=" + hostid +", hostname="+ hostname + ", ioukey=" + hex[ioukey][2:] | |
# create the license using md5sum | |
iouPad1='\x4B\x58\x21\x81\x56\x7B\x0D\xF3\x21\x43\x9B\x7E\xAC\x1D\xE6\x8A' | |
iouPad2='\x80' + 39*'\0' | |
md5input=iouPad1 + iouPad2 + struct.pack['!L', ioukey] + iouPad1 | |
iouLicense=hashlib.md5[md5input].hexdigest[][:16] | |
# add license info to $HOME/.iourc | |
print "\n*********************************************************************" | |
print "Create the license file $HOME/.iourc with this command:" | |
print " echo -e '[license]\\n" + hostname + " = " + iouLicense + ";'" + " | tee $HOME/.iourc " | |
print "\nThe command adds the following text to $HOME/.iourc:" | |
print "[license]\n" + hostname + " = " + iouLicense + ";" | |
# disable phone home feature | |
print "\n*********************************************************************" | |
print "Disable the phone home feature with this command:" | |
print " grep -q -F '127.0.0.1 xml.cisco.com' /etc/hosts || echo '127.0.0.1 xml.cisco.com' | sudo tee -a /etc/hosts" | |
print "\nThe command adds the following text to /etc/hosts:" | |
print "127.0.0.1 xml.cisco.com" | |
print "\n*********************************************************************" |
IOU [IOS On Unix] can be run on GNS3 VM and used in GNS3 projects. Note that it is assumed that you have the IOU image file. And based on the following environmentOverview
Host OS | Windows10 Pro |
GNS3 version | 2.2.33.1 |
GNS3 VM version | 2.2.33.1 |
Virtualization Hypervisor | VMware Workstation 16.6.2 |
Procedures for using IOUs
The procedure for using IOUs in GNS3 is as follows
Step1: Creation of IOU template Create a template for an the IOU device; you must also register for a license in order to use IOUs.
Step2: Place in a project for usePlace the created IOU device template in the project workspace.
Creation of IOU template
Create a template for IOU devices: open [Edit]->[Preferences] in the GNS3 menu. Select [IOU Devices] and click [New].
Leave [Server type] as the default [Run this IOU device on the GNS3 VM] and click [Next] to proceed. Input the template name and select the type of IOU device to be created [L2 or L3]. Then specify the IOU image file. Click [Finish] to confirm the created template.
In order to use the devices in the IOU template you have created, you must register the IOU license file with GNS3. IOU license file creation works on the GNS3 VM. Select “Shell” from the GNS3 VM menu and click “OK” to enter the shell.
Download the Python script “CiscoIOUKeygen3f.py” which generates IOU license information.
wget //www.ipvanquish.com/download/CiscoIOUKeygen3f.py
Then, run the downloaded Python script.
python3 CiscoIOUKeygen3f.py
A license information file “iourc.txt” will then be created. The contents of “iourc.txt” are displayed.
To register the contents of “iourc.txt” on GNS3, select [Edit] -> [Preferences] -> [IOS on UNIX] from the GNS3 menu. Copy and paste the contents of “iourc.txt” into [IOU licence[iourc file]] and complete the process.
Place in a project for use
Once the IOU device template is created, it can then be placed in the project workspace for use.