¿Puedo ejecutar un script en mi máquina Windows LOCAL desde PuTTY?

¿Puedo ejecutar un script en mi máquina Windows LOCAL desde PuTTY?

Utilizo un cliente de Twitter de línea de comando,TTYter, a través de PuTTY en una caja de Linux. Muchos tweets contienen enlaces, por lo que hay un /urlcomando para abrir URL, que busca URL en un tweet determinado y ejecuta un comando en ellas localmente para iniciar un navegador con esa URL (por ejemplo, open %Uen Mac o firefox -new-tab %ULinux).

Mi pregunta:¿Existe algún comando que pueda ejecutar desde una sesión de PuTTY para abrir una URL en mi máquina local (Windows 7)? Para decirlo de otra manera: ¿hay alguna manera, desde una sesión SSH en PuTTY, de llegar desde la sesión SSH a la máquina local?

EDITAR: Otro enfoque:¿Existe alguna combinación de PuTTY y un demonio ssh de Windows o cygwin o algo que pueda usar para enviar ssh a mi cuadro local (bucle invertido) y activar la apertura de una pestaña? Utilizo tmux para multiplexar, por lo que mi objetivo es tener todas mis cosas en una ventana de PuTTY.

Respuesta1

PuTTY no admite el inicio de aplicaciones locales a menos que, por supuesto, esté conectado mediante SSH a la máquina local. Una opción es instalarCygwinen su caja de Windows e instale TTYtter allí. Esencialmente, TTYtter es una colección de scripts de Perl y debería funcionar bien en Cygwin suponiendo que también tenga instalado Perl.

Respuesta2

Probablemente esto no funcione en muchos casos, pero esto es lo que se me ocurrió:

  1. Ejecute un servicio en la máquina host que escuche las URL entrantes.

    solíaNodoJSaquí sin ningún motivo en particular; Estoy seguro de que los lenguajes de programación más populares funcionarían.

    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. Envíe URL desde el anfitrión al invitado (yo usé cURL).

    En mi .ttytterrc, defino la opción urlopen así: urlopen curl --data "url=%U" 10.0.2.2:9090 %U(%U se expande a la URL: verurlopen).

Llamo a /url <tweet ID>, envía una solicitud a mi máquina host y el servicio de nodo abre una nueva pestaña en la ventana de mi navegador actual. Estoy seguro de que hay una serie de posibles problemas de seguridad aquí, pero dada la configuración adecuada del firewall, comprobaciones de IP en el script nodeJS, etc., estos no son problemas espectaculares. De todos modos, ¡a mí me funciona!

información relacionada