1

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

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

РЕДАКТИРОВАТЬ: Другой подход: существует ли какая-либо комбинация PuTTY и демона Windows SSH или Cygwin или что-то, что я мог бы использовать для SSH к моей локальной коробке (loopback) и вызвать открытие вкладки? Я использую tmux для мультиплексирования, поэтому моя цель - собрать все свои вещи в одном окне.

2 ответа2

3

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

0

Так что это, вероятно, не работает во многих случаях, но вот что я придумал:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .