GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie benachrichtigt man über den Abschluss einer langen Aufgabe über SSH?

Mein Desktop ist Ubuntu, das das praktische Programm notify-send enthält , wodurch eine Warnung auf dem Desktop angezeigt wird. Es hat auch den folgenden praktischen Alias ​​eingebaut:

$ 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$//')"'

Das bedeutet, dass Sie very-long-running-command; alert , lassen Sie das Terminal im Hintergrund laufen und erhalten Sie eine Benachrichtigung, wenn die Aufgabe abgeschlossen ist.

Wenn Sie sich über ssh auf einem CentOS-Server befinden, sind die Dinge etwas kniffliger. Hier ist eine Möglichkeit, dies zu tun:

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

Dies funktioniert in gewisser Weise, aber das Beenden nach jedem Befehl ist im Allgemeinen nicht das, was ich tun möchte.

Mein Computer hat keine Lautsprecher. Es kann piepen.

Akzeptierte Antwort:

Das Einfachste, was ich mir hier vorstellen kann, ist, eine zweite SSH-Sitzung zu verwenden, um ein benanntes FIFO weiterzuleiten. Ich nehme an, Sie haben ein tmp/ in Ihrem Heimatverzeichnis; Fühlen Sie sich frei, den FIFO zu behalten, wo immer Sie wollen.

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 &

Dann können Sie dies im Hintergrund laufen lassen, während Sie eine zweite SSH-Sitzung öffnen, um Ihre eigentliche Arbeit zu erledigen:

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

…wobei remote_alert ist eine modifizierte alert Alias ​​mit notify_send --urgency=low -i durch Echos in den FIFO ersetzt.

Dies funktioniert mit einem minimalen Satz von Tools auf dem Remote-Computer:nur ssh und Standard-POSIX-Dienstprogramme. Wenn Sie jedoch bei einem FIFO vergessen, Ihren Reader auszuführen (oder Ihr Reader stirbt), bleibt Ihr Writer hängen. Wenn Sie also zufällig socat haben verfügbar, können Sie dies etwas nachsichtiger machen:

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. Herunterladen und Hochladen von Dateien über SSH

  2. Ssh – Wie leitet man X über SSH weiter, um Grafikanwendungen remote auszuführen?

  3. Wie beende ich eine SSH-Verbindung?

  4. So stellen Sie eine Verbindung zum Gerät über SSH über eine direkte Ethernet-Verbindung her

  5. Wie aktiviere ich Farbe in Vim über SSH?

SSHFS:So mounten Sie Remote-Dateisysteme über SSH

So führen Sie Linux-Befehle auf einem Remote-System über SSH aus

So verwenden Sie SSHFS zum Mounten von Remote-Verzeichnissen über SSH

So übertragen Sie Dateien mit Rsync über SSH

So verwenden Sie SSHFS-Mount mit Remote-Verzeichnissen über SSH

So kopieren Sie Dateien aus der Ferne über SSH, ohne ein Passwort einzugeben