Perintah tunggal untuk masuk ke SSH dan menjalankan program?

58

Apakah ada cara untuk menyusun perintah tunggal untuk login melalui SSH ke server jarak jauh dan menjalankan program pada shell login jarak jauh?

Dalam manual OpenSSH, terbaca "Jika perintah ditentukan, itu dijalankan pada host jarak jauh, bukan shell login." Jadi, misalnya, ssh user@server mailakan masuk ke server jarak jauh, menampilkan status kotak surat, dan kemudian mengembalikan Anda ke shell lokal. Apakah ada cara untuk tetap menggunakan shell jarak jauh setelah menampilkan status email?

Lebih jauh lagi, ssh user@server [command]sepertinya tidak berfungsi jika perintahnya adalah program, misalnya vim atau mutt. Apakah ada cara untuk masuk ke shell jauh dan menjalankan program sambil tetap di shell jauh selama program dan setelah keluar dari program, hanya akhirnya keluar pada logoutperintah tertentu (seperti dalam sesi SSH normal)?

Saya akhirnya ingin dapat menempatkan perintah seperti itu sebagai alias di .bashrc lokal, sehingga bisa dijalankan dengan cepat ketika diinginkan. Contohnya adalah login melalui SSH ke server jarak jauh dan buka mutt pada server jarak jauh untuk membaca atau mengirim email.

pengguna981178
sumber
Apa maksud Anda dengan tetap menggunakan shell jarak jauh setelah menampilkan status email? Bukankah itu setara dengan melakukan ssh setelah menjalankan perintah mail: ssh remote@server mail ; ssh remote@server? Juga setiap perintah yang dijalankan dari jarak jauh yang membutuhkan terminal tidak akan bertahan / bekerja melebihi ssh kan?
mkc
Nah, itu sepertinya bekerja untuk menjalankan perintah dan kemudian mendapatkan shell jarak jauh, tetapi melakukannya dengan membuka satu koneksi SSH dan menjalankan perintah dan menutup koneksi SSH dan kemudian membuka koneksi SSH lainnya. Apakah ada cara untuk melakukan ini semua dengan koneksi pertama? Juga, ini masih tidak memungkinkan perintah untuk menjalankan program.
user981178

Jawaban:

90

Sudahkah Anda mencoba ssh -t user@server "mail && bash"(atau mengganti bashdengan shell apa pun yang Anda suka)?

Ini -tdiperlukan untuk membuat pseudo-tty agar bash dapat digunakan sebagai shell interaktif.

jsbillings
sumber
1
Meskipun, saya akui, saya mungkin lebih suka berlari muttdi dalam a tmuxatau screen, dan kemudian saya bisa memasang dan memasang kembali sesuka hati, ditambah lagi saya dapat menjalankan lebih banyak kerang yang saya inginkan.
jsbillings
1
Yah, saya menemukan berbagai perilaku dengan perintah ini. Digunakan seperti di atas (dalam jawaban), masih hanya menampilkan status kotak surat dan kemudian keluar, tetapi sekarang juga menampilkan bahwa koneksi ditutup. Digunakan seperti di atas, tetapi dengan nano, misalnya, bukannya mail, membuka sesi nano dan kemudian setelah keluarnya tidak kembali ke shell bash terpencil, yang kemudian harus keluar dengan exitbukan logout. Saya belum dapat mengujinya dengan mutt (atau serupa).
user981178
Apakah -topsi tersebut menghasilkan masalah keamanan? Saya belum pernah menggunakan ini sebelumnya.
user981178
Sejauh yang saya tahu -t tidak memperkenalkan masalah keamanan. Sudahkah Anda mencoba mengganti &&dengan ;?
brm
perintah apa pun yang keluar dengan status keluar non-nol akan menyebabkan perintah kedua tidak berjalan, karena logika shell.
jsbillings