我使用命令行 Twitter 客户端,电传打字机,通过 Linux 机器上的 PuTTY。许多推文包含链接,因此有一个/url
打开 URL 的命令,该命令在给定推文中搜索 URL,并在本地对它们运行命令以使用该 URL 启动浏览器(例如open %U
在 Mac 或firefox -new-tab %U
Linux 上)。
我的问题:是否有一个命令我可以在 PuTTY 会话中运行以在本地(Windows 7)机器上打开 URL? 换句话说:有没有办法从 PuTTY 中的 SSH 会话中访问本地机器?
编辑:另一种方法:有没有 PuTTY 和 Windows ssh 守护程序或 cygwin 或其他东西的组合,我可以用它 ssh 到我的本地机器(环回)并触发打开选项卡? 我使用 tmux 进行多路复用,因此我的目标是将所有内容放在一个 putty 窗口中。
答案1
PuTTY 不支持启动本地应用程序,除非您通过 SSH 连接到本地计算机。一种选择是安装赛格威在您的 Windows 机器上安装 TTYtter。本质上,TTYtter 是 Perl 脚本的集合,如果您也安装了 Perl,它应该可以在 Cygwin 上正常工作。
答案2
所以这在很多情况下可能不起作用,但是这是我的想法:
在主机上运行一个监听传入 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);
将 URL 从主机发送到客户机(我使用了 cURL)。
在我的 中
.ttytterrc
,我这样定义 urlopen 选项:urlopen curl --data "url=%U" 10.0.2.2:9090 %U
(%U 扩展为 URL:参见urlopen)。
我调用 /url <tweet ID>,它会向我的主机发送请求,然后节点服务会在我当前的浏览器窗口中打开一个新选项卡。我确信这里存在许多潜在的安全问题,但只要有适当的防火墙设置、nodeJS 脚本中的 IP 检查等,这些问题就不是什么大问题。无论如何,它对我来说很管用!