Cara menjalankan perintah secara otomatis setelah keluar dari ssh

10

Bagaimana saya bisa secara otomatis menjalankan perintah pada terminal lokal setelah keluar dari sshkoneksi? Apakah ada kaitan atau peristiwa yang dapat ditangani untuk ini?

Meysam
sumber

Jawaban:

13

Leverage suatu aliasfungsi atau lebih baik.

Sebagai contoh:

ssh () { command ssh "$@"; echo foobar; }

Sekarang, Anda dapat menjalankan:

ssh mysite

setelah Anda keluar dari sshsesi, echo foobarakan dijalankan.

Ubah echo foobardengan perintah aktual yang perlu Anda jalankan, dan tentu saja Anda dapat menangani banyak perintah jika Anda mau.

Untuk membuat definisi fungsi permanen, masukkan ke dalam ~/.bashrc.


Juga perhatikan bahwa, mungkin tidak selalu diinginkan memiliki fungsi yang dinamai sshketika Anda ingin secara eksplisit menggunakan eksternal ssh. Dalam hal ini, Anda dapat menggunakan salah satu dari berikut ini untuk melewati sshfungsi untuk mendapatkan sshbiner eksternal :

command ssh mysite

atau ganti nama fungsinya menjadi sesuatu yang lain misalnya sshfunc:

sshfunc () { ssh "$@"; echo foobar; }
heemayl
sumber
4
Catatan: Saya sarankan mengubah nama fungsi menjadi sesuatu yang lain dari "ssh", jadi Anda tetap ssh itu arti aslinya ... mungkin: ssh2? atau sshcmd? (Kalau tidak, Anda bisa melupakan efek sampingnya ketika melakukan hal-hal seperti:: ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgzini akan salah karena akan mengandung "foobar" di akhir ...)
Olivier Dulac
@OlivierDulac Poin bagus, diedit.
heemayl
\ ssh 'ssh' dan "ssh" hanya lolos dari alias, perintah ssh akan menjalankan perintah (melarikan diri baik dari alias maupun fungsi).
Olivier Dulac
@OlivierDulac Tidak tahu itu, sudah diperbaiki.
heemayl
Seperti itu di bash, mungkin bisa berbeda dengan cangkang lain ... tapi sekarang, saya suka jawaban Anda dengan tambahan itu, Anda mendapatkan +1 ^^
Olivier Dulac