Ubuntu 14.04 LTS, старые компьютеры и старые видеокарты

… Скорей всего неофитам этого не понять. Но были времена, когда я мечтал о Hyperthreading P4 3GHz c видеокартой Ati radeon 9800 (что характерно с необходимостью доп. питания). И вот пару дней назад мы с мужиками вернулись с холодного склада, откуда вилами выкидывали старое барахло. И вот она у меня на столе. Когда то супер компьютер, сейчас — не сказать что бы очень.
Ну чтож, посмотрим, можно ли это куда-нибудь применить…

Читать дальше →

Генерация случайного числа в диапазоне от min до max

  • BASH

min=121
max=257
v=$(( min + ($RANDOM*(max-min))>>15 ))


Работает по принципу:

v=min+rnd/32768*(max-min)

Но вместо деления используются побитовые сдвиги.
Недостаток неочевиден, но он есть: v никогда не сможет быть равным max, поскольку в действительности $RANDOM принимает значения от 0 до 32767, а v=max только если бы $RANDOM=32768. Причём если зазор между max и min значительный, то кроме самого max не смогут быть «достигнуты» и зачения меньше max в ближайшей окрестности.
Тем не менее, это самый простой и самый эффективный генератор случайных чисел в заданном диапазоне, недостатки которого, как водится, напрямую вытекают из его достоинств, а уж вам выбирать, что важнее. Для диапазонов, по размаху значительно меньше 32768, погрешность не должна быть критична.

Как переименовать сертификат в Mikrotik.

Столкнулся с «особенностью» свежих релизов RouterOS, через веб-интерфейс и winbox нельзя переименовывать импортированные сертификаты. На форуме техподдержки написали про такой костыль:

1. Открываем CLI
/certificate print

2.
/certificate edit N

3. Далее нужно написать «name», именно так, а не новое имя сертификата.
value-name: name

4. Откроется редактор, в нем исправляем имя и жмем CRTL-O для сохранения.

UPD
В версии 6.17 этого бага уже нет.

Скажи мне "да" или "нет" и дай мне свой ответ! :)

  • BASH
Поскольку люди, которые на BASH'е пишут многословно и ужасно, уже откровенно (достали), предлагаю свой вариант элементарной функции чтения односложного ответа пользователя.

read_yn () {
 local yn dflt='Y'  
 if [[ ${#1} == 1 && ${1^} =~ ^[YN]$ ]]; then   
  shift           
  dflt=${1^}
 fi
 while :; do
  echo -en "$@"
  read yn; yn=${yn:0:1}; yn=${yn^}
  if [[ $yn =~ ^[NY]$ || ! $yn ]]; then
   yn=${yn:-$dflt}
   break
  fi
 done
 echo -n $yn
 [[ $yn == 'Y' ]]
 return $?
}


Большинство людей почему-то думают, что BASH-это какой-то примитивный язык, из которого можно только «командочки запускать», нечто вроде продвинутого языка командных сценариев DOS. Безусловно, право каждого думать как ему угодно и каждый сам себе злой Буратино, поскольку как правило хреново написанный код на BASH не переживает просмотра первым же вменяемым Perl-программистом, поскольку у того просто ломается мозг и он всё переписывает по-своему. Но хотя бы ради мира на Земле — не ленитесь, читайте man bash перед сном и во время ритуальной чистки зубов. Это очень помогает не писать какую-то «ребячливую» чушь вместо кода на добротном, пусть и специализированном, языке программирования.

Конфиг SQUID для корпоративной сети

Как это часто бывает в крупных организациях, у нас тоже зарплату получают странные люди, которые следят за тем, кто на какие сайты ходитЬ. Конкретно в нашей организации обойти этих людей довольно просто, используя pptp-туннель. Но туннель, как водится, хилый и безжизненный, а корпоративная сетка… в общем тоже хилая в расчёте на одного сотрудника, но всё же пожирнее. И выход валидный из неё — только через прокси, считающий и протоколирующий все ваши заходы во вконтакт к Дурову в гости.
Как-то сама собой приходит в голову задача: настроить SQUID так, чтобы все сайты, кроме потенциально «подозрительных» с точки зрения наших безопасников проксировались выше на корпоративную «считалку», а все сайты, которые не хотелось бы светить в чужой статистике — роутились напрямую через PPTP-туннель.
Собственно, here is my config. Это явно не плод мощного умственного труда и в общем хотелось бы в нём видеть некие фичи наподобие переключения режимов «туннель доступен/туннель упал», но в общем это уже первая итерация, от которой можно отталкиваться в процессе эволюции:

http_access allow all
http_port 3128

coredump_dir /var/spool/squid3
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .       0   20% 4320

cache_peer proxy.corp.ru parent 8080 0 no-query default login=MY_CORP_LOGIN:MY_CORP_PASS
acl lan_dest dst 127.0.0.0/8 172.0.0.0/8 10.0.0.0/8 192.168.0.0/16
acl corp_doms dstdom_regex ^(.+\.)?corp.ru$ ^(.+\.)?my.local.dom$
acl my_sites dstdomain "/etc/squid3/my_sites.acl"

never_direct deny lan_dest
never_direct deny corp_doms
never_direct deny my_sites

never_direct allow all


Соответственно, в /etc/squid3/my_sites.acl что-то вроде:

.velomania.ru
.kino35mm.ru
.hh.ru

Схема для связи объектов в каталоге

  • LDAP
Предлагаю вашему вниманию валидную схему для указания ссылок из объекта на другие объекты (просьба не путать с labeledURI и seeAlso :)).
Соответствующее пространство OID'ов зарегистрировано на моё имя, так что пользуйтесь на здоровье.

dn: cn=link,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: link
olcAttributeTypes: ( 1.3.6.1.4.1.37344.125.11 NAME 'linkedTo' DESC 'DN of another object in catalog which is linked to this entry' SUP distinguishedName )
olcObjectClasses: ( 1.3.6.1.4.1.37344.125.1 NAME 'link' SUP top AUXILIARY MUST ( linkedTo ) )


Читать дальше →

Компиляция OpenLDAP: хватит спотыкаться!

  • LDAP
После того, как я уже в 10-й раз споткнулся об одну и ту же дурацкую проблему, решил наконец записать себе на память и другим на заметку:
При компиляции OpenLDAP с оверлеями и бэкендами в виде модулей недостаточно просто сказать --enable-smth=mod, нужно до этого обязательно упомянуть --enable-modules=yes. Иначе вы просто замучаетесь искать свои модули в логе установки (то есть в сохранённом выводе make install): их там не будет.
Я не знаю, зачем разработчики подложили простым пользователям такую жирную свинью, но забывать о том, что сие животное в самый неподходящий момент может броситься к вам под колёса — совершенно не стоит.

Архивация ВМ в HYPER-V на MS Windows 2012R2

Как ни хороша виртуалка, а делать бэкапы надо. Могут люди накосячить, может железо подохнуть, может вообще случиться все что угодно. А за потерянные данные голову начальство будет снимать с админа. Потому развернув HYPER-V на новой точилке, озадачился
Читать дальше →

Минидистрибутив Centos, мониторим Kodeks-WEB через Monitd

  • Linux
Нравиться мне Ubuntu, но захотелось большего. Шучу.
В общем дело было так: навернул на Hyper-V 2012 линуксовый сервак на CentOS 6.4, исходником для установки был образ CentOS-6.4-x86_64-minimal.iso Накатил на это дело Kodeks-WEB, настроил обновления и прочие рюшечки, сервак в общем готов к бою,
Читать дальше →

Велосипед своими руками или боремся с зависающими точками AP

Столкнулся замечательными Wi-fi точками от Ubiquiti. Все хорошо, но иногда они почему-то подвисают и перестают принимать wi-fi клиентов. При этом ethernet продолжает работать, а в dmesg выдается сообщение «wifi0: transmit timed out». Лечится только перезагрузкой точки. Проблема известная, разработчики не теряют надежды ее победить, но пока вот так…
Читать дальше →

Новые ноутбуки Asus

Вчера настраивал клиенту новые ноутбуки Asus, только из магазина. У всех 7 штук были дефекты сборки, в основном где-то не защелкнутые клипсы, но на одном было вот так:

Новые ноутбуки Asus

На других клавиатура при нажатии продавливается или просто выгнута вверх. Это очень печально, раньше считал продукцию Asus качественной.

Настройка EIGRP на Cisco часть 8 [подготовка к CCNP]

  • Cisco

Настройка EIGRP на Cisco часть 7 [подготовка к CCNP]

  • Cisco

7. Фильтрация и суммирование в eigrp


Это седьмая часть моей статьи по настройке EIGRP в рамках экзамена CCNP
Перейти к первой части
Перейти ко второй части
Перейти к третьей части
Перейти к четвертой части
Перейти к пятой части
Перейти к шестой части


Читать дальше →

Настройка EIGRP на Cisco часть 6 [подготовка к CCNP]

  • Cisco

6. Дополнительные настройки eigrp


Это шестая часть моей статьи по настройке EIGRP в рамках экзамена CCNP
Перейти к первой части
Перейти ко второй части
Перейти к третьей части
Перейти к четвертой части
Перейти к пятой части


Читать дальше →

Настройка EIGRP на Cisco часть 5 [подготовка к CCNP]

  • Cisco

5. Перераспределение маршрутов и анонсирование маршрута по умолчанию


Это пятая часть моей статьи по настройке EIGRP в рамках экзамена CCNP Route.
Перейти к первой части
Перейти ко второй части
Перейти к третьей части
Перейти к четвертой части


Читать дальше →

Настройка EIGRP на Cisco часть 4 [подготовка к CCNP]

  • Cisco

4. Настройка среды Frame Relay и маршрутизации в зоне 200


Это четвертая часть моей статьи по настройке EIGRP в рамках экзамена CCNP Route.

Перейти к первой части
Перейти ко второй части
Перейти к третьей части


Читать дальше →

Настройка EIGRP на Cisco часть 1 [подготовка к CCNP]

  • Cisco
Этим постом я начинаю свой цикл статей по подготовке к сдаче экзамена CCNP ROUTE 642-902. Весь материал я беру из литературы издательства Cisco Press, а также из своего личного опыта.
Конфигурирование оборудования будет производиться в эмуляторе GNS3 на маршрутизаторах 2691 с IOS 12.4(15)T6. Если Вы будете настраивать на более новом IOS и заметите какие-либо отличия, пишите о них в комментариях.
Данный пост пришлось разбить на несколько частей, я постарался делить по разделам
1. Полезные данные о EIGRP
2. Базовые настройки EIGRP в зоне 100
3. Полезные команды Show
4. Настройка среды Frame Relay и маршрутизации в зоне 200
5. Перераспределение маршрутов и анонсирование маршрута по умолчанию
6. Дополнительные настройки eigrp
7. Фильтрация и суммирование в eigrp
8. Аутентификация в EIGRP
Исследуемая топология представлена на рисунке. Топологию я выбирал таким образом, чтобы показать как можно больше особенностей работы eigrp.

В этой статье я:
1. Настрою динамическую маршрутизацию, согласно представленной топологии в административной зоне 100 и 200;
2. Включу анонсирование маршрута по умолчанию внутри зоны 100, так чтобы весь трафик с неизвестными адресами назначения пересылался на маршрутизатор R4.
3. Настрою перераспределение маршрутов из зоны 100 в 200. Таким образом, все представленные сети будут доступны с любого маршрутизатора;
4. Покажу тонкие настройки eigrp влияющие на выбор резервного маршрута, сходимость сети и т.д;
5. Применю фильтрацию и суммирование маршрутов;
6. Покажу как настраивать аутентификацию в eigrp.
В реальных сетях вряд ли кому то понадобится настройка Frame relay, но для успешной сдачи экзамена ROUTE знать это необходимо. Кроме того, на примере frame relay я покажу несколько интересных особенностей настройки EIGRP.
Надеюсь, произвести базовые настройки маршрутизаторов Вы сможете самостоятельно (hostname, присвоить IP-адреса, изменить bandwidth и delay), я только покажу как настроить среду Frame Relay.
Для начала я кратко расскажу об особенностях работы EIGRP.


Читать дальше →

BASH Tips&Tricks #000F: Ваша перловка, сэр!

  • BASH
Я часто использую ассоциативные массивы BASH, и все, даже те, кому это было не очень интересно, уже успели познакомиться с этим истинным предметом моего обожания. Иногда я даже генерирую эти ассоциативные массивы, они же «хэши», и складываю их в отдельные include-файлики «на память». Разумеется, это совсем не связано с тем, что реализация «хэшей» в BASH очень медленная и сама по себе их генерация может отнимать столько же процессорного времени, сколько потребовалось бы для получения числа «пи» с точностью до 1000-ного знака после запятой.
Но случается иногда с BASH-программистами казус (не имеющий отношение к глубокоуважаемому Кукоцкому), когда в их наработанное годами упорного труда тёплое скриптовое счастье врывается злобный Perl и требует переписать всё с нуля. Почему? Ну хотя бы потому что гладиолус. Шутка. На самом деле BASH действительно безумно медлителен, так что в какой-то момент и у крутых серверных железок, и у вас может банально не хватить терпения, после чего и возникнет вот эта самая поистине революционная идея: а давайте перепишем всё на Perl!
Читать дальше →