GNU/Linux >> Belajar Linux >  >> Linux

Ssh – Bagaimana Cara Menjalankan Script Segera Setelah Terhubung Melalui Ssh?

Saya mulai menanyakan pertanyaan ini tetapi menjawabnya saat saya membukanya. Saya akan memposting pertanyaan ini, menindaklanjutinya dengan solusi saya dan membiarkannya terbuka untuk solusi potensial lainnya.

< cerita latar>

Saya pengguna tmux dan vim. Saya suka kerja vim jarak jauh karena saya tidak perlu khawatir tentang mesin pengembangan Ubuntu yang keluar ketika film flash membuat saya panik kernel. Menjalankan tmux berarti file yang terbuka menunggu saya setelah saya reboot dan saya dapat melanjutkan dari tempat saya tinggalkan. Saya mengalami masalah dengan vim yang berjalan di sesi tmux ketika saya terhubung seperti ini:

ssh example.com -t 'tmux attach'

Masalah UTF-8 muncul yang tidak muncul saat masuk secara normal dan hanya melampirkan ke sesi tmux secara manual.

< /backstory>

Jadi saya ingin metode yang dapat digunakan kembali untuk memulai sesuatu pada login ssh, yang tidak memengaruhi hal lain yang telah saya konfigurasikan di .zshrc saya (atau .bashrc . Anda jika Anda masih menggunakan bash) yang mungkin diperlukan untuk lingkungan pengembangan saya, yang tidak muncul ketika saya kadang-kadang bekerja secara lokal di mesin tersebut.

Jawaban yang Diterima:

Saat Anda menjalankan ssh example.com , daemon ssh memulai shell login untuk Anda, dan shell login membaca ~/.profile Anda (atau ~/.bash_profile atau ~/.zprofile atau ~/.login tergantung pada shell login Anda). Saat Anda menentukan perintah untuk dijalankan dari jarak jauh (dengan atau tanpa -t ), daemon ssh memulai shell biasa, jadi .profile . Anda tidak dibaca. Obat:

ssh example.com -t '. /etc/profile; . ~/.profile; tmux attach'

Kebanyakan daemon ssh dikonfigurasi untuk menolak mentransmisikan variabel lingkungan kecuali LC_* . Jika daemon ssh di example.com mengizinkannya, Anda dapat menyalahgunakan LC_* khusus variabel untuk memulai tmux secara otomatis — letakkan ini di ~/.profile . Anda :

if [ -n "$LC_tmux_session" ] && tmux has -t "$LC_tmux_session"; then
  exec tmux attach -t "$LC_tmux_session"
elif [ -n "${LC_tmux_session+1}" ] && tmux has; then
  exec tmux attach
fi

lalu masuk dengan LC_tmux_session= ssh example.com atau LC_tmux_session=session_name ssh example.com .

Jawaban ini memiliki lebih banyak informasi tentang meneruskan variabel lingkungan melalui ssh.


Linux
  1. Bagaimana membuat program terus berjalan setelah keluar dari ssh?

  2. Bagaimana saya bisa menjalankan perintah setelah boot?

  3. Bagaimana cara menjalankan skrip bash melalui jalur absolut?

  1. Bagaimana Cara Menjalankan File Script (.sh) Di Terminal Baru Setelah Terhubung Ke Server Ubuntu 16.04 Melalui Ssh?

  2. Bagaimana Menjalankan Script Setelah Openvpn Berhasil Terhubung?

  3. Bagaimana Cara Menjalankan Script Setelah Lanjutkan Dan Setelah Membuka Kunci Layar?

  1. Bagaimana Menjalankan Skrip??

  2. Jalankan proses persisten melalui ssh

  3. Cara menjalankan skrip shell saat startup