GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Memperingatkan Penyelesaian Tugas Panjang Melalui Ssh?

Desktop saya adalah Ubuntu, yang memiliki program praktis notify-send , yang memunculkan peringatan di desktop. Ia juga memiliki alias praktis berikut ini:

$ type alert
alert is aliased to `notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e 's/^s*[0-9]+s*//;s/[;&|]s*alert$//')"'

Ini berarti Anda dapat menjalankan very-long-running-command; alert , biarkan terminal berjalan di latar belakang, dan terima pemberitahuan saat tugas selesai.

Saat Anda berada di server CentOS melalui ssh, semuanya sedikit lebih rumit. Inilah salah satu cara untuk melakukannya:

localhost$ ssh [email protected]; alert
example.net$ very-long-running-command; exit

Ini berfungsi, setelah mode, tetapi keluar setelah setiap perintah umumnya bukan yang ingin saya lakukan.

Komputer saya tidak memiliki speaker. Itu bisa berbunyi bip.

Jawaban yang Diterima:

Hal paling sederhana yang dapat saya bayangkan di sini adalah menggunakan sesi SSH kedua untuk meneruskan FIFO bernama. Saya berasumsi Anda memiliki tmp/ di direktori rumah Anda; jangan ragu untuk menyimpan FIFO di mana pun Anda suka.

local$ ssh [email protected] 'mkfifo ~/tmp/alert_fifo ; while cat ~/tmp/alert_fifo ; do : ; done' | 
    while read icon_name text ; do
        notify_send --urgency=low -i "$icon_name" "$text"
    done &

Kemudian Anda dapat membiarkan ini berjalan di latar belakang saat Anda membuka sesi SSH kedua untuk melakukan pekerjaan Anda yang sebenarnya:

local$ ssh [email protected]
remote$ alias remote_alert='echo ... >~/tmp/alert_fifo'
remote$ long_running_command; remote_alert

…di mana remote_alert adalah alert . yang dimodifikasi alias dengan notify_send --urgency=low -i diganti dengan menggemakan hal-hal ke FIFO.

Ini akan bekerja dengan seperangkat alat minimal pada mesin jarak jauh:hanya ssh dan utilitas POSIX standar. Namun, dengan FIFO, jika Anda lupa menjalankan pembaca Anda (atau pembaca Anda mati), maka penulis Anda akan hang. Jadi jika Anda memiliki socat tersedia, Anda dapat membuat ini sedikit lebih memaafkan:

local$ ssh [email protected] 'socat UNIX-RECV:~/tmp/alert_socket -' | 
    while read ...
        ...
    done &

local$ ssh [email protected]
remote$ alias remote_alert='echo ... | socat - UNIX-SEND:~/tmp/alert_socket'

Linux
  1. Bagaimana Beberapa Aplikasi Menerima Klik Mouse Di Bash Over Ssh?

  2. Bagaimana cara mengimpor database melalui SSH di cPanel?

  3. Bagaimana cara mengekspor database melalui SSH di cPanel?

  1. Bagaimana cara melakukan tunnel HTTP melalui SSH melalui SOCKS?

  2. Cara terhubung ke perangkat melalui SSH melalui koneksi ethernet langsung

  3. Bagaimana cara mengaktifkan warna di Vim melalui SSH?

  1. Cara Mengunduh dan Mengunggah File melalui SSH

  2. Ssh – Bagaimana Cara Meneruskan X Melalui Ssh Untuk Menjalankan Aplikasi Grafik dari Jarak Jauh?

  3. Bagaimana Cara Membunuh Baris Perintah Chromium Melalui Ssh?