sshでnotify-sendが機能しない


10

多分これはどこかで答えられますが、私はそれを見ませんでした。

Ubuntu 14.04を実行しています。たとえば、自分のマシンにSSH接続すると、次のようになります。

ssh <user>@<machineip> notify-send "Hello"

マシンにログインしているモニターに何も表示されません。私は接頭辞場合notify-sendDISPLAY=:0.0またはDISPLAY=:0何も異なるが起こります。現在のセッションで通知がまったく表示されません。

これを機能させるためのトリック/スイッチはありますか?

これが明確でない場合は、繰り返し説明します。コンピューターAからコンピューターBにSSH接続します。SSHセッション内で、コンピューターBで実行するためにnotify-sendを実行します。うなり声タイプの通知が表示されることを期待していますコンピューターBのモニター


グーグルを通じてこれが最高の結果DISPLAY=:0 notify-send 'hello'であると私のために働いた他の人々のために(アイケルのためではなく)、より複雑なステップの前にそれを試してください。
マーク

回答:


9

さまざまなテクノロジーとその機能を混乱させていると思います。1つのシステムからの通知デーモンがSSH経由でメッセージを送信できるとは思いません。の設定$DISPLAYは、X11が表示目的でアプリケーションから別のアプリケーションに出力を送信する方法ですが、notify-sendは実際のメッセージを通知デーモンに送信しています。このメッセージはlibnotifyライブラリを使用して送信されます。

抜粋

libnotifyは、デスクトップ通知仕様に定義されているように、通知デーモンにデスクトップ通知を送信するライブラリです。これらの通知を使用して、ユーザーにイベントについて通知したり、ユーザーの邪魔にならないで何らかの情報を表示したりできます。

出典:https : //developer.gnome.org/libnotify/

アプリごとのアプローチ

notify-sendメッセージをローカルシステムのノーティファイアに参加させる1つの方法は、このブログの投稿「SSHとlibnotifyを介したIRC通知」で概説されているアプローチを使用することです。このアプローチは、ローカルの通知機能にトンネリングする通知の種類ごとにカスタマイズする必要があります。

SSHを介したlibnotifyのトンネリング

より一般的なソリューションのlibnotify-over-ssh場合は、探しているものがより多くなる可能性があります。

抜粋

これは、私のサーバーが基本的にlibnotifyメッセージをローカルマシンに送信できるように、私が作成したクライアントサーバーのperlスクリプトです。これは主にウィーチャトで使用しますが、より一般的にする機能があります。weechatタグでクライアントを呼び出すと、サーバーは現在フォーカスされているウィンドウの名前をチェックします。weechatで始まる場合、notify-sendが呼び出されなければ通知は抑制されます。

リモートサーバーでの表示

otherhandあなたは、単に使用しようとしている上の場合はnotify-send、あなたが使用したことをリモートサーバーにメッセージを表示するにはssh、に接続するために、あなたはおそらく題したこのQ&Aで行われた候補の1つを実行する必要があります:使用して通知し、送信cronで。いくつかの回答でこれは不要であることが示唆されましたが、Cinnamonをデスクトップとして使用してFedora 20システムのコメントで他の人が言及したように、物事を機能させるために以下を実行する必要がありました。

取得するにはnotify-send、私は、リモートシステムのデスクトップ環境から適切な値にこの変数を設定しなければならなかった作業。

$ export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wzrbFpDUZQ,guid=82e5bffe1f819506faecc77a53d3ba73

私のシステムでは、この目的のために維持されているファイルを利用することができました。

$ ssh me@remote
$ source ~/.dbus/session-bus/6a34f24f9c504e3f813bc094ed0b67af-0
$ notify-send "hi"

注: DBUSファイルの名前はセッションごとに変わります。


うーん..いくつかの説明を追加しました。SSH経由でメッセージを送りたくないと思います。notify-sendは、ホスト(クライアントではない)PCに対して対話的に実行できるターミナルアプリと考えています。私は理解していると思います-notify-sendはそれ自体がホストマシン上のクライアントです-それがあなたの言っていることです。それはどういうわけか、SSHセッション中にこれを行うことができないことを意味しますか?ちなみに、私はこれをSSHクライアントに表示するのではなく、SSHホスト/サーバーのみを表示します。
アイケル2014

@aikeru- notify-sendリスニング通知デーモンにメッセージを送信できます。SSH経由でログインすると、この環境にはこの通知機能との通信に必要な情報がありません。これは根本的な問題です。
slm

それで、現在の環境などにアタッチして、必要な情報を取得する方法はありますか?
aikeru 2014

@aikeru-私が見つけたものの多くは、設定$DISPLAY=:0が機能することを示していますが、これも私にとっては機能しません。私はCinnamonをデスクトップとして使用してFedora 20を使用しています。これstraceをデバッグするためにを使用すると、SSHを通過するときに完了しない接続があることを示していますが、これをブロックしているものを調査しています。
slm

@aikeru-更新を参照してください。
slm

0

IMO、あなたが使用できるかもしれません:

ssh user@host 'export DISPLAY=:0 && notify-send "test message"'

もちろん、これは、現在ログインしている唯一のユーザーである場合、「:0」がDISPLAY変数の実際の値であると想定しています。2つのコマンドを送信し、 2番目のコマンド「notify-send」で使用できる変数。文字「&&」は、2つのコマンドを1行で起動できるようにするだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.