
Ich verwende einen Twitter-Client für die Kommandozeile.TTYtter, über PuTTY auf einer Linux-Box. Viele Tweets enthalten Links, daher gibt es einen /url
Befehl 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 %U
auf einem Mac oder firefox -new-tab %U
unter 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:
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);
Senden Sie URLs vom Host an den Gast (ich habe cURL verwendet).
In meinem
.ttytterrc
definiere 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!