PuTTY를 통해 내 로컬 Windows 시스템에서 스크립트를 실행할 수 있나요?

PuTTY를 통해 내 로컬 Windows 시스템에서 스크립트를 실행할 수 있나요?

저는 명령줄 트위터 클라이언트를 사용합니다.TTY터, Linux 상자에서 PuTTY를 통해. 많은 트윗에는 링크가 포함되어 있으므로 /urlURL을 여는 명령이 있습니다. 이 명령은 특정 트윗에서 URL을 검색하고 해당 URL에 대해 로컬로 명령을 실행하여 해당 URL로 브라우저를 시작합니다(예: open %UMac 또는 firefox -new-tab %ULinux에서).

내 질문:내 로컬(Windows 7) 컴퓨터에서 URL을 열기 위해 PuTTY 세션 내에서 실행할 수 있는 명령이 있습니까? 다르게 말하면: PuTTY의 SSH 세션 내에서 SSH 세션을 통해 로컬 시스템에 접근할 수 있는 방법이 있습니까?

편집: 또 다른 접근 방식:PuTTY와 Windows SSH 데몬, cygwin 또는 내 로컬 상자(루프백)에 SSH로 연결하고 탭을 열도록 트리거하는 데 사용할 수 있는 조합이 있습니까? 나는 멀티플렉싱을 위해 tmux를 사용하므로 내 목표는 모든 것을 하나의 퍼티 창에 두는 것입니다.

답변1

PuTTY는 SSH를 통해 로컬 시스템에 연결되지 않는 한 로컬 애플리케이션 시작을 지원하지 않습니다. 한 가지 옵션은 설치하는 것입니다.시그윈Windows 상자에 TTYtter를 설치하세요. 기본적으로 TTYtter는 Perl 스크립트 모음이며 Perl도 설치되어 있다고 가정하면 Cygwin에서 제대로 작동합니다.

답변2

그래서 이것은 아마도 많은 경우에 작동하지 않을 것입니다. 그러나 여기에 제가 생각해낸 것이 있습니다:

  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을 사용했습니다).

    내에서는 .ttytterrcurlopen 옵션을 다음과 같이 정의합니다. urlopen curl --data "url=%U" 10.0.2.2:9090 %U(%U는 URL로 확장됩니다.URLopen).

/url <트윗 ID>를 호출하면 호스트 시스템에 요청이 전송되고 노드 서비스는 현재 브라우저 창에 새 탭을 엽니다. 여기에는 잠재적인 보안 문제가 많이 있을 것이라고 확신하지만 적절한 방화벽 설정, nodeJS 스크립트의 IP 확인 등을 고려하면 이는 대단한 것은 아닙니다. 어쨌든 그것은 나에게 효과적입니다!

관련 정보