2013-04-25 15:06:20 +0000 2013-04-25 15:06:20 +0000
37
37

Hoe kan ik een commando op afstand uitvoeren in PuTTY na het inloggen en de shell draaiende houden?

Wat ik probeer te doen: start een PuTTY sessie vanaf de commandoregel, log in op de machine op afstand en cd naar de opgegeven directory.

putty.exe -agent -ssh some.host

Dat zal een sessie openen & inloggen met mijn standaard login naam & prive sleutel.

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

Dat opent een sessie, logt in, voert een commando uit (cd in dit geval) en sluit af.

Hoe open ik een sessie, log in, cd en houd de sessie open?

Achtergrond: Ik gebruik emacs onder windows en bewerk vaak bestanden op Unix-machines op afstand met tramp & plink. Ik wil een sneltoets maken die een PuTTY sessie opent voor die machine op afstand en chdirs naar de directory van dat bestand. Geen groot probleem aan emacs kant, maar ik zit vast aan PuTTY.

Antwoorden (2)

33
33
33
2013-04-25 16:00:56 +0000

Wat de -m doet is, dat het ervoor zorgt dat PuTTY de SSH server instrueert om dat commando (die commando’s) te starten IN PLAATS van een shell. Dus als je commando klaar is, is de sessie ook klaar.

Als je de shell wilt starten na het cd commando, moet je het expliciet toevoegen aan je cmd.txt, zoals:

cd /my/path ; /bin/bash

Ook de -m impliceert “nopty”/non-interactieve modus. Om een interactieve shell te gebruiken moet je dat opheffen met de -t switch .

putty.exe -ssh example.com -m "c:\path\cmd.txt" -t
  • *

Als alternatief kun je KiTTY gebruiken met de -cmd switch, dat doet wat je wilt (en heeft geen tijdelijk bestand nodig).

-1
-1
-1
2013-04-25 15:11:43 +0000

De tramp sessie die je start in emacs en de shell sessie die je draait via putty zijn volledig gescheiden processen.

Je kunt waarschijnlijk beter kijken naar configuratie opties voor tramp om te zien of er een manier is om een standaard directory per host in te stellen binnen je emacs configuratie. Begin misschien met de tramp-remote-path configuratie-optie zoals hier gedocumenteerd .

Als je putty moet gebruiken om de verbinding tot stand te brengen, wil je waarschijnlijk een ssh tunnel opzetten en emacs/tramp via die tunnel laten verbinden.