jimradford / superputty

The SuperPuTTY Window Manager for putty sessions
https://www.facebook.com/superputty
MIT License
1.9k stars 321 forks source link

Added Python scripting capability #860

Open glennholt opened 2 years ago

glennholt commented 2 years ago

I added the capability to script via an embedded IronPython interpreter. Here are examples of two equivalent SPSL and Python scripts:

SPSL

!/bin/spsl

PROMPT What is your password? SENDLINE ls -ltr SENDCHAR w SENDKEY {ENTER} SLEEP 10000 OPENSESSION TestTwo

Python

!/bin/python

PROMPT("What is your password?") SENDLINE("ls -ltr") SENDCHAR("w") SENDKEY("{ENTER}") SLEEP(10000) OPENSESSION("TestTwo")

In addition, the Python interpreter exposes the current SessionData object via a locally scoped variable, making scripts like this possible:

if (Session.SessionName == "Test"): SENDLINE("echo 'Session name: " + Session.SessionName + "'") SENDLINE("echo 'Session ID: " + Session.SessionId + "'") SENDLINE("echo 'Session host: " + Session.Host + "'") SENDLINE("echo 'Session protocol: " + str(Session.Proto) + "'") SENDLINE("echo 'Session port: " + str(Session.Port) + "'")

With the addition of a full Python interpreter the SuperPutty user can create scripts which include not only the "built-in" SPSL commands but can also use any amount of custom logic.

The Python scripting capability has been added to both scripts executed on terminal creation as well as the script entry dialog.