ヘッドレスサーバー上のxclip


27

私はxclipを使用して、次のようにbashコマンドの出力をコピーしています。

pwd | tr -d "\n" | xclip -selection c

その結果、出力を別のターミナルセッションに貼り付けることができます。

xなしで起動されるヘッドレスサーバー(ubuntu 13.04)で使用しようとしていました。エラーで動作しません:

Error: Can't open display: (null)

これを回避する方法はありますか。プログラムがxclipと呼ばれているのを見るのは不可能かもしれないことを理解しています。

回答:


29

クリップボードはXサーバーによって提供されます。サーバーがヘッドレスであるかどうかは関係ありません。重要なのは、ローカルグラフィカルセッションがリモートマシンで実行されているプログラムで利用できることです。Xのネットワーク透過設計のおかげで、これは可能です。

Linuxを実行しているマシンからSSHでリモートサーバーに接続していると仮定します。クライアント構成とサーバー構成の両方でX11転送が有効になっていることを確認してください。クライアント構成では、デフォルトでオンForwardX11 yes~/.ssh/configするためにラインを入れるか、そのセッションのためだけにコマンドにオプション-Xを渡す必要がありますssh。サーバー構成では、次の行を持っている必要がありますX11Forwarding yes/etc/ssh/sshd_config(それはUbuntuの上でデフォルトで存在しています)。

X11転送が有効かどうかを確認するには、DISPLAY環境変数の値を確認しますecho $DISPLAY。次のような値が表示されますlocalhost:10(リモートマシンで実行されているアプリケーションは、同じマシンで実行されているディスプレイに接続するように指示されますが、そのディスプレイ接続は実際にはSSHによってクライアント側ディスプレイに転送されます)。DISPLAYが設定されていない場合、手動で設定しても意味がありません。転送が設定されている場合、環境変数は常に正しく設定されます。SSH接続の問題を診断する必要がある場合は、オプション-vvvを渡してssh、何が起こっているかの詳細なトレースを取得します。

他の方法で接続している場合、X11転送を実現できる場合とできない場合があります。クライアントがWindowsを実行している場合、PuTTYはX11転送をサポートします。XmingなどのWindowsマシンでXサーバーを実行する必要があります。


素晴らしい回答を1つ追加しましたが、前述したように、このサーバーはxなしで実行されているため、Nykakinsの回答の方が適切です。
アナケ

@Anake私はあなたが私の答えを読み違えているのではないかと心配しています。リモートディスプレイには、リモートマシンで実行されているXサーバーは含まれません。あなたは持っている必要がありますかxclip、インストールされたプログラムやサポートライブラリが、それはXサーバをインストールする必要ありません。
ジル 'SO-悪であるのをやめる'

2
ただ疑問に思う... OSXクライアントからヘッドレスUbuntuサーバーに接続するとき、このアプローチは有効ですか?
ケン

3
これは私にはうまくいきません。私はmac-> Linuxサーバーから行きます。X11Forwarding yesサーバーのsshd_configにあり、サーバー-Xにsshしたときにパスしました。Error: Can't open display: (null)オンcat ~/.ssh/id_rsa.pub | xclip -selection clipboard
チョビー

1
OK、私はpbcopyすでにローカルで私のMacで動作しているので、動作するだろうと考えました。Macでxサーバーを起動するにはどうすればよい$DISPLAYですか?
チョビー

4

Bash自体にはクリップボードがありません。Xの機能です。xcliptは単なるコマンドラインインターフェイスであり、ご覧のとおり、が必要displayです。回避策は、一時ファイルを使用することです。

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13

4
わかりません。
チョビー

異なる投稿の2つの異なる回答を組み合わせたと思います。
マークロクサー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.