Bagaimana menjalankan perintah jarak jauh di Putty setelah login & menjaga shell tetap berjalan?

35

Apa yang saya coba lakukan: memulai sesi Putty dari baris perintah, login ke mesin jarak jauh dan cdke direktori yang disediakan.

putty.exe -agent -ssh some.host

Itu akan membuka sesi & login dengan nama login default saya & kunci pribadi.

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

Itu akan membuka sesi, masuk, jalankan perintah ( cddalam hal ini) dan keluar .

Bagaimana cara membuka sesi, masuk, cddan menjaga sesi tetap terbuka?

Latar Belakang: Saya menggunakan emacs di bawah windows dan sering mengedit file pada mesin Unix jarak jauh menggunakan tramp & plink. Saya ingin membuat hotkey yang membuka sesi Putty untuk mesin jarak jauh dan chdir ke direktori file itu. Bukan masalah besar di sisi emacs, tapi aku terjebak dengan Putty.

Artyom V. Kireev
sumber

Jawaban:

33

Apa yang -mdilakukan adalah, bahwa itu membuat Putty menginstruksikan server SSH untuk memulai perintah BUKAN shell. Jadi begitu perintah Anda selesai, begitu juga sesi.

Jika Anda ingin menjalankan shell setelah cdperintah, Anda perlu menambahkannya secara eksplisit ke Anda cmd.txt, seperti:

cd /my/path ; /bin/bash

Juga -mmenyiratkan "nopty" ​​/ mode non-interaktif. Untuk menggunakan shell interaktif, Anda harus menimpanya menggunakan -tswitch .

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

Atau gunakan KiTTY dengan -cmdsaklarnya, yang melakukan apa yang Anda inginkan (dan tidak memerlukan file sementara).

Martin Prikryl
sumber
Saya mencoba itu (menambahkan / bin / bash ke cmd.txt) dan itu tidak berhasil. Sejauh yang saya mengerti, bash dimulai dalam mode non-interaktif dan, tanpa kode untuk dieksekusi, keluar. Apakah ada cara untuk memulai shell interaktif dengan cara itu?
Artyom V. Kireev
Sementara itu, saya mencoba memulai mc. :-) Tidak, dan memberikan beberapa output:Cannot get terminal settings: Invalid argument (22) TERM environment variable needs set.
Artyom V. Kireev
Terima kasih untuk panduannya di sini, tapi sepertinya saya memiliki masalah mencoba menggunakan dempul -m "myfile.sh" -tuntuk terhubung ke vm tinycorelinux (/ bin / ash). Saya akan mendapatkan kesalahan berikut: i.imgur.com/QN5oRXC.png (skrip saya mulai dengan echo ".."itu akan selalu menampilkan huruf pertama dalam skrip saya setelah karakter ilegal
Vincent De Smet
jika saya menggunakan konfigurasi perintah jarak jauh di profil dempul, itu berfungsi
Vincent De Smet
-1

Sesi gelandangan yang Anda mulai di emacs dan sesi shell yang Anda jalankan melalui dempul adalah proses yang sepenuhnya terpisah.

Anda mungkin lebih baik memeriksa opsi konfigurasi untuk tramp untuk melihat apakah ada cara untuk mengatur direktori default per host dalam konfigurasi emacs Anda. Mungkin mulai dengan tramp-remote-pathopsi konfigurasi seperti yang didokumentasikan di sini .

Jika Anda perlu menggunakan dempul untuk membuat sambungan, Anda mungkin ingin mengatur ssh tunnel dan menghubungkan emacs / tramp melalui itu.

Doug Harris
sumber
Emacs & gelandangan tidak relevan di sini, saya menambahkan itu hanya untuk latar belakang. Itu bukan tentang mengedit file di emacs, itu tentang membuka shell untuk melakukan sesuatu yang lain dengan file itu (misalnya menjalankan skrip). Saya bosan dengan "mulai dempul, pilih host Anda, kemudian cd ke jalan yang Anda butuhkan", dan ingin mengotomatisasi itu.
Artyom V. Kireev