Monday, May 7, 2007

Power of Tera Term

Tera Term is easily one of the most powerful free Terminal Emulation Software that I have come across and the power of it lies in its scripting language TTL. Of-course, it is not as extensive and capability rich as Perl but for a non-programmer, a browse through a single help file on TTL language is all it takes to create wonderful scripts that could make his/her life easier in maintaining huge networks.

The capabilities are limitless and if you could find better ways of enhancing the following script, please come forward and do your bit.

The purpose of the script is for terminal configuration of repetitive commands in multiple terminal enabled devices at once but sequentially without human intervention.

The other purpose of the script is to fetch terminal information from multiple terminal enabled devices at once but sequentially without human intervention.

The script is primarily designed for working with Cisco devices which can be configured using terminal emulation and which has a Command Line Interface (CLI).

The execution of the script requires Tera Term Software installed on the user’s computer. The Tera Term software can be downloaded from the following URL:

http://hp.vector.co.jp/authors/VA002416/teraterm.html

The Procedure for execution of the script is as follows:

  • Download Tera Term from the above mentioned URL.
  • Unzip and downloaded file and execute the Setup.exe file.
  • Install the Software in a specified destination.
  • Copy the below provided script in the Tera Term directory.
  • The script has an extension of .TTL and can be opened in notepad.
  • Open the file in notepad and change the variable ‘dirname’ in the script to reflect your Tera Term Directory.
  • Make two Text Files in the directory specified by the variable ‘dirname’ by the following names:

ip.txt

commands.txt

  • Make sure you have telnet access to all the devices you would like to configure.
  • Open the ip.txt file and enter the IP addresses of all the devices for which the configuration needs to be fetched or pushed. Place only one IP address per line.
  • Open the commands.txt file and enter the commands for configuration or commands for fetching configuration from the devices. Please note that the commands need to be compatible on all the devices entered in the ip.txt file. Please put in the commands in sequential order as you would configure the device in the normal circumstances. For eg:

terminal length 0

show running-config

config t

enable secret cisco

exit

terminal length 24

write memory

  • Please place the commands that are required after authentication is done. The script expects a device prompt (which can be customized easily) by default after authentication. You may change it at any point of time.
  • Execute the file ttpmacro.exe present in the Tera Term directory and select the macro '.ttl’ extension.
  • Please enter the Username for logging into the devices and press OK. Please note the Username and Password prompt would appear only once. The same username and password would be used to login into all the devices.
  • Please enter the password in the Password Prompt Dialog Box and press OK.
  • For Enable Password Authentication Prompt, click yes if you have enable password authentication configured in atleast some of the devices or click no if you don’t have enable password configured in any of the devices.
  • If yes, then provide the enable password to log into all the devices. The password is assumed to be common on all the devices.
  • For the Logging Dialog Box. Click yes if you want to log the output or click no if you don’t want to log the output.
  • If yes, enter the directory in which the logs have to be placed. For eg: If the directory is ‘C:\logs’ then enter it in the following format:

c:\logs\

  • Please note that the ‘\’ sign is important after you enter the directory path and name.
  • Sit back and relax, as the commands entered in the commands.txt file is executed in every device entered in ip.txt.

P.S.: While fetching configuration from any device like that of Cisco, please make sure to keep the terminal length to zero so that the device prompt appears immediately after the execution of the command.

Please give your feedbacks to make it better.



Below is the script for use with Tera Term. Just copy & paste the below code in a notepad and save it with a TTL extension.

;#######################################################
;Version 3.2 (Untested Beta Version)
;Created on 25/03/2007
;For Tera Term Macro Use Only
;Created originally for Cisco Switch & Routers.
;Customizable script, please feel free to edit it.(In fact you have to edit it)
;For usage, execute ttpmacro.exe and select this script
;Write all the ip addresses in sequential order in a file by the name of 'ip.txt'
;Write all the commands in sequential order in a file by the name of 'commands.txt'
;and place the text files in the directory as set by the 'setdir' keyword.
;Complaints and suggestions for improvement welcome.
;Please feel free to take it to the next level and share it with others.
;#######################################################

;######################################################
;Main Script
;######################################################

timeout = 5
dirname = 'E:\Program Files\TTERMPRO313'
setdir dirname
fileopen addressfile 'ip.txt' 0
inputbox 'Username:' 'Username Prompt'
Username = inputstr
passwordbox 'Password:' 'Password Prompt'
Password = inputstr
yesnobox 'Is enable password authentication required?' 'Enable Password Question'
if result=0 then
goto jumper1
endif
passwordbox 'Enable Password:' 'Enable Password Prompt'
Enable = inputstr
:jumper1
yesnobox 'Would you like to log the output?' 'Logging'
Logger = result
if Logger = 0 then
goto looper1
endif
inputbox 'Directory path & name followed by \' 'Logging Directory'
loggerpath = inputstr
dirmaker = 'cmd /C md '
strconcat dirmaker loggerpath
exec dirmaker

:looper1
filereadln addressfile ip
connect ip
if result = 1 then
goto fclose1
endif
wait 'Username:' 'Password:' '>' 'login:'
if result = 0 then
call terminator
goto looper1
elseif result = 1 then
goto jumper4
elseif result = 2 then
goto jumper5
elseif result = 3 then
goto jumper6
elseif result = 4 then
goto jumper4
endif
:jumper4
sendln Username
wait 'Password:'
:jumper5
sendln Password
if Logger = 0 then
goto jumper2
endif
loggerfile = loggerpath
strconcat loggerfile ip
logopen loggerfile 0 0
loggerfile = ''
:jumper2
wait '#' '>'
if result = 0 then
call terminator
elseif result = 1 then
call commander
call terminator
elseif result = 2 then
:jumper6
call enabler
call commander
call terminator
endif
goto looper1
:fclose1
fileclose addressfile
closett
end

;################################################
;Enabler is a sub-routine which provides enable password authentication.
;################################################

:enabler
setdir dirname
sendln 'enable'
wait 'Password:'
sendln Enable
return

;#####################################
;Commander is a sub-routine which executes the
;commands placed in 'commands.txt' file
;#####################################

:commander
setdir dirname
fileopen commandfile 'commands.txt' 0
:looper2
filereadln commandfile statement
if result goto fclose2
sendln statement
wait '#' '>'
if result = 2 then
goto fclose2
endif
goto looper2
:fclose2
fileclose commandfile
return

;###########################################
;Terminator is a sub-routine which provides terminal closure and
;passing the control to the main sub-routine for loop completion.
;###########################################

:terminator
beep
if Logger = 0 then
goto jumper3
endif
logclose
:jumper3
closett
return

;###########################################

20 comments:

milis said...

nice program.

i try rhis script and it's make my work easier than before.

i just want to ask you, why if i use more than 2 ip address on my ip.txt list the log file just can do report 2 host on my device, another host is not complete on the log file


sorry my bad english

Supriya said...

hello a very nice script indeed...
can you please let me know if i need to automate certain commands which are a part of test execution process and i need to repeat the same say 5000 times for robustness tests then can it be done by using the .ttl file ..please let me know the same.
i am trying to automate the key presses on PC Keyboard to Automate my test case execution on teh TI Zoom3 OMAP3630 board

Frank said...

I'd rather point to the supported version; it's an open source project now:
http://en.sourceforge.jp/projects/ttssh2/

Sang NgĂ´ said...

I'm sorry, if i have a serial connection, what should i do when i want to config this. my device is a barcode scanner.

Show you said...

advantageous humans in our academy district. Cheap Tera Gold
cheap tera gold

rs

teralife said...

We know what our WOW Gold customers need, so we offer the best service and best Cheap WOW Gold to you. More and more WoW players know zyy.com,more and more gamers buy WoW gold from buy wow gold cheap. We are happy to see this, and we will continue to do well. Enjoy your game!

Embedded $!t@ said...

Hi,,! useful scripts, thank you so much. I just want to know, Can we able to maintain any counter [incrementing one variable] using this script.? I need that to finish my work.

Thanks in advance.

hugginss jetterees said...

Embroidery is definitely the art of decorating fabric or any other material by stitching Chinese Fashion various models employing yarn or thread in addition to a needle. In some circumstances, other components such as semi-precious Computer Repair Tracking Software and precious stones or metal strips are made use of so as to add uniqueness for the embroidered clothing. This decorative stitching technique is done mainly by hand and is time consuming but generates astonishing results. Because of the industrial revolution, machines had been introduced which now make the job a lot easier and faster to achieve.

Matt Lafflin said...

I've used this script before but it no longer seems to work for me.....nothing but syntax errors has the macro language changed with versions or something?
I'm using 4.75

Matt Lafflin said...

I've used this script before but now I can;t seem to get it to work at all. Everything is syntax errors. I'm not sure what has changed perhaps it's my version of TeraTerm (4.75)?
Things go wrong as soon as the dirname line (syntax error).

wow9gamer said...

Please enter the Username for logging into the devices and press OK. Please note the Username and Password prompt would appear only once. The same username and password would be used to login into all the devices.Buy LOL Account

Cheap League of Legends Elo Boost

hugginss jetterees said...

Nokia, meanwhile office 2010 professional plus key, has dominated the bulk in the platform's shipments. The Finnish business created a large bet on Windows Telephone a couple years ago, shunning its personal operating system and Android office professional plus 2010 retail pack in favor of Microsoft's computer software.

Olichik said...

Well… that’s interessting but to be honest i have a hard time figuring it… online-essay-writer.org wonder how others think about this..

Rahul Saxena said...

we request you to please provide the script to modify the default router username/password automatically.

hou said...


The capabilities are limitless and if you could find better ways of enhancing the following script, please come forward and do your bit.
meizu
xiaomi mi4i
xiaomi redmi note 2

joe said...

I ran the script but no output is writing to the log file. Can someone help?

Thanks!
Joe

salman said...

I ma having problem running this script , not able to run macro .

Ade said...

The syntax for the connect command has changed and the line 'connect ip' doesnt work anymore.

My workaround is to amend the script as follows:

Existing:

filereadln addressfile ip
connect ip

Replacement:

filereadln addressfile ip
strconcat ip ':23 /nossh /T=1'
connect ip

What this does is to append :23 /nossh /T=1 to the ip address before it tries to connect. Then it works

Hope this helps other people as I use this script so often and it has got me out of so many problems

witri zakia said...

i run this script, and i'm using 4.96.
but, i still getting error in line dirname and setdir.
anyone can help me to solve my problem??

Meikel said...

Change "dirname" into "dir"