LINUX.ORG.RU

Удаленный терминал (поверх ssh) с показом картинок?

 , ,


3

3

Есть сервер который что то долго и много считает и генерит кучу данных. Я могу войти туда по ssh. Хочется из этих данных строить картинки (графики y(x), как правило гнуплотом), при этом сами данные к себе не выкачивать. И хочется эти картинки сразу видеть, без всяких scp/sshfs, прямо вот в терминале. Без какого то интерактива вроде выделения фрагментов, смены масштаба и пр - просто увидеть картинку глазами, эдакий предпросмотр данных.

Вход по ssh -X или vgl работает но лагает жутко, канал все таки хиленький. У gnuplot-а есть терминал dumb:

gnuplot> set term dumb
gnuplot> plot x**2

                                                                               
  100 +--------------------------------------------------------------------+   
      |*               +                 +                +               *|   
   90 |-+..............:.................:................:..............+-|   
      |  *             :                 :                :             *  |   
   80 |-+..............:.................:................:..............+-|   
      |    *           :                 :                :           *    |   
   70 |-+..............:.................:................:..............+-|   
      |      *         :                 :                :         *      |   
   60 |-+..............:.................:................:..............+-|   
   50 |-+..............:.................:................:..............+-|   
      |         **     :                 :                :     **         |   
   40 |-+..............:.................:................:..............+-|   
      |            **  :                 :                :  **            |   
   30 |-+..............:.................:................:..............+-|   
      |               *:                 :                :*               |   
   20 |-+..............:.................:................:..............+-|   
      |                :  ***            :           ***  :                |   
   10 |-+..............:.................:................:..............+-|   
      |                +       *****     +    *****       +                |   
    0 +--------------------------------------------------------------------+   
     -10              -5                 0                5                10  

вот что то такого плана, только конечно качеством повыше.

У кого какие идеи?

Можно конечно свою обертку поверх ssh написать что бы она умела и картинки отрисовывать, но неужто никто ничего такого не сделал?


Решается применением терминала sixelgd в гнуплоте. Его не всякий терминал поддерживает, я в итоге остановился на mlterm (konsole и xterm не взлетели).

https://www.arewesixelyet.com/#xterm

★★★★

Последнее исправление: AntonI (всего исправлений: 1)

Ответ на: комментарий от AntonI

plot умеет выводить сразу в png, дальше делаешь html страничку вида <img src="~user/где-то/в/каталоге/юзера">, выкладываешь её nginx-ом и после каждой итерации картинки обновляешь браузер.

Это будет самый быстрый и эффективный способ, деды таким пользовались.

Aceler ★★★★★
()
Последнее исправление: Aceler (всего исправлений: 1)

Как раз недавно настраивал распределённый расчет для ансиса под онтопик.

Virtualgl+turbovnc если для себя. Если для многих пользователей то virtualgl+xrdp+guacamole для удаленного доступа. Пока более удобного способа не нашел.

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)
Ответ на: комментарий от einhander

Не, это все проходили. VGL и пр. феньки тормозят.

Вьювер который я сам писал рисует форточку локально и все события обрабатывает локально, а рендерит картинку на сервере и пробрасывает ее по ssh - вот это быстро работает.

AntonI ★★★★
() автор топика
Ответ на: комментарий от Aceler

Во первых, это лишние телодвижения (как мин переключится в другое окно терминала и там запустить просмотрщик).

Во вторых, sshfs иногда подглюкивает после гибернации - а у меня ноут, закрыл крышку и побежал куда то это типичная история.

AntonI ★★★★
() автор топика
Ответ на: комментарий от einhander

Не знаю. У нас этим активно баловались год-два назад, поскольку дискретные карточки в основном стоят на работе, и vgl+что то тормозило. Сейчас мне не актуально - мой вьювер заводится по обычному ssh без всяких допнастроек;-)

AntonI ★★★★
() автор топика
Ответ на: комментарий от AntonI

А нафига тогда Вы лезете с решением которое заведомо не подходит?

Буду лезть куда хочу и предлагать те решения которые считаю подходящими, ещё не хватало мне спрашивать мнение неблагодарного хамла которое сначала пришло за помощью по причине некомпетентности, а потом вдруг стало компетентным чтобы разбираться подходят ему решения или нет.

Ещё раз - тебе не нужен кривой и непереносимый sixel в терминале, когда ты можешь на удалённом сервере отдать http, на которых ходить хоть через интернет, хоть через прокинутый по ssh порт, и нормально смотреть свои графики в браузере хоть в svg, хоть в 3d хоть в vr.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Ну а я не буду читать портянки упоротого хамла-дислектика вроде Вас, бггг. Пишите/не пишите мне пофик, Ваше мнение меня не интересует вообще ни по какому вопросу;-)

AntonI ★★★★
() автор топика
Последнее исправление: AntonI (всего исправлений: 2)

Во первых использовать xterm, во вторых set term tek40xx.

Из старого:

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от AntonI

Либо переключить в меню, либо запустить как xterm -t.

Ещё есть и 3-й вариант с esc-кодом \e[?38h для переключения, но gnuplot его почему-то не выплёвывает, поэтому переключаться в ручную.

Результат: https://imgur.com/a/2SOuiXZ

beastie ★★★★★
()
Ответ на: комментарий от x22

Картинка разреженная.

Я не админ, наскольк реально поднять на сервере vnc сервер без рута? И насколько это геморно?;-)

ssh у меня есть везде по открытому ключу. Всяких нестандартных вещей скорее всего нет. Web-сервера на целевых серверах точно нет и точно не будет.

AntonI ★★★★
() автор топика
Ответ на: комментарий от x22

Дык а че там…

$ mlterm
$ ssh hostname #<<< не обязательно
$ gnuplot
...
gnuplot> set term sixelg

Terminal type is now 'sixelgd'
Options are 'nocrop enhanced size 640,480 font "arial,12.0" 
gnuplot> plot x**2

красивая картинка

gnuplot>

В целом меня такое решение полностью устраивает, все что мне остается - впендюрить правильную команду в мою оболочку для гнуплота (сырым гнуплотом я не пользуюсь, он слишком многословен).

Что бы картинка была красивше можно положить у себя в корне вот такой конфиг:

$ cat ~/.gnuplot
set colors classic
set style data lines
set ticslevel 0
set grid front
set palette defined (0 0 0 0, 1 1 0 0, 3 1 1 0, 4 0 1 0, 5 0 1 1, 6 0 0 1, 7 1 0 1, 8 1 1 1)

Вот такой набор команд в гнуплоте

set term sixelg
set hidden3d
set pm3d map
set isosamples 100, 100
splot sin(x*y/10)

даст совсем уж красоту

AntonI ★★★★
() автор топика
Ответ на: комментарий от beastie

Ну да, его мне уже насоветовали и он уже взлетел;-)

Я это к чему затеял то - сидели со дипломником, результаты расчетов смотрели. Результаты интересные, но на удаленном хосте, пришлось выкачивать. А дипломник все в юпитере/матлотлибе ковыряется, сколько ж там много букв писать шоб че то увидеть - это трындец какой то. В шелле с правильным набором скриптом для гнуплота это все делается буквально одной строчкой, но вот захотелось идеала - что бы летало все это вообще удаленно, бес всяких scp/sshfs…

Правильно настроенный шелл страшная штука, рвет в клочья все эти юпитеры с мактадами;-)

AntonI ★★★★
() автор топика
Ответ на: комментарий от AntonI

Картинка разреженная.

Тогда и vnc даже через ssh-тоннель должен достаточно быстро рисовать.

Я не админ, наскольк реально поднять на сервере vnc сервер без рута? И насколько это геморно?;-)

От обычного юзера запускается

vncserver -geometry {размер_окна_по_горизонтали}x{размер_окна_по_вертикали}

В первый раз он запросит задать пароль для подключения к vncserver (пароль произвольный). В ~/.vnc/xstartup можно положить стартовый скрипт, например:

xterm &
mwm

vncserver слушает на порту 5901, если порт не занят. Если к порту можно подключиться удаленно напрямую, то на удаленной машине запускаем

vncviewer {server}:5901

Тогда рисовать будет очень быстро даже через мобильную связь, по опыту.

Если порт 5901 извне недоступен, с удаленной машины запускаем тоннель:

ssh -L 10000:{server}:5901 {user}@{server}

Подключаем vncviewer к порту на удаленной машине:

vncviewer localhost:10000

Через тоннель работает медленнее, чем при подключении напрямую к {server}:5901.

На практике, скорость достаточна для работы с любой графикой, кроме воспроизведения видео и отрисовки статических неразреженных картинок, так как vncserver при изменении кадра посылает только измененные пикселы.

x22
()
Ответ на: комментарий от AntonI

Дык а че там…

Thx!

(Напоминает PAW. Тот тоже умел работать напрямую с tektronix, sixel не помню.)

Для одного gnuplot VNC тогда избыточен. Для X-приложений VNC заметно быстрее X11, даже если X-ы работают не через тоннель (export DISPLAY remote_machine:0; xterm …).

x22
()
Ответ на: комментарий от x22

Я бы от себя спросил - существуют ли эмуляторы терминала с поддержкой веб? Казалось бы, в свете последних веяний когда на каждый чих запускают браузер, это должно быть логичным - некий эмулятор который вроже обычный терминал, но если получает поток html то он его рисует как браузер;-)

AntonI ★★★★
() автор топика

Какая-то наркомания, если честно... Всю жизнь юзаю gnuplot через ssh X forwarding, разве это не то, что нужно?..

Или теперь у всех вяленый, там такое не провернуть?.. :)

Ага, дочитал пост до конца. Решение, чтобы ssh -Y не тормозил, — использовать простой протокол шифрования типа blowfish

Sahas ★★★★☆
()
Последнее исправление: Sahas (всего исправлений: 1)
Ответ на: комментарий от dataman

Ну я пока что удовлетворен mlterm-ом. Мне оно пока надо то неск раз в день, зайти и графики посмотреть;-)

Может когда в себя после дедлайна приду решу че то более продвинутое попробовать.

Спасибо!

AntonI ★★★★
() автор топика