リモートコマンドの出力をローカルクリップボードにコピーするにはどうすればよいですか?


6

iTerm2Mac OS Xのターミナルクライアントとして使用します。ローカルシステムでは、システムクリップボードとターミナルの間でデータを転送したり、使用しpbcopyたりできますpbpasteが、もちろん、別のマシンにsshした場合は機能しません。

コマンドの結果を取得して、クリップボードに自動的にコピーする方法はありますか?おそらく、iTermウィンドウ上のテキストを取得し、最後から2番目の行を取得するためのapplescriptでしょうか?

たとえば、現在の作業ディレクトリをコピーしたい場合:

Picture-48.png

を実行しpwd、マウスを使用してテキストを選択し、を押しcommand + cます。

これを行うより良い/速い/自動の方法はありますか?私はすべてのコマンドで動作する防弾ソリューションを探していません(例:巨大なスクロールバックがある場合は動作しないかもしれません)-私はこのタスクを行うために何かを探しています。

更新

screenこれを行うために使用することを検討していますが、それが可能かどうかはまだわかりません。

回答:


2

さて、私はこれを試しただけで動作します:

echo "foo" | tee | ssh YourUsername@your.ssh.client.host pbcopy

ノート:

  • echo "foo"出力をsshクライアントマシンにコピーするコマンドの代用として使用しています。
  • 私が使用しているteeので、sshコマンドですべてを飲み込むのではなく、ターミナルウィンドウで表示できます。
  • ssh実行するコマンドを与えることによりstdinssh受信したものを他のホスト上のそのコマンドに送信し、すぐに戻ります。

おそらく、より簡単に入力できるようにエイリアスを作成できます。またssh、パスワードベースの認証の代わりにキーを使用して、パスワードを再入力する手間を省くようにしてください。更新:また、SSHエージェント転送を使用できるため、リモートボックスのローカルマシンにアクセスするために資格情報を入力する必要がありません。

(NB:ssh / tty / shellセッションのみがあり、Mac OS X GUIコンテキストがない場合、pbcopy / pbpasteがどれだけうまく機能するかわかりません。ペーストボードはNeXTStep / Cocoa / Aqua / GUIの概念であり、必ずしもGUIレイヤーなしでUnixレイヤーで終了するもの。)

私が最初にこれを思いついたとき、それはハックのように見えましたが、それをいじるほど、私はそれが好きになります。


これはこれを達成するための1つの方法のように見えますが(+1)、作業中のリモートボックスに保存されているローカルマシンにアクセスするための資格情報を持つという考えはあまり好きではありません。だからこそ、スクリーングラブとしてもっとやろうと考えていました。これを達成する他の方法を考えることができますか?
-cwd

@cwd SSH Agent Forwardingを使用すると、リモートボックスのローカルマシンにアクセスするために認証情報を入力する必要がなくなります。
-Spiff

この記事では概念について説明していますが、それを実現するためのコマンドを理解する必要があると思います。また、私はこれを見つけました:blog.roseman.org.uk/tag/iterm2.html有望に見える
-cwd

0

シンプルなソリューション

ssh remote.host createで/usr/local/bin/spbcopy

#!/bin/bash
cat >$HOME/.pastebin

OSXで以下を作成します/usr/local/bin/spbpaste

#!/bin/bash
ssh $* 'cat .pastebin; >$_'

次を使用してデータをクリップボードにコピーします。

user@remote.host$ echo "foo" | spbcopy

以下を使用してクリップボードからデータを貼り付けます:

osx$ spbpaste user@remote.host

おそらく、リモートホストで名前付きパイプを使用し、バックグラウンドでコマンドを実行することでデータをローカルクリップボードに自動的にコピーできますが、セットアップがより複雑になります。

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