TOR_ONT @ BLOGGER

THIS IS AN "ABOUT EVERYTHING AND NOTHING" BLOG, PREVIOUSLY HOSTED @ LIVEJOURNAL.

Tuesday, December 16, 2008

У меня два компьютера. Назовём из условно Windows и Linux. В общей локальной сети.


На столе передо мной - два монитора, две клавиатуры, две мышки. От разных компьютеров. То туда посмотрю, то здесь поработаю. Иной раз открою документацию в PDF на одном мониторе-компьютере, а работаю-сверяюсь на другом.

Предлагается в связи с этим идея программного продукта. Идея проста до безобразия. Набор программ/драйверов/демонов/сервисов, часть из которых стоит на одном компьютере, часть на другом. Делают следующее:

  • Основной компьютер, допустим, Windows. У него самые удобные мышка и клавиатура.
  • Я перетаскиваю машиную стрелку за пределы Windows-монитора вправо, и она появляется на Linux-мониторе. То есть Linux-компьютер получает данные не от своей мышки, которая в него воткнута, а от другой, по сети.
  • Когда мышиная стрелка на Windows-компьютере, то его клавиатура работает как обычно. Когда я "перетаскиваю" мышку на Linux-компьютер, то и клавиатура Windows-машины "подключается" вместо собственной клавиатуры Linux-компьютера.

Т.е. упрощённо: одна клавиатура и одна мышка. Утащил мышиную стрелку с одного монитора на другой - и она там работает как у себя дома. И клавиатура работает на тот компьютер, который в данный момент является "домиком" для мышки.

Задача технически вроде несложная - осталось написать. Подменять родные мышиные координаты и клики теми, которые передаются по сети. И скан-коды клавиатуры тоже подменять подобным образом.

В одном из обсуждений этой мысли мне навалили кучу предложений по использованию VNC, Radmin, X-server и тому подобных вещей (про KVM switches я заранее попросил не упоминать даже). Но никакие радмины не решают задачу так просто - им надо гонять по сети весь десктоп. А нафига его гонять, когда монитор передо мной, я его и так, без сети вижу.

19 comments:

Николай said...

А мне достаточно примерно вот такого устройства: http://www.nix.ru/include/view-photo.html?good_id=48506&pid=2460

http://trendnet.com/

Андрей said...

Идея конечно хорошая, но реализовывать ее никто не будет. И по мне это полный бред, такую вещь делать. Равно сильно что ставить SuSe и забыть про спокойные ночи и вспомнить про бурные будни. Либо windows либо linux. Ну разве что можно к примеру на linux машину поставить web сервер, к нему прикрутить что-то подобное (я точно не помню но друг из ЕП делал такую феньку), в общем на линуксе на вебе крутить что маленького рабочего стола с базовым софтом (офис, акробат, архиватор, плеер даже прикрутили :)), а с виндовс машины уже через браузер открывать и смареть. И делать все что надо. Но все это довольно сильно загружает память ибо юзает полностью флеш. Я вот и сам то чета забыл как называется, на работе сам прикручивал такую феню ибо VPN настраивать смысла не видел, а таскать флешку с собой надоедало, но потом отказался, ибо АДСЛ даже при 1 мбите слабовато было.

Tor_ont said...

Либо windows либо linux.
Эта критичность пройдёт с течением времени...

И по мне это полный бред, такую вещь делать.
Значит производители KVM switches выпускают в железе бред ? То, что я описал - фактически софтовый KVM, ну только без "V".

Андрей said...

Не стоит путать KVM и программный уровень. По сути своей KVM использует в бывшем нуль-модемное соединение. Или по нашему точка-точка. Тут вопрос в безопасности обстоит. При программном уровне в линуске по любому придется открывать доступ по портам для доступа к рабочему столу. А это не больно то секьюретно. И с другой стороны:
Для стандартных портов 22, 80, 53, 21. Можно написать правило вида:
iptables xxx X/limits -1 что-то вроде этого, не более одного соединения за определенный промежуток времени. Стенка получается бронебойная, ибо в банках такие правила и сидят, атакующий даже и знать не знает что он уже давным давно сидит в курилке и курит. А при работе с KDE or GNOME данные правила будут блокировать виндовс машину на этапе загрузке рабочего стола, ибо диапазон открытых портов очень велик и постоянно меняется. И каким-либо образом подобрать время жизни пакета/интервал повтора не реально.
Что же касается такой реализации чисто двух компов, то вроде бы есть программный комплекс "общий рабочий стол", но он вроде платный. И то где то только читал про это.
Есть еще один вариант сделать это:
К линукс машине соединяемся по ssh (22) в конфиге sshd.conf даем разрешение на загрузку иксов, пишем start kde или startx - зависит от дистра. И попробовать перетаскивать на рабочий стол винды. Но опять же без пляски с бубном и рихтованием или же полным отключением iptables не обойтись. нужны будут как минимум 135-139 порты. И то этот метод я пишу то что прямо сейчас на ум пришло. :) Графики нету у меня ни на одном сервере даже на домашнем, чистая консоль и софт лишь: http, dns, samba, ssh, ftp.

Андрей said...

Да чуть не забыл: :)
А кто мешает настроить на линукс samba таким образом что при подключении виндовс машины как локальной сети, в виндовс машине появлялся диск пользователя линукс машины? Или же тупо натсроить конфиг самбы в три строчки а в винде указать "автоматически монтировать при входе". Вот пример как у меня настроено.
[global]
workgroup = HOME
os level = 33
netbios name = KIPALEX
interfaces = eth0
socket options = TCP_NODELAY
security = share

[Distr]
force user = nobody
comment = Distr
writeable = yes
public = yes
path = /mnt/server
force group = nobody

Если поставить уровень security=user будет спрашивать пароль.

Tor_ont said...

По сути своей KVM использует в бывшем нуль-модемное соединение.
KVM обычно не использует НИЧЕГО кроме кучи проводов и контактных групп. И уж точно к нуль-модемному соединению не имеет никакого отношения.
http://en.wikipedia.org/wiki/KVM_switch
http://en.wikipedia.org/wiki/Null_modem

Или по нашему точка-точка.
http://en.wikipedia.org/wiki/Point-to-point
Как ЭТО можно использовать в KVM ?!

При программном уровне в линуске по любому придется открывать доступ по портам
При любом TCP/UDP соединении открывать порты обязательно. Так что ж теперь, сетью не пользоваться вообще ?

вроде бы есть программный комплекс "общий рабочий стол", но он вроде платный
Ещё есть много всяких умных штук, но я же совсем не об этом говорил.

К линукс машине соединяемся по ssh (22) в конфиге sshd.conf даем разрешение на загрузку иксов
Это к описываемой задаче не относится. Кроме того, надо не давать "разрешение на запуск", а _запускать_ иксы на машине.

А кто мешает настроить на линукс samba таким образом что
Потому что это решение совершенно другой задачи, не имеющей отношения к делу. Нафига мне, спрашивается, видеть на одной машине локальный ресурс другой ? Что я с ним делать-то должен ?

Андрей said...

Проработав 2 года я понял:
не верь всему что говорят и что нарисованно.
В частности википедии. Пишет кто хочет и что хочет...
Если такой умный */Потому что это решение совершенно другой задачи, не имеющей отношения к делу. Нафига мне, спрашивается, видеть на одной машине локальный ресурс другой ? Что я с ним делать-то должен ?*/
Воткни на винде машине vmware, в нее воткни линукс, запускай его, и вот тебе два рабочих стола. Такая мысль не приходила?
По поводу любого KVM -- ты его вообще разбирал? К примеру http://kvminfo.ru/article.php?id=41 это конечно IP KVM реализованно на Atmega 128 один порт один микроконтроллер... И где спрашивается пучок твоих проводов? Да и еще если ты не знал в случае выгорания одного порта будь то KVM переключатель, или маршрутизатор, или коммутатор, чтобы вернуть в рабочее состояние остальные порты достаточно сгоревший порт все его концы замкнуть между собой и посадить на землю. А при твоем подходе если "пучок проводов" скрутить между собой я думаю мало что приятного получиться...

Tor_ont said...

Проработав 2 года
Это не срок. С таким же успехом можно сказать "два дня".

Воткни на винде машине vmware, в нее воткни линукс, запускай его, и вот тебе два рабочих стола.
Снова я тебе про Ивана, а ты мне про барана. Мне не нужны два рабочих стола Мне нужны два монитора. Разницу чувствуешь или пожирнее сделать ? Рабочий стол - это virtual entity, а монитор - physical. Разница как между синим небом и помазанным синей краской потолком.

По поводу любого KVM
Не передёргивай. Я не говорил про любой KVM. Читай мой текст внимательней:

KVM обычно не использует НИЧЕГО кроме кучи проводов

Я не рассматриваю устройства масштаба datacenter. Я говорю всего о двух персоналках у меня на столе и под столом.

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

это конечно IP KVM
Совершенно верно. IP KVM. То есть опять же к делу никак не относится, и мной нигде не упомянуто.

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

Tor_ont said...

Если такой умный */Потому что это решение совершенно другой задачи, не имеющей отношения к делу. Нафига мне, спрашивается, видеть на одной машине локальный ресурс другой ? Что я с ним делать-то должен ?*/
Воткни на винде машине vmware, в нее воткни линукс, запускай его


На мой вопрос "зачем мне расшаренный ресурс" при данной постановке задачи ты так и не ответил. Должен ли я считать что не знаешь ответа ?

Андрей said...

Валер... Для того чтобы было более понятно :) Не будем брать оборудование масштаба датацентра, есть и на 2 и на 4. И все они точно также имеют плату управления по каждому порту. почему? А ты сможешь реализовать скользящий контакт как минимум на 4 провода? Скользящий контакт -- при переключении положения с одной группы на другой контакт с предыдущей не размыкается до тех пор пока сл. группа не замкнется.
Это надо для того чтобы + (плюсовой) и - (минусовой) контакты замыкались раньше сигнальных, а если даже быть точнее: при включении сперва подрубается обязательно -, а после него +. А уж потом подключаться должен провод передачи данных, и в последнюю очередь только лишь приема данных. Вот поэтому то и применяют микроконтроллерное управление. Если же нет его. фигня мягко говоря устройство. Ибо при рабочей винде можешь попробовать (если материнку не жалко) повтыкать и по выдергивать клаву, мышку, при чем разных желательно производителей))) К USB это не относиться только лишь к PS/2. Может и будет работать, но не долго. А по поводу моего решения про vmware что-то не пойму что не устраивает? Ставишь в винду виртуалку, тама ставишь линукс, из этого линукса соединяешься с другим компом, грузишь там линукс. И все на компе на котором стоит винда вот тебе и два рабочих стола, не нужен линукс свернул в трей.
А решение может быть только одно гуманное ПА решение.

Tor_ont said...

при включении сперва подрубается обязательно -, а после него +. А уж потом подключаться должен провод передачи данных, и в последнюю очередь только лишь приема данных.
Это реализовано ещё при Царе Горохе - просто и дёшево. Даже проводов не надо. Достаточно взглянуть на USB-разъём, чтобы понять принцип. Но это к делу не относится.

Ибо при рабочей винде можешь попробовать (если материнку не жалко) повтыкать и по выдергивать клаву, мышку
Эта простейшая неприятность преодолена примерно в то же время, при том же царе. Сто лет уже все выдёргивают безо всяких проблем.

К USB это не относиться только лишь к PS/2.
С PS/2 проблема давным-давно решена. Не пользуйся сведениями столетней давности.

А по поводу моего решения про vmware что-то не пойму что не устраивает?
Сам посуди. Одно дело ставить виртуальную машину, которая сожрёт все ресурсы, другое - поставить мелкие драйвера и демоны. Неужели не видишь разницы ?

Ставишь в винду виртуалку, тама ставишь линукс, из этого линукса соединяешься с другим компом, грузишь там линукс.
Зачем мне ТРИ операцонки ?! Зачем мне городить этот огород ?! Зачем мне сворачивать линукс если он мне не нужен - чтобы он болтался в системе и жрал ресурсы ?! Да у меня под него отдельная физическая машина есть, нафига мне ещё на своей основной его ставить, да ещё в гипервизоре ?!!

вот тебе и два рабочих стола
Ещё раз повторяю. Мне не нужно два рабочих стола. Мне не нужно два рабочих стола. Мне нужно два монитора. Мне не нужен геморрой в виде чесания левого уха правой ногой - мне нужен чистый функционал. Мне нужно лёгкое и простое решение, а не все эти извращения с кучей рабочих столов и линуксом в tray. У меня есть два монитора. И мне не нужно больше ничего. Только чтобы единственная клавиатура работала на два компьютера. И чтобы работала она на тот компьютер, на котором в данный момент находится мышиная стрелка. Всё. Баста.

Андрей said...

Нет еще не БАСТА :)
Я кажись понял про что ты...
Synergy - Эта чудесная программа, распространяемая с открытыми исходными кодами по лицензии GPL, может соединить экраны нескольких ПК в один большой виртуальный экран. При этом операционные системы на них могут быть различными. Поддерживаются Windows, Mac OS X, Linux и другие ОС.
Принцип работы очень прост: стоит вам переместить курсор мыши к краю экрана одного ПК, он появляется на краю экрана другого.
Кароче вот урла...
http://synergy2.sourceforge.net/

Андрей said...

А также VNC?
http://ru.wikipedia.org/wiki/Virtual_Network_Computing

Tor_ont said...

Synergy - Эта чудесная программа
ВОТ !!!
Пошёл проверять :)

Андрей said...

Ну как удовлетворишь свои потребности отпишись уж...

Anonymous said...

Да кстати совершенно случайно откопал этот самый synergy в репозитарии RHEL. Это я так вдруг кто то будет искать :) Собранный со всеми зависимостями. Под Дебиан и Убунту тоже попадались. Под фри искать в портах.

Vik said...

Валерий, привет.
У меня была подобная задача.
В качестве рабочей станции винда и куча серверов unix/linux на которых крутился оракл и куча всякого. Так вот к винде было прикручено два монитора. Рабочий стол растягивался на оба. На одном мониторе виндовые приложения, на второй переносил окно (или VNC клиента, или http://www.netsarang.com/download/down_xmg3.html). На линухе соответственно настраиваешь то, что нужно. Сходу как-то так :)
Если, что пиши, подскажу как, что настроить.

Tor_ont said...

Так вот к винде было прикручено два монитора. Рабочий стол растягивался на оба. На одном мониторе виндовые приложения, на второй переносил окно
Вот уж и не знаю как объяснить-то... мне не нужно _два_ монитора к "винде". Мне нужно один у одного компьютера, другой - у другого. И чтоб работало именно так, а не иначе. Но собственно один джентльмен тут уже выдал тайну золотого ключика - synergy.

Anonymous said...

Предлагаю сделать так.

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

Ползаем мышкой между мониторами и таким образом переключаем мышу и клавиатуру программным способом между различными ОС.



Posts Relacionados