среда, 27 октября 2010 г.

FreeRDP

Сегодня в новостях услышал о существовании преемника rdesktop - freerdp. Судя по описанию в новости и по отзывам в комментариях, в нём устранены проблемы с несинхронным переключением раскладки на локальном и удалённом компьютере и устранены проблемы с залипанием клавиши Alt. Попробовал - и в самом деле, отлично работает. Ещё поправили глюк, когда вместо символа / вводился \. Наконец-то удалённое администрирование Windows-машин из Linux-компьютера превратилось в удовольствие! Спасибо добрым людям за то, что довели глючную поделку до ума.

В Debian пакет называется freerdp-x11, а команда для подключения - xfreerdp.

Автомонтирование с помощью autofs

Давно мечтал настроить автомонтирование с помощью autofs. Вроде бы всё очень просто, но до сих пор до меня не доходила одна очень простая, но ключевая вещь. Но об этом попозже, сначала опишу настройку.

Сначала, как водится, нужно установить autofs:
# apt-get install autofs5
Затем задать ему настроечные файлы. Первый файл называется /etc/auto.master и содержит всего одну строчку:
/mnt/.autofs    /etc/auto.misc --timeout=60
Эта строчка говорит о том, что все обращения к каталогу /mnt/.autofs будут обрабатываться демоном automount, настройки которого указаны в файле /etc/auto.misc. Опция --timeout=60 сообщает, что если к какому-либо диску не обращались в течение 60 минут, его нужно автоматически размонтировать.

Второй файл, как вы уже наверное догадались, называется /etc/auto.misc, у меня на компьютере он содержит следующие строчки:
cdrom           -fstype=auto,ro         :/dev/sr0
floppy          -fstype=auto,umask=000  :/dev/fd0
usb1            -fstype=auto,umask=000  :/dev/sdc1
usb2            -fstype=auto,umask=000  :/dev/sdd1
usb3            -fstype=auto,umask=000  :/dev/sdc
usb4            -fstype=auto,umask=000  :/dev/sdd
В первом столбце сообщается название каталога, в который будет смонтирован диск, во второй колонке перечисляются опции монтирования, в третьей колонке - имя файла устройства. Двоеточие на самом деле является разделителем имени компьютера и диска на нём. Autofs может автоматически монтировать не только файловые системы на локальных устройствах, но и каталоги NFS или Samba.

Перед запуском autofs можно создать в каталоге /mnt/.autofs подкаталоги cdrom, floppy, usb1, usb2, usb3, usb4 и проставить на них права доступа. Например, я ограничился двумя группами - cdrom для устройства, с которого можно только читать, и floppy для устройств, на которые можно и читать и писать:
# cd /mnt/.autofs
# chgrp cdrom cdrom
# chmod 550 cdrom
# chgrp floppy floppy usb1 usb2 usb3 usb4
# chmod 770 floppy usb1 usb2 usb3 usb4
Теперь можно добавить в группы floppy и cdrom пользователей, которые должны иметь доступ к дискетам/USB-дискам и приводу компакт- и DVD-дисков. Например, вот так:
# adduser stupin cdrom
# adduser stupin floppy
Теперь можно запустить autofs:
# /etc/init.d/autofs start
Теперь о простой, но очень важной детали. Если теперь просто зайти в каталог /mnt/.autofs, то окажется, что он пуст. Не смотря на то, что мы создавали в каталоге /mnt/.autofs подкаталоги cdrom, floppy, usb1, usb2, usb3, usb4, эти каталоги после запуска демона autofs не отображаются. На самом деле мы создавали их только для того, чтобы определить права для смонтированных файловых систем.

Эти каталоги не появятся в /mnt/.autofs до тех пор, пока мы не попытаемся к ним обратиться!

Например, заходим в каталог /mnt/.autofs и видим, что там ничего сейчас нет:
# cd /mnt/.autofs
# ls
Не обращая на это внимания, пытаемся обратиться к каталогу /mnt/.autofs/usb1, как будто он есть:
# ls usb1
1  2
При обращении к этому каталогу autofs активировал скрытый каталог и смонтировал в него USB-диск. Теперь, пока каталог не успел ещё отмонтироваться, его можно увидеть:
# ls
usb1
Так вот, для того, чтобы вас не смущало отсутствие каталогов и вы не гадали, какие каталоги там могут появиться, если к ним обратиться по имени, можно создать в /mnt символические ссылки, которые сами всегда будут существовать и указывать на нужные каталоги:
# cd /mnt
# ln -s .autofs/cdrom cdrom
# ln -s .autofs/floppy floppy
# ln -s .autofs/usb1 usb1
# ln -s .autofs/usb2 usb2
# ln -s .autofs/usb3 usb3
# ln -s .autofs/usb4 usb4
Теперь можно зайти в каталог /mnt и увидеть все диски, которые смонтированы в настоящее время статически или монтируются автоматически при обращении к ним:
# cd /mnt
# ls # ls
cdrom  disk_c disk_d floppy iso  usb1  usb2  usb3  usb4
Можно зайти в любой из каталогов и увидеть его содержимое. При этом автоматически монтируемые диски смонтируются при обращении к каталогу.

Есть, правда, и несколько неприятные вещи. Например, умные файловые менеджеры не меняют текущий каталог для того, чтобы отобразить его содержимое. Как следствие, когда мы переходим по ссылке, происходит обращение к автоматически монтируемой файловой системе и она монтируется. Создаётся список файлов в точке монтирования, этот список выводится файловым менеджером на экран. Если теперь человек надолго задумается, диск автоматически отмонтируется, т.к. он никем не занят и к нему не было обращений. Подсистема inotify сразу же сообщит об исчезновении файлов из каталога файловому менеджеру и файловый менеджер обновит содержимое каталога - покажет пустоту.

Поэтому удобно пользоваться таким автомонтированием только из командной строки, из Midnight Commander и из других файловых менеджеров, которые меняют текущий каталог.

Перенос DHCP-сервера

Встала задача - перенести настройки с DHCP-сервера Windows на DHCP-сервер в Linux. Основные настройки можно перенести и вручную, а вот таблицу с привязками имени, MAC- и IP-адреса каждого компьютера переносить вручную мне было лень. Было лень настолько, что я принялся писать конвейер для командной строки, который преобразует мне всю таблицу из одного формата в другой.

Для начала я снял дамп настроек DHCP-сервера в Windows:
netsh dhcp server \\11.11.11.1 dump > dump.txt
Потом я перенёс этот файл в Linux, сменил его кодировку и после получаса мучений, наваял такой конвейер (для того, чтобы увидеть целиком, придётся, видимо, скопировать его и вставить в текстовый редактор):
grep "Dhcp Server" dump.txt | \
  cut - -f8,9,10 -d" " | \
  grep domain | \
  cut -d. -f1-4 | \
  sed -e 's/\"//g' - | \
  sed -e 's/\(.*\) \(.*\) \(.*\)/\2 \1 \3/g' - | \
  sed - -e 's/^\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)/\1\2:\3\4:\5\6:\7\8:\9/g' | \
  sed - -e 's/:\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)/:\1\2:\3\4/g' | \
  sed -e 's/\(.*\) \(.*\) \(.*\)/\thost \3 {\n\t\thardware ethernet \1;\n\t\tfixed-address \2;\n\t}/g' - \
  > hosts.txt
Эта строчка находит в файле dump.txt строки вида:
Dhcp Server 11.11.11.1 Scope 11.0.0.0 Add reservedip 11.11.11.11 00AABBCCDDEE "computer.domain" "" "DHCP"
И переделывает их в строки вида:
host computer {
  hardware ethernet 00:AA:BB:CC:DD:EE;
  fixed-address 11.11.11.11;
}
Которые записывает в текстовый файл hosts.txt.

понедельник, 18 октября 2010 г.

Аудиоплееры в Debian

С аудиоплеерами в Linux, на мой взгляд, сложилась парадоксальная ситуация. Плееров много, но выбрать из них нечего. Даже с видеоплеерами и то лучше - можно выбрать практически любой и он не будет написан на Python, mono или завязан на KDE4. А вот в случае с аудиоплеерами всё не так.

Недавно я не вытерпел и перешёл с Lenny на Squeeze - в Lenny оказалось неожиданно много глюков. Судя по графику глюков, Squeeze уже сейчас содержит глюков меньше, чем Lenny. По случаю этого обновления мной на пробу были протестированы несколько плееров:

1. Exaile - написан на Python, практически точная копия Amarok. По непонятной причине не захотел играть mp3. Разбираться было лень, т.к. есть много других плееров - как грязи.



2. Banshee - написан на mono. Даже смотреть не стал.

3. Audacious - вполне себе неплохой плеер с WinAMP-подобным интерфейсом. Всё бы ничего, но мне во-первых не очень нравятся программы со шкурками. Во-вторых, он не позволяет выбрать дорожку из многодорожечных FLAC-файлов. А в третьих, натерпелся я от него в Lenny глюков: неработающая поддержка MIDI, мёртвое зависание при попытке посмотреть свойства MIDI-файла, работающее через раз групповое добавление файлов.



4. Audacious GTK - вроде бы то, что надо, но невозможно двигать треки в списке, невозможно удалить несколько треков из списка за раз. Многодорожечные FLAC-файлы также не работают. Одним словом, покоцаный Audacious.



5. Listen Music Player - написан на Python. При обновлении библиотеки добавлял вновь обнаруженных артистов, альбомы и жанры в случайное место списка. В результате во время сканирования попытка запустить хоть какую-нибудь песню превращалась в увлекательную игру - попытка попасть мышью в только что увиденного артиста, который мгновенно убегал совершенно неожиданно то ли вверх по списку, то ли вниз. Уже выделенный однажды элемент так же неожиданно подменялся на другой случайный.



6. Amarok 2. Тяжёл и неповоротлив, как и всё современное KDE 4. Раньше пользовался Amarok, Amarok 2 пробовать не стал.

7. Quod Libet, написан на Python. Просто не запустился!

8. mpd - маргинальный плеер с клиент-серверной архитектурой.

9. mocp - см. пункт 8.

10. XMMS2 - после установки сообщил, что он будет работать только в режиме командной строки и вообще, что он deprecated и заменён на nyxmms2. Поиск такого пакета завершился молчаливым завершением пакетного менеджера - нет такого пакета.

11. BMP (Beep Media Player) - нет такого в пакетах.

12. QMMP - WinAMP-подобный плеер на основе Qt. Для Debian есть только в виде пакета для нестабильной (Sid) ветки. Ставить не стал.

13. Decibel Audio Player - без сканирования фонотеки добавить в список воспроизведения хотя бы файлик не дал (нужно лезть в настройки, чтобы можно было выбрать файлы из определённой папки). Во время сканирования коллекции с плеером ничего невозможно сделать - он не отображает уже отсканированные песни и не позволяет их запустить прямо сейчас, пока будет сканироваться остальное.



14. DeaDBeeF - плеер, стремящийся стать аналогом Foobar2000. Установил из репозитория проекта пакет для Squeeze. Поддерживает многодорожечные FLAC. Но, не позволяет воспроизводить MIDI через ALSA, можно воспроизводить MIDI только через собственный хиленький программный синтезатор с примитивным звучанием типа OPL3. Остановился пока на нём.

пятница, 8 октября 2010 г.

Добавление альтернативных имён портала SharePoint Services

Пишу себе на память. Вот по этой ссылке можно найти всю интересующую информацию по сабжу: Update to using External URLs with WSS v3

Можно воспользоваться "Центром администрирования", меню "Операции", пунктом "Сопоставления для альтернативного доступа" и прописать там альтернативное имя портала.

Я воспользовался командой следующего вида:
STSADM.EXE -o addalternatedomain -url http://portal -incomingurl http://anothername -urlzone intranet
Затем добавил новое имя на DNS-сервере и портал стал доступен под двумя именами одновременно.

Делается это с целью последующего переименования сервера в имя, соответствующее корпоративному стандарту. Затем сервер будет переведён из домена филиала в общекорпоративный домен по уже обкатанной мной технологии: Миграция портала SharePoint Services в домен Active Directory.