
私はコマンドラインのTwitterクライアントを使用しています。TTYtterLinux ボックス上の PuTTY を介して。多くのツイートにはリンクが含まれているため、/url
URL を開くコマンドがあります。このコマンドは、特定のツイート内の URL を検索し、ローカルでコマンドを実行して、その URL でブラウザーを起動します (例: open %U
Mac またはfirefox -new-tab %U
Linux)。
私の質問:PuTTY セッション内から実行して、ローカル (Windows 7) マシンで URL を開くことができるコマンドはありますか? 言い換えると、PuTTY の SSH セッション内から、SSH セッションの外部にローカル マシンにアクセスする方法はありますか?
編集: 別のアプローチ:PuTTY と Windows SSH デーモンまたは Cygwin などの組み合わせを使用して、ローカル ボックス (ループバック) に SSH 接続し、タブを開くようにトリガーできるものはありますか? 私は多重化のために tmux を使用しているので、すべてのものを 1 つの Putty ウィンドウにまとめることが目標です。
答え1
PuTTYはSSH経由でローカルマシンに接続しない限り、ローカルアプリケーションの起動をサポートしていません。1つのオプションは、シグウィンWindows ボックスにインストールし、そこに TTYtter をインストールします。基本的に、TTYtter は Perl スクリプトのコレクションであり、Perl もインストールされていると仮定すると、Cygwin でも正常に動作するはずです。
答え2
おそらく、これは多くの場合うまくいかないでしょうが、私が思いついた方法は次のとおりです。
受信 URL をリッスンするサービスをホスト マシン上で実行します。
私はノードJSここでは特に理由はありません。ほとんどの一般的なスクリプト言語が機能すると確信しています。
var http = require('http'), querystring = require('querystring'), cp = require('child_process'), ip = '127.0.0.1', port = 9090, links_opened = 0; //urlopen curl --data "url=%U" 10.0.2.2:9090 %U <- cmd for ttytter http.createServer(function (req, res) { if (req.method == 'POST') { req.on('data', function(chunk) { //get URL var _post = querystring.parse(chunk.toString()), //url has extra quotes for some reason: url_to_open = _post.url.match(/^'(.*)'$/)[1], //these three lines are just for nicely numbered console history (up to 999) link_ind = ++links_opened + ".", ln = link_ind + Array(5 - link_ind.length).join(' ');//pad it console.log( ln + url_to_open); //open tab cp.spawn('c:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe', ['-new-tab', url_to_open]); }); } req.on('end', function() { //respond w/204 (success, no output) res.writeHead(204); res.end(); }); }).listen(port, ip); console.log('Server running at http://' + ip + ":" + port);
ホストからゲストに URL を送信します (cURL を使用しました)。
私のでは
.ttytterrc
、urlopenオプションを次のように定義しています:urlopen curl --data "url=%U" 10.0.2.2:9090 %U
(%UはURLに展開されます:url開く)。
/url <ツイート ID> を呼び出すと、ホスト マシンにリクエストが送信され、ノード サービスによって現在のブラウザー ウィンドウに新しいタブが開きます。潜在的なセキュリティ上の問題が多数あることは確かですが、適切なファイアウォール設定、nodeJS スクリプトでの IP チェックなどが行われていれば、これらは致命的な問題にはなりません。とにかく、私の環境ではうまくいきました。