我可以从 PuTTY 在我的本地 Windows 机器上运行脚本吗?

我可以从 PuTTY 在我的本地 Windows 机器上运行脚本吗?

我使用命令行 Twitter 客户端,电传打字机,通过 Linux 机器上的 PuTTY。许多推文包含链接,因此有一个/url打开 URL 的命令,该命令在给定推文中搜索 URL,并在本地对它们运行命令以使用该 URL 启动浏览器(例如open %U在 Mac 或firefox -new-tab %ULinux 上)。

我的问题:是否有一个命令我可以在 PuTTY 会话中运行以在本地(Windows 7)机器上打开 URL? 换句话说:有没有办法从 PuTTY 中的 SSH 会话中访问本地机器?

编辑:另一种方法:有没有 PuTTY 和 Windows ssh 守护程序或 cygwin 或其他东西的组合,我可以用它 ssh 到我的本地机器(环回)并触发打开选项卡? 我使用 tmux 进行多路复用,因此我的目标是将所有内容放在一个 putty 窗口中。

答案1

PuTTY 不支持启动本地应用程序,除非您通过 SSH 连接到本地计算机。一种选择是安装赛格威在您的 Windows 机器上安装 TTYtter。本质上,TTYtter 是 Perl 脚本的集合,如果您也安装了 Perl,它应该可以在 Cygwin 上正常工作。

答案2

所以这在很多情况下可能不起作用,但是这是我的想法:

  1. 在主机上运行一个监听传入 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);
    
  2. 将 URL 从主机发送到客户机(我使用了 cURL)。

    在我的 中.ttytterrc,我这样定义 urlopen 选项:urlopen curl --data "url=%U" 10.0.2.2:9090 %U(%U 扩展为 URL:参见urlopen)。

我调用 /url <tweet ID>,它会向我的主机发送请求,然后节点服务会在我当前的浏览器窗口中打开一个新选项卡。我确信这里存在许多潜在的安全问题,但只要有适当的防火墙设置、nodeJS 脚本中的 IP 检查等,这些问题就不是什么大问题。无论如何,它对我来说很管用!

相关内容