Posso executar um script em minha máquina Windows LOCAL a partir do PuTTY?

Posso executar um script em minha máquina Windows LOCAL a partir do PuTTY?

Eu uso um cliente Twitter de linha de comando,TTYtter, através do PuTTY em uma caixa Linux. Muitos tweets contêm links, então há um /urlcomando para abrir URLs, que procura URLs em um determinado tweet e executa um comando neles localmente para iniciar um navegador com esse URL (por exemplo, open %Uno Mac ou firefox -new-tab %Uno Linux).

Minha pergunta:Existe um comando que posso executar em uma sessão PuTTY para abrir uma URL em minha máquina local (Windows 7)? Dito de outra forma: existe uma maneira, de dentro de uma sessão SSH no PuTTY, de sair da sessão SSH para a máquina local?

EDITAR: Outra abordagem:Existe alguma combinação de PuTTY e um daemon ssh do Windows ou cygwin ou algo que eu possa usar para ssh para minha caixa local (loopback) e acionar uma guia para abrir? Eu uso o tmux para multiplexação, então meu objetivo é ter todas as minhas coisas em uma janela do PuTTY.

Responder1

PuTTY não suporta o lançamento de aplicativos locais, a menos que você esteja conectado via SSH à máquina local. Uma opção é instalarCygwinna sua caixa do Windows e instale o TTYtter lá. Essencialmente, o TTYtter é uma coleção de scripts Perl e deve funcionar bem no Cygwin, assumindo que você também tenha o Perl instalado.

Responder2

Então isso provavelmente não funciona em muitos casos, mas aqui está o que eu descobri:

  1. Execute um serviço na máquina host que escuta URLs recebidos.

    eu useiNodeJSaqui sem nenhum motivo específico; Tenho certeza de que as linguagens de script mais populares funcionariam.

    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. Envie URLs do host para o convidado (usei cURL).

    No meu .ttytterrc, defino a opção urlopen assim: urlopen curl --data "url=%U" 10.0.2.2:9090 %U(%U é expandido para a URL: vejaurlopen).

Eu chamo /url <tweet ID>, ele envia uma solicitação para minha máquina host e o serviço do nó abre uma nova guia na janela atual do meu navegador. Tenho certeza de que há uma série de possíveis problemas de segurança aqui, mas dadas as configurações adequadas de firewall, verificações de IP no script nodeJS, etc., esses não são obstáculos. De qualquer forma, funciona para mim!

informação relacionada