Могу ли я запустить скрипт на ЛОКАЛЬНОМ компьютере с Windows из PuTTY?

Могу ли я запустить скрипт на ЛОКАЛЬНОМ компьютере с Windows из PuTTY?

Я использую клиент командной строки Twitter,TTYtter, через PuTTY на Linux-боксе. Многие твиты содержат ссылки, поэтому есть команда /urlдля открытия URL-адресов, которая ищет URL-адреса в указанном твите и локально запускает команду для запуска браузера с этим URL-адресом (например, open %Uна Mac или firefox -new-tab %ULinux).

Мой вопрос:Есть ли команда, которую я могу запустить из сеанса PuTTY, чтобы открыть URL-адрес на моем локальном компьютере (Windows 7)? Другими словами: есть ли способ из сеанса SSH в PuTTY выйти за пределы сеанса SSH на локальную машину?

EDIT: Другой подход:Существует ли какая-либо комбинация PuTTY и демона Windows SSH или Cygwin или чего-то еще, что я мог бы использовать для подключения по SSH к своему локальному компьютеру (loopback) и открытия вкладки? Я использую tmux для мультиплексирования, поэтому моя цель — разместить все свои данные в одном окне Putty.

решение1

PuTTY не поддерживает запуск локальных приложений, если, конечно, вы не подключены по SSH к локальной машине. Один из вариантов — установитьCygwinна вашем компьютере с Windows и установите TTYtter там. По сути TTYtter — это набор скриптов Perl, и он должен нормально работать на Cygwin, если у вас также установлен Perl.

решение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>, он отправляет запрос на мою хост-машину, и служба node открывает новую вкладку в моем текущем окне браузера. Я уверен, что здесь есть множество потенциальных проблем безопасности, но при правильных настройках брандмауэра, проверках IP в скрипте nodeJS и т. д. они не являются помехой. В любом случае, у меня это работает!

Связанный контент