23

Is there any way to save the PuTTY output to a file using the command line? I know this is easily done using the GUI but in my case it has to be done automatically.

What I'm working on:

User clicks batch file -> starts PuTTY, automatically connects to my device over SSH and runs a bunch of commands -> PuTTY should save the output to a file.

The last part I can't get working. Is there any command to do this?

endolith
  • 25,479
  • 34
  • 128
  • 192
sjaak
  • 644
  • 1
  • 7
  • 18

4 Answers4

41

This can be done with putty. The answer is little late considering the time the questions was asked, however this might help someone.

In putty, using GUI, you can save sessions with logging option on, as shown below.

enter image description here

enter image description here

Enter Host Name, Name the session, Go to Logging Option in the left top corner, select all sessions, provide log file name and location, go back to Session tab, click on the save button. Done, you have saved a session.

Now open CMD and write the command as below enter image description here

You are done. Every time this session is invoked, the commands and output will be logged. Hope this helps.

azim
  • 575
  • 4
  • 11
  • 3
    The question ask how to enable logging at putty.exe command line level, without having to enable it manually at GUI level. (Imagine you manage 100+ servers, you need to create 100+ sessions with logging enabled at GUI level, it is tedious). – Harry Sep 02 '20 at 09:57
3

The specific program putty is not designed for this. Instead use plink, a different program in the PuTTY suite, which uses the same session settings and keys as putty but gets input from stdin and puts output to stdout, both of which can be redirected in the usual ways. See http://the.earth.li/~sgtatham/putty/0.63/htmldoc/Chapter7.html#plink .

dave_thompson_085
  • 34,712
  • 6
  • 50
  • 70
1

As mentioned in previous answer, use plink for this.

Make sure it is in your environment path, by typing

plink -V

in your console. If it returns a version number, then you know it is in environment path variables. If it doesn't, probably best to fix this first. There are plenty of good SO answers to help you with this. Failing that, use the full path to your plink.exe in the CLI command that follows.

Then use plink to open your ssh connection, with the option -v set to provide verbose output. Finally, this all needs to be piped to a log file.

The complete cli command that I use is

plink -v username@xxx.xxx.xxx.xxx  > ssh-output.log 2>&1

Open up the file ssh-ouput.log to see the results.

charliefortune
  • 3,072
  • 5
  • 28
  • 48
1

Expanding on Dave's and Charlie's answers...

Apart from making sure plink is in the path, also check whether you have write access to local ouput file.

This is how you redirect command output from remote machine to local file with plink. In this example we store an output from man page for nfcapd:

plink joe@192.168.50.50 -pw joespassword man nfcapd > output.log 2>&1

The first time you try to access the server, it will ask you store key in cache. So make sure to access the machine at least once before:

plink joe@192.168.50.50 -pw joespassword

The server's host key is not cached in the registry. You 
have no guarantee that the server is the computer you
think it is.
...
Store key in cache? (y/n)
rluks
  • 2,762
  • 8
  • 38
  • 56