web-dev-qa-db-ja.com

PuTTYからローカルWindowsマシンでスクリプトを実行できますか?

LinuxボックスでPuTTYを介してコマンドラインTwitterクライアント TTYtter を使用します。多くのツイートにはリンクが含まれているため、/url URLを開くコマンド。特定のツイート内のURLを検索し、ローカルでコマンドを実行して、そのURLでブラウザを起動します(例:open %UMacまたはfirefox -new-tab %U Linuxの場合)。

私の質問:ローカル(Windows 7)マシンでURLを開くためにPuTTYセッション内から実行できるコマンドはありますか?別の言い方をすると方法:PuTTYのSSHセッション内から、SSHセッションからローカルマシンに到達する方法はありますか?

編集:別のアプローチ:PuTTYとWindows sshデーモンまたはcygwinの組み合わせ、またはローカルボックスにsshして(ループバック)タブを開くために使用できるものはありますか?多重化にtmuxを使用しているので、すべてのものを1つのPuTTYウィンドウに収めることが目標です。

したがって、これはおそらく多くの場合には機能しませんが、私が思いついたものは次のとおりです。

  1. 受信URLをリッスンするホストマシンでサービスを実行します。

    ここでは特別な理由なしに NodeJS を使用しました。最も人気のあるスクリプト言語が機能すると確信しています。

    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);
    
  2. ホストからゲストにURLを送信します(私はcURLを使用しました)。

    私の.ttytterrc、私はurlopenオプションを次のように定義します:urlopen curl --data "url=%U" 10.0.2.2:9090 %U(%UはURLに展開されます: rlopen を参照)。

/ url <Tweet ID>を呼び出すと、ホストマシンにリクエストが送信され、ノードサービスが現在のブラウザウィンドウに新しいタブを開きます。ここには潜在的なセキュリティ問題のホストがあると確信していますが、適切なファイアウォール設定、nodeJSスクリプトでのIPチェックなどを考えると、これらは目を見張るものではありません。とにかく、それは私のために働きます!

もちろんSSH経由でローカルマシンに接続していない限り、PuTTYはローカルアプリケーションの起動をサポートしていません。 1つのオプションは、Windowsボックスに Cygwin をインストールし、そこにTTYtterをインストールすることです。基本的に、TTYtterはPerlスクリプトのコレクションであり、Perlもインストールされていれば、Cygwinで正常に動作するはずです。

3
John T