Menjalankan perintah pada host jarak jauh dengan SSH interaktif (kondisional)

9

Saya ingin dapat secara otomatis menjalankan perintah pada host jarak jauh setiap kali saya masuk ke host itu, tetapi dalam sesi SSH interaktif saat ini.

Sesuatu seperti

ssh user@remotehost [run do.sh]

di mana do.shmelakukan beberapa tugas tata graha dan kemudian menempel kembali ke sebuah screensesi (saat ini saya jalankan do.shsecara manual setelah masuk ke host).

Saya tidak ingin menambahkannya .bashrckarena saya login ke host ini dari komputer lain dan saya tidak ingin do.shmenjalankan ketika saya login dari sana jadi saya perlu itu opsional.

Jim Farkas
sumber
1
kenapa kamu tidak lari saja ssh user@remotehost /path/to/do.sh? Jika berhasil, Anda bahkan dapat alias di .ssh / config atau personnal .bashrc
Coren
Jadi Anda ingin menjalankan "do.sh" ketika Anda masuk ke remotehost dari suatu tempat, tetapi tidak ketika Anda masuk ke remotehost dari tempat lain? Host yang Anda terhubung dari seharusnya memicu "do.sh", dan yang lain tidak?
Mat
Ya, saya ingin menjalankannya kadang-kadang, tetapi tidak setiap saat, alasannya adalah karena saya memiliki pintasan keyboard dari peluncur di Mac yang memberi saya apa yang paling saya inginkan . Saya menekan pintasan dan saya ingin ssh ke dalam kotak dan kemudian pasang kembali ke sesi layar, tapi saya tidak ingin melakukan itu jika saya menggunakan terminal reguler seperti "ssh user @ host". Solusi yang disebutkan di bawah oleh Patkos melakukan apa yang saya butuhkan.
Jim Farkas

Jawaban:

15

Anda dapat mencoba sesuatu seperti ini:

ssh server -t "do.sh; bash --login"

seperti yang disarankan di sini: /server/167416/change-directory-automatically-on-ssh-login

Atau Anda dapat mencoba menggunakan opsi 'LocalCommand' di sshd_conf (atau ~ / .ssh / config) seperti yang dijelaskan dalam halaman manual man: http://unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1

Patkos Csaba
sumber
1
Terima kasih banyak!! ssh server -t "/home/user/do.sh; bash --login" bekerja untuk saya. köszönöm szépen!
Jim Farkas
1
Szivesen (Terima kasih kembali)
Patkos Csaba
@ PatosCsaba Harap hindari bahasa lain selain bahasa Inggris di sini. Ini berlaku juga untuk komentar.
LinuxSecurityFreak
3

Salah satu bagian dari teka-teki: dengan asumsi OpenSSH, sshklien akan menetapkan variabel lingkungan berikut:

SSH_CONNECTION Mengidentifikasi ujung klien dan server koneksi. Variabel berisi empat nilai yang dipisahkan oleh ruang: alamat IP klien, nomor port klien, alamat IP server, dan nomor port server.

Jadi, Anda dapat menggunakan informasi ini untuk mencari tahu dari mana koneksi Anda berasal .

sr_
sumber