Kann ich von PuTTY aus ein Skript auf meinem LOKALEN Windows-Rechner ausführen?

Kann ich von PuTTY aus ein Skript auf meinem LOKALEN Windows-Rechner ausführen?

Ich verwende einen Twitter-Client für die Kommandozeile.TTYtter, über PuTTY auf einer Linux-Box. Viele Tweets enthalten Links, daher gibt es einen /urlBefehl zum Öffnen von URLs, der in einem bestimmten Tweet nach URLs sucht und lokal einen Befehl darauf ausführt, um einen Browser mit dieser URL zu starten (z. B. open %Uauf einem Mac oder firefox -new-tab %Uunter Linux).

Meine Frage:Gibt es einen Befehl, den ich innerhalb einer PuTTY-Sitzung ausführen kann, um eine URL auf meinem lokalen Computer (Windows 7) zu öffnen? Anders ausgedrückt: Gibt es eine Möglichkeit, innerhalb einer SSH-Sitzung in PuTTY aus der SSH-Sitzung heraus auf den lokalen Computer zuzugreifen?

EDIT: Ein anderer Ansatz:Gibt es eine Kombination aus PuTTY und einem Windows-SSH-Daemon oder Cygwin oder etwas, das ich für eine SSH-Verbindung zu meiner lokalen Box (Loopback) und das Öffnen einer Registerkarte auslösen könnte? Ich verwende tmux zum Multiplexen, daher ist mein Ziel, alle meine Sachen in einem Putty-Fenster zu haben.

Antwort1

PuTTY unterstützt das Starten lokaler Anwendungen nicht, es sei denn, Sie sind über SSH mit dem lokalen Rechner verbunden. Eine Möglichkeit besteht darin,Cygwinauf Ihrem Windows-Rechner und installieren Sie TTYtter dort. Im Wesentlichen ist TTYtter eine Sammlung von Perl-Skripten und sollte unter Cygwin einwandfrei funktionieren, vorausgesetzt, Sie haben auch Perl installiert.

Antwort2

Das funktioniert wahrscheinlich in vielen Fällen nicht, aber hier ist mein Ergebnis:

  1. Führen Sie auf dem Hostcomputer einen Dienst aus, der auf eingehende URLs wartet.

    ich benutzteNodeJShier ohne besonderen Grund; ich bin sicher, die meisten gängigen Skriptsprachen würden funktionieren.

    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. Senden Sie URLs vom Host an den Gast (ich habe cURL verwendet).

    In meinem .ttytterrcdefiniere ich die Option urlopen folgendermaßen: urlopen curl --data "url=%U" 10.0.2.2:9090 %U(%U wird zur URL erweitert: sieheAbonnieren).

Ich rufe /url <Tweet-ID> auf, es sendet eine Anfrage an meinen Host-Rechner und der Node-Dienst öffnet eine neue Registerkarte in meinem aktuellen Browserfenster. Ich bin sicher, dass es hier eine Menge potenzieller Sicherheitsprobleme gibt, aber mit den richtigen Firewall-Einstellungen, IP-Prüfungen im NodeJS-Skript usw. sind das keine Showstopper. Wie auch immer, bei mir funktioniert es!

verwandte Informationen