Linux – Call putty/plink to start a remote SSH linux script with user input

linuxputtyscriptshellssh

Seemingly simple question, which yields slightly undesired results.

Execute putty to start a script on a remote linux server which requires user input

The remote script does a read -p "Please enter name" NAME
I can use plink to execute a script over SSH, the following attempts and problems are shown below :-
Note the -load ns is to load a session that doesnt exist, ie ensure no defaults are used

1) plink.exe -load ns <ip_addr> -l <user> -pw <password> <script path/name>
Problem) Doesn't allow/show user input, ie its non-interactive.

2) Add -t to allocate a pty :-
plink.exe -t -load nc <ip_addr> -l <user> -pw <password> <script path/name>
Problem) Ok, so now the user input can be seen, but I get Ctrl+H (^H) when backspace is pressed, ok if the user doesnt make a mistake!

3) Use putty instead with a saved session
putty.exe -load "SavedSession"
Problem) (a) Get a new window opened, not a biggy, but not as nice. (b) saved session cannot be easily moved. (c) Get password prompt, cannot provide password like with plink, I know I know, use keys, but this is a closed, private network, and its easier not to bother with keys!

So ideally, I would like the SSH to execute in-line, that is from within the batch file/command line shell I am in, not prompt for username/password, run the linux script and allow prompts and delete/backspace to work.

Many thanks for any ideas/solutions in advance.

Best Answer

Add -t to allocate a pty ... Ok, so now the user input can be seen, but I get Ctrl+H (^H) when backspace is pressed

Make your script run [ -t 0 ] && stty erase ^H and the Backspace key should be accepted.

An even better solution is to use a port of OpenSSH – for example, that from Cygwin or MinGW – it will give you full terminal emulation as PuTTY does, but keep it in the console window. (The plink tool is designed for raw 8-bit data transfers.)

Edit: A downside of Cygwin might be its lack of IPv6 support (if I remember correctly).


Get password prompt, cannot provide password like with plink

[...] but this is a closed, private network, and its easier not to bother with keys!

And yet you have a problem which setting up keys would solve :)

(I'll feel bad for saying this, but PuTTY also accepts -pw.)

Related Question