Softpanorama
May the source be with you, but remember the KISS principle ;-)

Contents Bulletin Scripting in shell and Perl Network troubleshooting History Humor

TeraTerm Macros

News Teraterm Recommended Links Reference

Connect command

How to use Tera Term for the Serial Console
Expect SSH Password-less SSH login Telnet protocol Serial Console on Solaris sshfs
CygTerm+ LogMeTT   Tips Humor Etc

Teraterm macro language is documented at MACRO Help Index. The central command is Connect command for which we have a special page. Teraterm distribution contains six sample macros:

delpassw.ttl
dialup.ttl
index
login.ttl
mpause.ttl
random.ttl
screencapture.ttl
ssh2login.ttl
wait_regex.ttl

The most important are two macros: login.ttl and ssh2login.ttl. They are a little bit too general to my taste and can benefit from some minor tweaking before you adopt them for login to real servers.  For example ssh2login.ttl asks a lot of unnecessary questions ;-)

... ... ... 

msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr

connect msg
For Solaris servers it can be modified to
msg = 'box106.myfirma.com:22 /ssh /auth=password /user=root /passwd=mypass-1234'
connect msg
wait   "#"
sendln "bash"
sendln ". ~likbez/.profile"
sendln "cd ~likbez" 

For Linux boxes bash shell is default for root so the line sendln "bash" is redundant. After such a tweaking and testing, you can rename is to box106.ttl, drag this macro to the desktop and repeat the process for other servers so that each macro is individual to a server and represented by an icon.  Clicking on this icon will launch the macro that login you to a server. Say unto a hundred servers (ten rows ten servers each) this approach works reasonably well, especially if you have dual display configuration (in this case you better put icons on the second display). If you have more then that use folders for groups of similar servers such as Solaris, HP-UX, Linux, AIX and  put of the desktop folders instead of icons for the macros. Clicking on this icon will launch the macro. This way you can have unique macros for each of your important servers so that you do not need to recreate environment and other preliminary steps manually for it.  That can save a lot of time and is simpler and more efficient then programming keyboard macros.

You just need to write a script in Cygwin that changes passwords when time has come from a special table, using secret formula (for example $pass=$this_month_prefix."-".substr($server_name,-4) ), or whatever.

You can also use Passwordless SSH login for authentication to you own account and use sudo to get to root. That removes the choir of changing root accounts periodically.

Generally you should use version 4.77 or later as there were important additions to macro language in each of recent versions (starting from 4.52):

2006.2.10 (Ver 4.27)

2006.10.09 (Ver 4.46)

2007.8.8 (Ver 4.53)

2007.9.30 (Ver 4.54)

New:

Priority Operator
1 not ~ ! +(unary) -(unary)
2 * / %
3 + -
4 >> << >>>
5 and &
6 xor ^
7 or |
8 < > <= >=
9 = == <> !=
10 &&
11 ||

Old:

Priority Operator
1 not ~ ! +(unary) -(unary)
2 * / %
2 and &
3 + -
3 or xor | ^
4 = <> < > <= >=
5 &&
6 ||

2007.12.4 (Ver 4.56)

2008.1.15 (Ver 4.57)

2008.6.25 (Ver 4.59)

added 'strmatch' macro command.
- added 'setrts' and 'setdtr' macro command.

2008.9.23 (Ver 4.60)

- added 'crc32' and crc32file macro command.
- added 'getttdir' macro command.

2009.3.22 (Ver 4.62)

2009.7.5 (Ver 4.63)

2009.11.10 (Ver 4.64)

2010.2.20 (Ver 4.65)

2010.5.31 (Ver 4.66)

2010.8.31 (Ver 4.67)

2011.3.5 (Ver 4.69)

Here is funny a sample program:

; 1. Open Tera Term Pro (free VT100 emulator)
; 2. Control -> Macro
; 3. choose 99b.ttl
;
; it will run even if you close the app, to kill prematurely please open
; taskmanager and kill the ttpmacro.exe
;
; 99 Bottles of Beer macro for Tera Term
; by Lance Yamada

for i 99 1

j = i - 1
int2str istr i
int2str jstr j
        strconcat istr ' bottles of beer on the wall,'
strconcat jstr ' bottles of beer on the wall!'

if i = 1 then
   messagebox '1 bottle of beer on the wall,' 'Tera Term'
   messagebox 'time to get more beer!' 'Tera Term'
else
   messagebox istr 'Tera Term'
   messagebox 'take one down pass it around,' 'Tera Term'
   messagebox jstr 'Tera Term'

endif
next

Several sample ttl files are included with Teraterm, but they usually need some minor tweaking before they work with real servers.  For example:

; sample macro of Tera Term
; 
; File: ssh2login.ttl
; Description: auto login with SSH2 protocol
; Environment: generic
; Update: 2004/12/4
; Author: Yutaka Hirata

username = 'nike'
hostname = '192.168.1.3'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr
You can drag macro to the desktop so that each macro is represented by an icon.  Clicking on this icon will launch the macro.

This way you can have unique macros for each of you important servers so that you do not need to recreate environment and other preliminary steps manually for it.  That can save a lot of time and is simpler and more efficient then programming keyboard macros.


Top updates

Bulletin Latest Past week Past month
Google Search


NEWS CONTENTS

Old News ;-)

[Jun 03, 2011] Power of Tera Term

May 7, 2007 | Extreme Networking

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 Procedure for execution of the script is as follows:

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

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

http://logmett.com/forum/viewtopic.php?t=1085

Ishmael first of all thank you so much for your time and efforts! Below you'll find my script, please feel free to comment and to point me where i'm doing wrong any comments on how to improve are appreciated! thank you again!

Alessio

P.S. is your nick remotely connected with a David Gerrold Book?

Select all

  1. ;°°°°°°°°°°°°°°° Conf Parameters °°°°°°°°°°°°°
  2.  
  3. username='XXXXX' ; username for connection
  4. password='YYYYYY' ; password for connection
  5. ip_address='IP_TEST.txt'; file with ip addresses of the routers to analyze
  6. timeout=5; timeout
  7. Sedi='indirizzi.txt'; file containing results
  8.  
  9.  
  10. ;°°°°°°°°°°°°°°°° APERTURA FILE CONTENENTE IP °°°°°°°°°
  11. ; Opening file with addresses
  12.  
  13.     fileopen fhandle Ip_address 0
  14.     filecreate fh Sedi
  15.    
  16. ;°°°°°°°°°°°°°°°° INIZIO LOOP °°°°°°°°°°°°°°°°°°°°°°°°
  17. ; Initial Loop
  18.  
  19.     :loop
  20.         filereadln fhandle ip_address
  21.         if result goto fine
  22.         flushrecv
  23.  
  24. ;°°°°°°°°°°°°°°°° CONNESSIONE °°°°°°°°°°°°°°°°°°°°°°°°°
  25. ; TT connects to one of the addresses in the list specified above
  26.    
  27.      connect ip_address
  28.  
  29. ;°°°°°°°°°°°°°°°° INVIO USERNAME °°°°°°°°°°°°°°°°°°°°°°
  30. ; Routine for sending username to host
  31.  
  32.     wait 'Username:'
  33.        if result=0 then
  34.         space = '_'
  35.         strconcat Ip_address space
  36.         strconcat Ip_address 'non connessa'
  37.         filewriteln fh ip_address
  38.             goto prossimo
  39.        endif
  40.         sendln username
  41.  
  42. ;°°°°°°°°°°°°°°°° INVIO PASSWORD °°°°°°°°°°°°°°°°°°°°°°
  43. ; Routine for sending password to host
  44.  
  45.     wait 'Password:'
  46.        if result=0 then
  47.         space = '_'
  48.         strconcat Ip_address space
  49.         strconcat Ip_address 'Tacacs non funzionante'
  50.         filewriteln fh ip_address
  51.         goto prossimo
  52.        endif
  53.        setsync 1
  54.     sendln password
  55.        setsync 0
  56.    
  57. ;°°°°°°°°°°°°°°°° CONTROLLO LINEA BGP °°°°°°°°°°°°°°°°°°°°°°
  58. ; TT sends commands for checking BGP links
  59. ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
  60.  
  61.  
  62.        flushrecv                       ;ensure nothing is in the buffer
  63.        sendln 'terminal length 0'  
  64.        sendln 'sh bgp a s'
  65.             for i 1 16
  66.             recvln           ;skip past technobabble
  67.                next
  68.                recvln
  69.                filewriteln fh inputstr  ;now save two relevant lines in a file
  70.                recvln
  71.                filewriteln fh inputstr
  72.         goto prox
  73.  
  74. ;°°°°°°°°°°°°°°°° DISCONNESSIONE  con HOST °°°°°°°°°°°°°°°°
  75. ; Disconnect from the host
  76.  
  77.     sendln 'exit'
  78.  
  79. ;°°°°°°°°°°°°°°°°     LOOP     °°°°°°°°°°°°°°°°°°°°°°°°°°°°
  80. ;Loop Procedure
  81.  
  82.     :prox
  83.         pause 1
  84.         disconnect
  85.         closett
  86.         goto loop
  87.  
  88. ;°°°°°°°°°°°°°°°°° FINE PROGRAMMA °°°°°°°°°°°°°°°°°°°°°°
  89. ; Close TT after ll IP have been processed
  90.  
  91.     :end
  92.         fileclose fhandle
  93.         end
  94.  

I would put in a testlink after your connect to make sure the connect worked. I think you might be having another issue related to perhaps your hardware or network setup that is not allowing you to connect.

As a suggestion, do a minor rewrite to get rid of all GOTO statements. They were unavoidable in TeraTERM 2.3, but the latest version has more than enough types of flow control statements to avoid them completely. This will save you much grief in the long run, trust me. Also, it would be easier to read if you only indented loops and if statement bodys.

Think Herman Melville instead of David Gerrold. Rather pretentious literary reference from my younger days that has somehow stuck.

[ Mar 16, 2007 ] TeraTerm Support Forums View topic - First step to Tera Term Macros

linkstate
Joined: 16 Mar 2007
Posts: 7

Posted: Fri Mar 16, 2007 5:34 pm    Post subject: First step to Tera Term Macros


First to all I want to congratulate this wonderful tool of trade 


I'm willing to take my first step into Tera Term Macros and I will probably won't make it on my own.

So here's the deal.

I want to be able to telnet to an access router in a companies HQ and then telnet into all the switches and do a "show tech" command in order to backup all the configs and informations about the switches into a text file.

All the switches are Cisco 2950.


Please help this poor man in need of your assistance.

With My best regards, boris

====
 

boris
Guru


Joined: 08 Jan 2005
Posts: 496
Location: Seattle, WA, USA
 

Posted: Fri Mar 16, 2007 6:37 pm    Post subject: Reply with quote

boris wrote:
Depending on the number of switches different approaches can be taken. Can you say roughly how many switches you need to connect to?

About 600 Switches :s

Cheers,

Posted: Fri Mar 16, 2007 7:16 pm    Post subject: Reply with quote

TeraTerm macro can definitely help you but writing such script is not an easy task. I'd suggest you to approach it in few steps.

Start with writing telnet connection macro script to establish connection to your access router in HQ. You can use connection template from LogMeTT or sample code from one of the topics in these forums.

Then develop your script further to establish the second connection.

Step 3 will be to get familiar with opening and closing log files from macro. Here you can also add your "show tech" command.

Once you get to this point your macro will be able to reach one of your Cisco-s collect printout and save it into local file.

Then comes the tricky part. You need to store IP addresses of all your 600 switches in plain text file and run your macro in the loop where every execution will be using one IP from your IP list. Similar issue was discussed not long ago on our forums; just do some search and reading here. 2 more files that will help you are macro.hlp and LogMeTT.chm. You will find them both in TeraTerm package. Finally do not forget to give different file names to each log file. You probably can build log name from IP address and current time stamp. Check code snippets in our forums for the example.
_________________
Thanks.
Best regards,
// Boris

linkstate
Newbie


Joined: 16 Mar 2007
Posts: 7

 

Posted: Fri Mar 16, 2007 8:24 pm    Post subject: Reply with quote

I'm feeling a bit fuzzy about this ....


My first piece of code turned out something like this:

connect 'ip address:23 /nossh' ----> that's my office
wait'Username:'
sendln'usernamexxx'
wait'Password:'
sendln'passwordxxx'
wait'hostname>'
sendln'telnet 172.23.128.11' ----> that's the HQ of the company
wait'Username:'
sendln'usernamexxx'
wait'Password:'
sendln'passwordxxx'

fileopen filehandle 'file.txt' 0

filereadln filehandle line

while result=0

sendln line

wait'Username:'
sendln'usernamexxx'
sendln'passwordxxx'
sendln 'show tech'
sendln'exit'

endwhile

exit


My problem is that the macro does read the first ip address of the text file but it doesn't continue with the other ones.

Regarding the issue of saving the logs with each hostname or ip address, that remains a complete phantom to me.


Hope that explained myself correctly to you.


My regards,

boris
Guru


Joined: 08 Jan 2005
Posts: 496
Location: Seattle, WA, USA
 

Posted: Sat Mar 17, 2007 6:22 am    Post subject: Reply with quote

Do you have word 'telnet' followed by IP address on each line of your file.txt?
_________________
Thanks.
Best regards,
// Boris
linkstate
Newbie


Joined: 16 Mar 2007
Posts: 7

 

Posted: Sat Mar 17, 2007 2:45 pm    Post subject: Reply with quote

No. Just the ip addresses. why ? is it supposed to ?
boris
Guru


Joined: 08 Jan 2005
Posts: 496
Location: Seattle, WA, USA
 

Posted: Sat Mar 17, 2007 5:03 pm    Post subject: Reply with quote

The same way as you do
Quote:
sendln'telnet 172.23.128.11'
earlier in your script, you need to pass method of connection and IP address in
Quote:
sendln line
Content of variable line is one string of your file.txt. If file does not contain words 'telnet' than you get as the result
 
Code:
sendln  172.23.x.y  ; <- whatever IP you have
which is the same as if you would type only IP address at command prompt without mentioning whether you need telnet, ssh, rlogin etc.

Instead of adding 600 words 'telnet' to your file, the better approach would be to concatenate word 'telnet' and IP taken from the file.

The code can look like this:
 

Code:
...

fileopen filehandle 'file.txt' 0

filereadln filehandle line

while result=0
connect_line='telnet ' ; <-- make sure you have trailing space
strconcat connect_line line
sendln connect_line

wait'Username:'
sendln'usernamexxx'
sendln'passwordxxx'
sendln 'show tech'
sendln'exit'


endwhile
...


_________________
Thanks.
Best regards,
// Boris
linkstate
Newbie


Joined: 16 Mar 2007
Posts: 7

 

Posted: Sun Mar 18, 2007 10:46 am    Post subject: Reply with quote

Okay.
I have something like this...
I'm testing with a .txt file with just two ip addresses for testing.
The thing is that he only telnets into the first ip address in that file and doesn't jump into the 2 ip address.
Could it be something with the while procedure ?


sendln line

while result=0
connect_line='telnet ' ;
strconcat connect_line line

wait'Username:'
sendln'XXXXX'
sendln'XXXX'
timeout = 4
sendln 'show tech'
sendln'exit'

endwhile


Thank you for your assistance

boris
Guru


Joined: 08 Jan 2005
Posts: 496
Location: Seattle, WA, USA
 

PostPosted: Sun Mar 18, 2007 11:11 am    Post subject: Reply with quote

Read description of strconcat function. Your connection string is in connect_line and not in line.
There are few other issues with your last code. Please post here your complete macro, otherwise it is unclear if there are scripting or copy/pasting errors.
_________________
Thanks.
Best regards,
// Boris
linkstate
Newbie


Joined: 16 Mar 2007
Posts: 7

 

PostPosted: Sun Mar 18, 2007 11:18 am    Post subject: Reply with quote

Let me see if I can explain this better to you.

Here's the whole code with comments

connect '213.xx.xx.xx:23 /nossh' ---> My first telnet to my company
wait'Username:'
sendln'xxxxxxx'
wait'Password:'
sendln'xxxxxxx'
wait'hostname>'
sendln'telnet 172.23.xx.xx' ---------> My telnet to the other company
wait'Username:'
sendln'xxxxx'
wait'Password:'
sendln'xxxxxxx'

-------------"So far So good here"--------------------


fileopen filehandle 'andre.txt' 0

filereadln filehandle line

sendln line

while result=0
connect_line='telnet ' ;
strconcat connect_line line

wait'Username:'
sendln'xxxxx'
wait'Password:'
sendln'xxxxx'
timeout = 4
sendln 'xxxxx'
sendln'exit'

endwhile

exit

boris
Guru


Joined: 08 Jan 2005
Posts: 496
Location: Seattle, WA, USA
 

PostPosted: Sun Mar 18, 2007 2:48 pm    Post subject: Reply with quote

Try this code

 

Code:
connect '213.xx.xx.xx:23 /nossh'
wait 'Username:'
sendln 'xxxxxxx'
wait 'Password:'
sendln 'xxxxxxx'
wait 'hostname>'
sendln 'telnet 172.23.xx.xx'
wait 'Username:'
sendln 'xxxxx'
wait 'Password:'
sendln 'xxxxxxx'

fileopen filehandle 'andre.txt' 0

while result=0
 connect_line='telnet '
 filereadln filehandle line
 strconcat connect_line line
 sendln connect_line
 wait 'Username:'
 sendln 'xxxxx'
 wait 'Password:'
 sendln 'xxxxx'
 timeout = 4        ; I'm not sure why do you need this line
 sendln 'xxxxx'     ; and this line
 sendln 'show tech'
 wait 'xxxxxxxxx'  ; <= whatever appears at the end of 'show tech'  printout
 sendln 'exit'
endwhile

fileclose filehandle

exit


_________________
Thanks.
Best regards,
// Boris
    IshmaelCallMe
Coach


Joined: 25 Jan 2006
Posts: 119
Location: Denver, Colorado, USA
 

PostPosted: Mon Mar 19, 2007 6:53 am    Post subject: Reply with quote

You need to move your filereadln command to just before the while and a copy of it to just before the endwhile so that the result variable gets set correctly for both the first and subsequent loops.
boris

Guru

Joined: 08 Jan 2005
Posts: 496
Location: Seattle, WA, USA
Mon Mar 19, 2007 7:14 am    Post subject: Thanks, I missed that

Code:

connect '213.xx.xx.xx:23 /nossh'
wait 'Username:'
sendln 'xxxxxxx'
wait 'Password:'
sendln 'xxxxxxx'
wait 'hostname>'
sendln 'telnet 172.23.xx.xx'
wait 'Username:'
sendln 'xxxxx'
wait 'Password:'
sendln 'xxxxxxx'

fileopen filehandle 'andre.txt' 0
filereadln filehandle line

while result=0
 connect_line='telnet '
 strconcat connect_line line
 sendln connect_line
 wait 'Username:'
 sendln 'xxxxx'
 wait 'Password:'
 sendln 'xxxxx'
 timeout = 4        ; I'm not sure why do you need this line
 sendln 'xxxxx'     ; and this line
 sendln 'show tech'
 wait 'xxxxxxxxx'   ; <= whatever appears at the end of 'show tech'  printout
 sendln 'exit'
 filereadln filehandle line
endwhile

fileclose filehandle

exit
_________________
Thanks.
Best regards,
// Boris

IshmaelCallMe
Coach

Joined: 25 Jan 2006
Posts: 119
Location: Denver, Colorado, USA
Posted: Mon Mar 19, 2007 8:11 am   


There ya go, that oughta work. 

One additional thing I would suggest to the original poster is to set the "timeout" variable BEFORE anyents (not in the middle of the loop, as it is ) and then (ideally) check the "result" variable each time.

If the timeout variable is not set, I believe it defaults to 0, which means the script will wait forever at that point if the text does not show up.

Recommended Links

Good source of inspiration can also be

Forums




Etc

Society

Groupthink : Understanding Micromanagers and Control Freaks : Toxic Managers : BureaucraciesHarvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Two Party System as Polyarchy : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

Skeptical Finance : John Kenneth Galbraith : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotes : Oscar Wilde : Talleyrand : Somerset Maugham : War and Peace : Marcus Aurelius : Eric Hoffer : Kurt Vonnegut : Otto Von Bismarck : Winston Churchill : Napoleon Bonaparte : Ambrose Bierce : Oscar Wilde : Bernard Shaw : Mark Twain Quotes

Bulletin:

Vol 26, No.1 (January, 2013) Object-Oriented Cult : Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks: The efficient markets hypothesis : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Vol 23, No.10 (October, 2011) An observation about corporate security departments : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

 

The Last but not Least


Copyright © 1996-2014 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Site uses AdSense so you need to be aware of Google privacy policy. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine. This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to make a contribution, supporting hosting of this site with different providers to distribute and speed up access. Currently there are two functional mirrors: softpanorama.info (the fastest) and softpanorama.net.

Disclaimer:

The statements, views and opinions presented on this web page are those of the author and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.

Last modified: February 19, 2014