среда, 27 февраля 2013 г.

X11vnc - аналог Radmin для linux.

Когда работаешь в техподдежрке в компании со штатом более ста человек, очень быстро отвыкаешь от индивидуального подхода (в прямом смысле 8)) к каждому пользователю. Основными рабочими инструментами становятся Radmin, vnc и службы удаленного рабочего стола windows.
Именно после такой работы я начал плотно заниматься переводом пользователей на linux, и первым делом встал вопрос о системах удаленного управления рабочим столом в этой операционной системе.
Я не буду рассказывать о том, каким тернистым путем я шел, ведя борьбу с различными программами на счет автозапуска, подключения к текущей сессии пользователя и тд и тп.
Расскажу только о конечном результате.
Сейчас я использую x11vnc. Основным дистрибутивом является openSUSE 12.1. Сначала устанавливаем сервер:

zypper in x11vnc

После установки можно настроить сервер из графической оболочки, но мне это сделать не удалось.


Поиски в гугле и чтение манов дали ответ:

x11vnc -display :0 -shared -forever -auth guess&

Так выглядит строка запуска сервера vnc для того, чтобы подключаться  к запущенному графическому серверу. Особо отмечу параметры запуска : -auth guess разрешает подключение без какой-либо аутентификации, то есть не требуется ни подтверждение пользователя, ни указание пароля, любой может получить полный доступ к сессии пользователя просто обратившись к компьютеру по IP адресу или имени используя vnc.
В моей компании подобная ситуация допустима и искать более подходящие параметры я не стал. Добавил команду в автозагрузку создав скрипт /etc/init.d/x11vnc

 #!/bin/bash
x11vnc -display :0 -shared -forever -auth guess&


сделал его исполняемым (chmod +x /etc/init.d/x11vnc) и добавив в запуск на 5 уровне исполнения (ln -s /etc/init.d/x11vnc /etc/init.d/rc5.d/S12x11vnc).
Все прекрасно работает, казалось бы можно просто работать, но...
В наличии имеется довольно много старых компьютеров, которые openSUSE с KDE просто не вывезут. На них я обычно устанавливаю XFCE, хотя в последнее время стал склоняться к использованию Xubuntu 12.04. С XFCE используется диспетчер lightwm.
Так вот, при выполнении указанной выше команды получаем следующую картину:

27/02/2013 17:38:53 x11vnc version: 0.9.12 lastmod: 2010-09-09  pid: 2149
xauth:  file /root/.Xauthority does not exist
/tmp/fd.0RDwcb: 305: [: -a: unexpected operator
/tmp/fd.0RDwcb: 305: [: -a: unexpected operator
27/02/2013 17:38:53 -auth guess: failed for display=':0'
27/02/2013 17:38:53 -auth guess: since we are root, retrying with FD_XDM=1
/tmp/fd.7U6gp4: 305: [: -a: unexpected operator
/tmp/fd.7U6gp4: 305: [: -a: unexpected operator
27/02/2013 17:38:54 -auth guess: failed for display=':0'


Вывод ошибок и Гугл многое говорят о возможности исправления ошибок, но я выбрал наиболее простой, как мне кажется, способ.

x11vnc -storepasswd /home/.vncpasswd
Enter VNC password:


Создаем файл с шифрованным паролем для доступа. Затем меняем наш скрипт /etc/init.d/x11vnc:

#!/bin/bash
x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /home/.vncpasswd


Дальше добавляем его в автозапуск как описано выше. Параметр -rfbauth /home/.vncpasswd указывает серверу x11vnc использовать созданный ранее файл с паролем. Указание запущенного экземпляра дисплейного менеджера -auth /var/run/lightdm/root/:0 необходимо, без него сервер x11vnc в XFCE просто не стартует. Остальные опции желательны, так как при работе без их указания наблюдаются многочисленные проблемы - не срабатывает запуск, сервер отваливается после отключения клиента, и др.
Все действия описаны для openSUSE, отличие от Xubuntu только в добавлении скрипта в автозагрузку. Там это делается командой update-rc.d x11vnc defaults 99 после создания файла x11vnc в директории /etc/init.d/.
После всех процедур получаем компьютер, к которому в любой момент можно подключиться по vnc и оказать помощь пользователю.



пятница, 22 февраля 2013 г.

1C под Linux.

Сегодня тестировал клиент 1С 8.3.2.172 для Linux. При установке в openSUSE 12.2 при помощи  zypper вываливается ошибка:

zypper in *.rpm
2 проблемы:
Проблема: ничто не предоставляет core83.so, необходимый для 1C_Enterprise83-client-8.3.2-172.i386
Проблема: ничто не предоставляет core83.so, необходимый для 1C_Enterprise83-client-8.3.2-172.i386


Используя rpm видим более подробную информацию:

rpm -ivh *.rpm
ошибка: Неудовлетворенные зависимости:
        1C_Enterprise83-common = 8.3.2-172 нужен для 1C_Enterprise83-client-8.3.2-172.i386
        1C_Enterprise83-server = 8.3.2-172 нужен для 1C_Enterprise83-client-8.3.2-172.i386
        core83.so нужен для 1C_Enterprise83-client-8.3.2-172.i386
        libicudata.so.46 нужен для 1C_Enterprise83-client-8.3.2-172.i386
        libicui18n.so.46 нужен для 1C_Enterprise83-client-8.3.2-172.i386
        libicuuc.so.46 нужен для 1C_Enterprise83-client-8.3.2-172.i386
        stl83.so нужен для 1C_Enterprise83-client-8.3.2-172.i386


Ясно, что нужно вместе с клиентом ставить сервер. Еще версия icu отличается от нужной для 1С.
Пока скачиваются установочные файлы сервера пробую запустить под wine используемую в компании 8.2.16.363. Результат радует:
























Без каких либо ошибок программа устанавливается, настраивается подключение к базе (сервер 1с работает на centos 5.8, сервер баз данных - Postgreql 9.1.2) и работает.
Пока настроил работу под wine одному бухгалтеру, пусть потестирует.
Ставлю сервер 1с 8.3 вместе с клиентом, установка завершается без ошибок.
Запускаю клиента:
  
/opt/1C/v8.3/i386/1cv8
Error with load - libWand.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
Error with load - libfreetype.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
Ошибка сегментирования


Гугл выдает массу вопросов по данным ошибкам. Судя по всему проблема с библиотеками ImageMagic и ttf2pt1. Видимо версии, нужные для 1с и установленные у меня не совпадают. Калечить рабочую систему никакого желания нет, да и день сегодня короткий перед праздником. Всех поздравляю!

Rdesktop и проброс принтеров.

Сегодня менял рабочую станцию очередному пользователю. Как обычно установил opensuse 12.1 pxe-загрузкой по сети, настроил клиента ldap и отнес в нужный кабинет. После того как сотрудник залогинился, пришло время пользовательских настроек. Аська, почта, чат, туда-сюда. Подключил сетевой принтер через веб интерфейс cups. При установке указал имя HP_LaserJet_P2015. Начал настраивать подключение к серверу терминалов с помощью rdesktop. Создал ярлык с указанием строки запуска rdesktop -u login -p pass -d domen -s "C:\\Program Files\\1cv82\\common\\1cestart.exe" -g 1436x840 -k ru -r printer:HP_LaserJet_2015="HP LaserJet P2015 Series PS" termВсе отлично, 1с запустилась, принтер проброшен, ОК.
И тут -ах!- не печатает с сервера. Как так? Все процедуры уже проделывал десяток раз, на соседнем столе точно такой же комп стоит, печатает. Полез перенастраивать принтер. Драйвера pcl5, pcl6, cups, lj. Удаление всех пакетов драйверов, кроме hplip. Обновление hplip. На все движения - ноль эмоций. Уже 4 часа с компом вожусь, другая работа колом встала!
Наконец заметил: в имени принтера пропущена одна буква "Р". Исправляю и чудо происходит. Рабочая строка запуска rdesktop -u login -p pass -d domen -s "C:\\Program Files\\1cv82\\common\\1cestart.exe" -g 1436x840 -k ru -r printer:HP_LaserJet_P2015="HP LaserJet P2015 Series PS" term

Мораль: здоровый полноценный сон - залог хорошей работы 8) Просто за последние трое суток спал 5, 4 и 6 часов соответственно.
P.S.: Типовые операции лучше автоматизировать. Хотя бы на уровне копирования ярлыков, а не создавания каждый раз с нуля. И имена принтерам на пользовательских машинах давать одинаковые. Например, printer. Но все равно драйверы будут отличаться, и их нужно будет вручную указывать.
P.P.S: Почему не работает печать с HP Universal Printing?

понедельник, 18 февраля 2013 г.

Корпоративный чат на openfire.

На новом месте работы использовалась специализированная программа для общения между сотрудниками - чат Commfort. Элементарные настройки, работа под wine, удобное администрирование и интерфейс клиента. Все хорошо, но нужна лицензия на сервер, цена вопроса - 24000р. Не много конечно, но учитывая скрип, с которым начальство дает денег - увы и ах. Гугл по запросу "корпоративный чат linux" выдал практически единственное решение - jabber-сервер Openfire. Берем, тем более что у меня используется в качестве АТС платформа Elastix, в которую openfire уже всторен.
Собственно, сама настройка openfire довольно тривиальна, да к тому же разжевана десятки раз :
http://alphone.ru/doc/im/openfire-in-elastix/
http://adminsk.ru/Administratoru/Lokaljnyi-IM-server-OpenFire.html
http://sgww.livejournal.com/9763.html
http://doc.3dn.ru/publ/15-1-0-27

Остановлюсь на основных для меня моментах.
1. Имя сервера (оно же - имя jabber-домена).
Рекомендую сразу же ставить то, которое потом будет прописываться на клиентах. Хотя в статьях упоминается возможность изменения имени впоследствии, у меня любое его редактирование приводило не только к невозможности подключения клиентов, но и к недоступности веб-интерфеса (кажется администраторские права привязываются к домену и после его изменения пользователи старого не могут подключиться к новому). Разбираться не стал, перенастраивать было лень, поэтому просто вернул старое имя сервера редактированием конфигурационных файлов.
2. Настройка общего чата или комнаты(конференции), как это называется в openfire.
Совместные чаты здесь реализованы на манер irc каналов. Долгое время не мог разобраться с совместным доступом к комнате по умолчанию - то повторная авторизация требуется, то клиент с правами гостя заходит и еще всякое разное. А мне нужно чтобы у клиента при входе в программу автоматически окно конференции открывалось, а собственно сам джаббер пока им постольку-поскольку (привыкли к старому чату). В итоге заработало с такими настройками:

 
Но и это еще не все. Не знаю почему, но у меня общий чат нормально заработал только после дублирования этих настроек следующим способом.
Переходим по ссылке Групповой чат - Комната администратора (настраивал в русском интерфейсе, поэтому немного корявые названия, к тому же некоторые объекты  имеют два и более названия). В списке выбираем нужную комнату:

 Далее переходим по ссылке в названии комнаты для ее редактирования:
Здесь дублируются свойства комнаты. У меня выставлено так:

3. База пользователей в ldap
У меня все учетные записи пользователей хранятся на сервере ldap под управлением opensuse 12.2. Вести отдельную базу для чата не вижу смысла, да и неудобно это, хлопотно. Идем Сервер - Настройки сервера - Настройки профиля и указываем там данные сервера ldap.





Далее идем Пользовтели/Группы - Группы и выбираем там группу ldap, членами которой являются все пользователи jabber (можно создать на сервере ldap специальную, но мне было лень):



Дальше выставляем настройки таким образом, чтобы все пользователи данной группы отображались в контакт-листе jabber-клиента:

4. Настройки клиента.
Так как я заядлый "кедераст" в качестве клиента выбрал psi В качестве логина и пароля вводим данные пользователя ldap, в домене указываем имя сервера, прописанное в openfire:
Получаем общий контакт лист:


Для автоматического подключения общего чата нужно правой кнопкой щелкнутьна названии нашего сервера в родстере и выбрать  Управление - Закладки и добавить там данные нашей комнаты:
С указанными на сервере настройками (см. выше) в комнату может входить любой авторизованный на сервере пользователь. При этом в поле Ник вовсе не обязательно указывать логин пользователя, гораздо удобнее написать там реальное имя. Также можно указать опцию Автологин. Она нужна для автоматического входа в конференцию при запуске программы:
Вот и все. Чат работает.



пятница, 15 февраля 2013 г.

Ubuntu в офисе

Планомерно перевожу рабочие станции пользователей на linux. В большинстве своем используется openSUSE 12.1 (еще старый админ начинал на нее и 11.4 переводить, да и я сам дома 3 года "сюзю" использовал), есть несколько 11.4, 12.2 и ubuntu.
Устав биться с некоторыми проблемами (SSSD, тормоза на старых машинах, уходящие при повторных инсталяциях, и тд, и тп) решил попробовать ubuntu. Так как предстоит работа с ну ооочень древними машинами - xubuntu 12.04.
Итак, начнем.
Первое разочарование - инсталятор по умолчанию не поддерживает lvm:


Дальше - неплохо. Установка длится менее получаса (прим. 20 мин, точно не засекал):


Симпатично, шустренько, все работает!
Идем дальше. Странно отсутствует привычный офисный софт (в opensuse он ставится при любой стандартной установке). Ставим самостоятельно apt-get install libreoffice.
Приятно удивляет количество софта в стандартных репах - куча разных vnc, rdp, раньше приходилось подключать дополнительные репозитории. Устанавливаю xrdp и - о, чудо! - он работает без каких-либо дополнительных телодвижений! Подключаюсь и с винды и с рабочей opensuse 12.2 - все нормально (проблемы с пробросом принтеров и тд - не считаются, они у xrdp в принципе не решены нигде).
С vnc загвоздка - не могу найти в графическом окружении никаких настроек. Приходится использовать привычный x11vnc. Также как в opensuse с XFCE не заводится простым запуском, колдую с созданием файла пароля и скриптом автозапуска - работает.
Подключение к серверу ldap. Читаю мануалы - становится грустно.
В opensuse давным-давно и сервер и клиент настраиваются в графическом окружении YAST.
http://doc.opensuse.org/documentation/html/openSUSE/opensuse-security/cha.security.ldap.html#sec.security.ldap.yast

http://ru.opensuse.org/SDB:Samba_%D0%B8_LDAP_%D0%BD%D0%B0_openSUSE_11.1_%D0%91%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9_%D1%81%D1%82%D0%B0%D1%80%D1%82

Yast можно запустить в консоли.

В Ubuntu же нам придется повозиться.
https://help.ubuntu.com/community/LDAPClientAuthentication
http://sudouser.com/kak-ustanovit-ldap-server-i-ego-klientov-ldap-linux-debian-ubuntu-auth.html

Все настройки выполняются в консольном режиме, выполнением команд и редактированием конфигурационных файлов. Так как сервер мне устанавливать не нужно, все довольно тривиально, но есть один момент, который потрепал мне нервы.
Автоконфигурация пакета ldap-auth-client, которая происходит при установке, вносит данные ldap сервера в файл /etc/ldap.conf в формате:

base dc=mydomain,dc=local
uri ldapi:///mydomain.local

Тонкость заключается в том, что при настройке сервера по умолчанию (без шифрования, простой ldap) подключение клиентов с такими параметрами не возможно. Пришлось руками менять протокол( ldapi: на ldap:). Но и это не помогло! Оказывается в адресе сервера ldap должно быть два слэша, а не три! Спасибо ребятам с ЛОРа http://www.linux.org.ru/forum/admin/8493410
С этими настройками все заработало.

base dc=mydomain,dc=local
uri ldap://mydomain.local

Чтож, Xubuntu 12.04 оставила о себе довольно приятные впечатления, однако из-за мелкой возни в консоли по различным поводам от принятия ее в качестве основного дистрибутива для установки в офисе я пока воздержусь. Opensuse наше все! Тем более RC1 новой версии 12.3 хоть и огорчает отсутствием samba 4 и Libreoffice 4, но радует увеличением производительности и отзывчивости (ЧИСТО СУБЪЕКТИВНОЕ МНЕНИЕ! ТЕСТОВ НЕ ПРОВОДИЛ!). Пока огорчает неработоспособность клиента тестовой версии 1с 8.3 под Linux на openSUSE (на Ubuntu работает ), но будем надеяться что к моменту выхода не ознакомительных версий это исправят. В противном случае Xubuntu 12.04 - первый кандидат для перехода.

Буду или не буду?

Давно подумывал создать блог. Останавливала мысль о собственной лени - неужели мне не будет "влом" туда писать? Однако в жизни происходит все больше интересных событий, которые хотелось бы полнее осмыслить и запомнить, а также поделиться ими с людьми.
Будем пробовать!