By the Shade of the Tree

В тени электронного дерева

20090905

Автоконфигурация прокси

Задача:

Сделать так чтобы настройки прокси-сервера на переносимых за пределы корпоративной сети компьютерах автоматически выставлялись на использование прокси когда компьютер внутри сети, и прямое соединение с интернет когда компьютер вне ее.

Решение:

Исследование показывает что не все браузеры адекватно отрабатывают определение собственного ip-адреса при исполнении .pac файла. Написано серверное решение, cgi-скрипт на языке perl, который в зависимости от адреса узла определяет какую версию файла выдать. Файл автонастройки прописан в свойствах MacOS и в настройках Opera. В Firefox выставлена настройка "Автоматически определять настройки прокси для этой сети", в сети настроен wpad, как по dhcp, так и по dns. Поддержка в IE не проверялась, но теоретически должно работать.

Исходный код скрипта:

!/usr/bin/perl
print "Content-type: application/x-ns-proxy-autoconfig\n\n";

my $remote = $ENV{'REMOTE_ADDR'};

if ($remote =~ /^192\.168\./) {
print <<EOF;
function FindProxyForURL(url, host) {
if (shExpMatch(url, "*.mydomain.ru/*")) {return "DIRECT";}
if (shExpMatch(url, "*.mydomain.ru/*:*")) {return "DIRECT";}
return "PROXY 192.168.1.2:3128";
}
EOF
} else {
print <<EOF;
function FindProxyForURL(url, host) {
return "DIRECT";
}
EOF
}

Добавлено в настройка apache (не совсем верно с точки зрения MIME):

AddType proxy/pac .dat
AddType proxy/pac .da
...
Action proxy/pac /cgi-bin/pac.cgi

Созданы пустые файлы в корне http-сервера:

wpad.dat
wpad.da

Создана запись cname в DNS где wpad.ms45.edu.ru указывает на сервер отдающий wpad.dat.

20090722

MacOSX 10.5 server quotactl

Иногда у меня создается впечатление что все вокруг умные, а я один тут в белом хожу как дурак. Я не нашел почему в моем экземпляре MacOS для управлением квотами есть только edquota, а quotactl нету. И библиотеки quotactl кажется тоже нету, хотя в C я не силен. Но edquota не удобна тем что плохо поддается автоматизации через всякие скриптики которые переделывают квоты 9000 пользователям за раз.

В общем я написал на перле ересь которая принимает аргументы как quotactl, потом вызывает edquota и делает что надо. Ценность этого продукта можете оценить сами: тут.

Строили и наконец построили

Для работы связки SLES 10 + OES 2 + NSS + afptcpd <=> Mac OS 10.5 сделано следующее:

  • Чтобы убрать мертвозависания сервера, обновлен OES2. (Неожиданное решение, правда? Что характерно, разбиение рейда и установка NSS на отдельный том не устраняло мертвозавискний.)
  • Чтобы убрать ошибки при которых MacOS и afptcpd начинали не сходиться в принципах именования файлов и из за этого не работало копирование/удаление, в свойствах тома NSS установлен namespace=unix ( с помощью nssmu)

Я не знаю, может все это очевидные вещи... Которые написаны в Novell-ских мануалах? А может быть тайное знание старейшин, которое по крупицам нужно собирать по novell-ским форумам?

По прежнему туманно в королевстве.

20090717

Особенности afptcpd потерявшего суффикс .nlm

При отладке afptcpd портированного под SLES вместе с OES2 выяснилось несколько любопытных особенностей.

  • Изначально включена опция кросспротокольной блокировки файлов. Кроме полезных вещей, она не позволяет записывать удалять некоторые типы файлов (проблема появлялась при копировании любых файлов которые на самом деле папки, таких как .pkg или .app из под MacOS 10.5, копирование останавливалось на файле с названием Icon, удалить его после этого не выходило). Отключение опции устраняет проблему.
  • Изначально включена опция передачи всей информации о правах. Ее применение в моем случае порождало много-много сообщений об ошибке в лог (после того как я включил логирование ошибок, разумеется). Переключение в режим передачи только основной информации о правах существенно (в 2 раза) снизило количество ошибок.
  • В некоторых случая вскоре после перезапуска (/etc/init.d/novell-afptcpd restart) сервиса сервер зависает наглухо. Зависают X-ы, зависает ssh, зависает веб-сервер... Все, в общем то, зависает. Только пинги тихо идут.

Неисключено что последняя проблема вызвана тем что вопреки рекомендациям NSS том и системный том с помощью evms установлены на один физический диск. Неисключено что нам придется переделать рейд и вынести из него один диск под систему. Но объяснять оставшуюся проблему с копированием и удалением файлов этим я как то не решаюсь(ошибка -50 на клиенте, все том же MacOS 10.5, при копировании, точные симптомы которой выяснить пока не удалось - все зависло после одного из перезапусков afptcpd).

В королевстве туманно.

OES2 такой разный

Не всегда хотят дружить программки от novell для SLES и для NetWare, ой не всегда.

Например, при установке OES2 в существующее дерево где master-репликой является NetWare сервер, не захотели настраиваться AFP и CIFS. Дело в том что настроечные скрипты на Shell, которые Yast запускает при настройке этих сервисов (из /opt/novell/afptcpd/bin/*.sh) не хотят дружить с LDAP-сервером NetWare, и говорят что соединиться с ним не могут. Yast же выдает ошибку "here are no password policies currently defined in eDirectory. To associate policies to users, plase re-configure AFP later using YaST after adding password policies and users to eDirectory. AFP configuration will continue."

Проблема решается выносом из настройки LDAP адресов NetWare сервера (чтобы скрипты соединялись на SLESовский eDirecroty), либо переписыванием скриптов так чтобы вне зависимости от парметров командной строки подставлялся нужный сервер, либо запуском скриптов руками. Я сделал первое, пока не жалею.

20090218

Дампилка mysql

На питоне. Дампит базы в отдельные файлы, состоит из библиотеки и собственно запускаемых скриптов. К имени файла дописывает время, жмет дампы в bzip2, ну или еще чемто. Хорошо работает по крону. Делает ротацию логов. Может дампить все базы с сервера, может дампить все кроме каких то, может выборочно, может таблицы отдельные исключать.

http://enmirneli.ms45.edu.ru/sqlbackup.tar.gz

Файлы:

  • backup.py - библиотека, должна работать так
  • sample.py - собственно сценарий архивации. Скопировать под другое имя и переписать так как нужно.

Установка сетевого времени на маках

Можно через ARD или через SSH, можно без переводов строк
systemsetup -setusingnetworktime off;
ntpdate -d ntp.example.com;
systemsetup -setnetworktimeserver ntp.example.com;
systemsetup -setusingnetworktime on