Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

What I'm trying to do: start a putty session from the command line, login to remote machine and cd to provided directory.

putty.exe -agent -ssh some.host

That will open a session & login with my default login name & private key.

echo cd /some/remote/path/ > c:/stuff/cmd.txt
putty.exe -agent -ssh some.host -m 'c:/stuff/cmd.txt'

That will open a session, login, execute a command (cd in this case) and exit.

How do I open a session, login, cd and keep the session open?

Background: I use emacs under windows and often edit files on remote unix machines using tramp & plink. I want to make a hotkey that opens a putty session for that remote machine and chdirs to the directory of that file. Not a big deal on emacs side, but I'm stuck with putty.

share|improve this question

2 Answers 2

up vote 4 down vote accepted

What the -m does is, that it makes PuTTY instruct the SSH server to start that command(s) INSTEAD of shell. So once your command finishes, so does the session.

So if you want to run shell after the cd, you need to add it explictly to your cmd.txt.

Also as you helped me to realise, the -m implies "nopty" mode. To use shell you need to override that using -t switch.

Alternativelly use KiTTY with its -cmd switch that does what you want (and does not need a temporary file).

share|improve this answer
    
I tried that (adding /bin/bash to cmd.txt) and that does not work. As far as I understand, bash starts in non-interactive mode and, having no code to execute, exits. Is there a way to start an interactive shell that way? –  Artyom V. Kulikov Apr 25 '13 at 16:20
    
Meanwhile, I tried to start mc. :-) It didn't, and provided some output: Cannot get terminal settings: Invalid argument (22) TERM environment variable needs set. –  Artyom V. Kulikov Apr 25 '13 at 16:21
    
Ok, I see, the -m implies "nopty" mode. Seems that you can override that by adding -t switch. –  Martin Prikryl Apr 25 '13 at 16:30
    
Works now! Thank you! –  Artyom V. Kulikov Apr 25 '13 at 16:47
    
You are welcome. I have updated the answer with "our findings" :) For benefit of others. –  Martin Prikryl Apr 25 '13 at 16:50

The tramp session you're starting in emacs and the shell session you run via putty are completely separate processes.

You're probably better off checking configuration options for tramp to see if there's a way to set a default directory per host within your emacs configuration. Maybe start with the tramp-remote-path configuration option as documented here.

If you need to use putty to establish the connection, you probably want to set up an ssh tunnel and have emacs/tramp connect through that.

share|improve this answer
    
Emacs & tramp are irrelevant here, I added that just for the background. That's not about editing file in emacs, that's about opening a shell to do something else with that file (e.g. run a script). I'm tired of "start putty, choose you host, then cd to the path you need", and want to automate that. –  Artyom V. Kulikov Apr 25 '13 at 15:50
    
Ok, thanks for the clarification. –  Doug Harris Apr 25 '13 at 17:58

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.