How to prevent PuTTY shell from auto-exit after executing command from batch file in Windows?

mkkhedawat picture mkkhedawat · Nov 22, 2014 · Viewed 30.5k times · Source

I have written a batch file like this:

Start putty.exe -ssh 172.17.0.52 -l root -m dummy.txt

Then in dummy.text I have written this command:

avahi-daemon --no-drop-root -D
export XVHMI_USERCONFIG_PATH=/home/UserProfileConfig
export XDG_RUNTIME_DIR=/tmp
cd /opt/bosch/airis/bin

When I run the .bat file, PuTTY starts, commands execute (hopefully, not sure) and it exits.

How to keep that window open?

I have googled for the same, but no solid help. I read on stack overflow itself that we need to define something in txt file, but what and most importantly how?

Answer

Martin Prikryl picture Martin Prikryl · Nov 22, 2014

The SSH session closes (and PuTTY with it) as soon as the command finishes. Normally the "command" is shell. As you have overridden this default "command" and yet you want to run the shell nevertheless, you have to explicitly execute the shell yourself:

avahi-daemon ... ; /bin/bash

Also as use of -m switch implies a non-interactive terminal, you probably want to force an interactive terminal back using -t switch.


Though, I'm not really sure if you want to execute shell or if you just want to see your command output. If the latter, did you consider using plink? It's console terminal client from PuTTY package. Being console application, it inherits console of parent batch file, and you can pause the batch console from closing using pause command, if needed.

Another option (both for PuTTY and plink) is to pause on remote side. E.g. Using read command.

avahi-daemon ... ; read