LINUX.ORG.RU

Сообщения DRVTiny

 

dokuwiki: отговорите, пожалуйста

Хочу предложить dokuwiki для корпоративной базы знаний в одной крупной компании. Привлекает тем, что есть тесная интеграция с LDAP, очень простой вики-синтаксис, целый воз расширений.
Расскажите, кто дело имел с ней, какие у докувики наиболее существенные косяки/родовые пятна/генетические недостатки?

 demotivation,

DRVTiny
()

Какие вещи в IT раздражают вас больше всего?

Есть вещи, которые на протяжении мгногих лет работы в ИТ-технологиях уже просто въелись в печёнку и при их упоминании вызывают сложную гамму чувств - от простого раздражения до лютой ненависти.
Например:
- Бэкапы
- Мониторинг
- Java, Python
- 1C
- Консультант
- latin1 по умолчанию
- CISCO
- FreeBSD, Solaris
- Oracle
- Экономические обоснования
Есть конечно и то, что воспринимается крайне позитивно:
- Single Sign On
- Samba
- LDAP
- Intranet portal
- Open Source
- x5XX, RFC
- C/C++, Assembler
- MySQL
- netfilter/iptables
- BASH, FreeBASIC, Gambas, Perl, Ruby
- Asterisk

И так далее. А какие слова вызывают наиболее стойкие «радость и грусть» в вашей профессиональной деятельности?

 

DRVTiny
()

Код, который мы все пишем...

OpenSource многие пользуются и очень немногие пишут для OpenSource. Но многие из нас из нас пишут каждый день строк этак по 100, а то и больше, кода на Shell=~/(c|k|z|ba)sh/. И не делятся друг с другом, и огромный сегмент OpenSource попросту пропадает втуне. Почему? Я думаю, в первую очередь всё-таки из-за того, что shell очень медленный и мало кто решается на нём писать что-то серьёзное и юзабельное для неограниченного множества людей.
Так, может, стоить пнуть посильнее разработчиков того же BASH'а, чтобы они его оптимизировали, интенсифицировав таким образом возможности скритпообмена через github и sourceforge в разы?

 ,

DRVTiny
()

Установка Java-плагина от Oracle Java из tar-архива

Как известно, с сайта Oracle для всего, что не rpm качается tar-архив, а из rpm тоже в общем тупо распаковывается каталог аналогичный тому, что в tar'е.
Я обычно распаковываю каталог из tar'а в свежесозданный /usr/java, делаю симлинк на бинарник java в /etc/alternatives, а оттуда - в /usr/bin и на этом успокаиваюсь, поскольку чаще всего такую установку нужно делать на серверах, а собственно на десктопах находятся обычно чудесные сторонние репозитории с deb-пакетами, из которых можно поставить oracle-java, прописывающие плагины правильно.
Но здесь могут потенциально возникнуть 2 проблемы:
1) Дистрибутив редкий и никому не нужный, пакетов c oracle-java для него не сыскать днём с огнём
2) Браузер (тот же Firefox) штатно распространяется тем же б..дским способ, что и java, то есть в тупом tar-архиве
Так вот...
Вопросы по «универсальной» установке java-плагина:
- Как определить имя .so-файла, содержащего плагин, в поставке oracle java?
- Как определить, в какие каталоги его копировать для различных браузеров?
- Как «зарегистрировать» java-плагин, скопированный в нужный каталог, в браузере?
Вы чего не подумайте, я уже как-то решал эту проблему года 3 назад и вынес тогда себе весь мозг, поскольку установка грёбаного богомерзкого плагина на самом деле сложнее установки JBoss и вообще никак не документирована, кроме как «любительскими статьями», актуальными исключительно для системы того человека, который их пишет.
И общий вопрос: уж коль скоро «экономный» энтерпрайз навязал всему миру дико тормозной и ограниченный язык - выкидыш полноценного языка Си, то можно ли называть Linux полноценной системой для десктопа, если здесь до сих пор имеет место быть ситуация, когда для того, чтобы установить mainstream'овую, а не ущербную «открытую» реализацию Java нужно быть в случае просто установки бинарника - грамотным пользователем,а в случае установки плагина в браузер - так и просто админом 5-го уровня?

DRVTiny
()

Установил кодировку, а date нХЮ выводит, что делать? :(

$ locale
LANG=ru_RU.cp1251
LANGUAGE=
LC_CTYPE=ru_RU.cp1251
LC_NUMERIC=ru_RU.cp1251
LC_TIME=ru_RU.cp1251
LC_COLLATE=ru_RU.cp1251
LC_MONETARY=ru_RU.cp1251
LC_MESSAGES=ru_RU.cp1251
LC_PAPER=ru_RU.cp1251
LC_NAME=ru_RU.cp1251
LC_ADDRESS=ru_RU.cp1251
LC_TELEPHONE=ru_RU.cp1251
LC_MEASUREMENT=ru_RU.cp1251
LC_IDENTIFICATION=ru_RU.cp1251
LC_ALL=
$ locale -a | fgrep ru_RU
ru_RU
ru_RU.cp1251
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
$ date
оМД ъМБ 27 16:47:54 MSK 2014

Беру файлик, который точно в cp1251, пытаюсь смотреть - кракозябры.
Делаю вот так:

$ iconv -f cp1251 -t koi8-r FILE
- вижу всё, как на ладони.
Вывод: на самом деле кодировка-то KOI8-R!
Вопрос: какого (....)?! В смысле, что я делаю не так или что glibc делает не так?

DRVTiny
()

MySQL-репликация: не выходит каменный цветок у слейва Мастера :(

Задача такая:
Есть MySQL-сервер (v5.5.3) с базой Zabbix'а. В базу постоянно что-то важное пишется в количествах неимоверных на самом деле.

Хочется сделать слейв следующим образом:
1) Дампим мастер в STDOUT с параметром --master-data=1. Т.е. в этом дампе в 22-й строке будет информация о том, какой позиции какого бинлога соответствует снятый дамп
2) Подхватываем дамп через PIPE ssh-ем и отправляем на slave
3) В режиме «stop slave» slave применяет дамп 4) В режиме 'start slave" слейв, пользуясь информацией из 22-й строки дампа, начинает автоматически скачивать все изменения, произошедшие на мастере за время слива и применения дампа на слейве
Почему хотелось бы именно так - думаю, понятно: это позволяет полностью избежать сколько-нибудь заметного даунтайма мастер-сервера, поскольку данные на него пишутся интенсивно и данные эти важные, зело полезные, денех немалых стоящие.
Сейчас при попытке сообщить слейву, где находится мастер и как с ним «общаться», я неизменно получаю вот это конгениальное сообщение:

CHANGE MASTER TO MASTER_HOST='10.254.0.41',MASTER_PORT=3306,MASTER_USER='slave-zabbix',MASTER_PASSWORD='zabbix-slave'

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log;
А в error.log'e:
140122 16:18:00 [ERROR] Error reading master configuration

Попытка залить дамп на слейв приводит к тому же результату: он не может прочитать master.info, сильно возмущается и отказывается со мной сотрудничать.
Прочитал уже по-моему всё, что нашёл в гугле, всю голову сломал, но решения так и не нашёл. Поможите, люди добрые кто чем и сколько может! :)
Собственно, текущий конфиг мастера без комментариев:
[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0
[mysqld]
server-id	= 41
log_bin		= mysql-bin
log_bin_index	= mysql-bin.index
max_binlog_size = 512M
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
expire_logs_days = 20
bind-address 	= 192.168.58.41
bind-address    = 10.254.0.41
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
lc-messages-dir	= /usr/share/mysql
skip-external-locking
key_buffer		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 8
myisam-recover         = BACKUP
max_connections        = 200
query_cache_limit	= 1M
query_cache_size        = 16M
log_slow_queries	= /var/log/mysql/mysql-slow.log
long_query_time = 5
expire_logs_days	= 10
max_binlog_size         = 100M
[mysqldump]
quick
quote-names
max_allowed_packet	= 16M
[mysql]
[isamchk]
key_buffer		= 16M
!includedir /etc/mysql/conf.d/
А на слейве:
[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0
[mysqld]
server-id	= 47
innodb_file_per_table=1
report-host = 192.168.58.41
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
bind-address    = 192.168.58.47
bind-address	= 10.254.0.47
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /run/shm
lc-messages-dir	= /usr/share/mysql
skip-external-locking
log = /var/log/mysql/server.log
log-error = /var/log/mysql/error.log
key_buffer		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 8
myisam-recover         = BACKUP
query_cache_limit	= 1M
query_cache_size        = 16M
expire_logs_days	= 10
max_binlog_size         = 512M
[mysqldump]
quick
quote-names
max_allowed_packet	= 16M
[mysql]
[isamchk]
key_buffer		= 16M
!includedir /etc/mysql/conf.d/

 ,

DRVTiny
()

Skype+HDMI-audio, that must be destroyed

HDMI - штука замечательная, но только до тех пор, пока в списке аудиоустройств, которое у вас всего одно и это как правило банальный AC-чип Realtek, чудесным образом не появляются over 9000 каких-то непонятных HDMI-хреновин. Это в принципе само по себе не так уж и страшно - звук-то в системе работает, но это весьма критично в случае наличия критичной потребности в Skype, который в 9-ти случаях из 10-ти на таких конфигурациях не работает.
Эмм... Традиционный вопрос: как избавиться от всего HDMI-related разом?

 ,

DRVTiny
()

Как получить список из такого хэша?

Есть хэш в таком виде :

%Hash=('TMP'=>['200_mb','10_m','850_mb'],
       'RH'=>['10_m','surface','500_mb'],
       'PRES'=>['100_mb','300_mb','500_mb']
)
Нужно:
Получить такой список:
@List=('TMP-200_mb','TMP-10_m','TMP-850_mb','RH-10_m',...etc);
Я уже голову сломал: КАК это сделать? Пока для реального случая написал какой-то кошмар из map'ов, split'ов и join'ов, но... подозреваю, что есть метод попроще. Уточню для чего это нужно:
У меня сейчас 2 вложенных цикла: один по ключам хэша, другой по значениям в анонимном списке для каждого ключа. Между циклами ничего интересного не происходит. Вот я и подумал, что было бы неплохо объединить два цикла, убрав вложенность...

Заранее очень признателен за помощь

 ,

DRVTiny
()

Пишу на Perl и BASH за еду

Собственно, контора умирает, народ сокращают и даже деньги толком выплатить не могут.
Как *nix админ немало всякого разного полезного писал на Perl и BASH, даже PHP ковырял (причём был период весьма интенсивного ковыряния).
Ещё всякие рецепты для Puppet'а пишу (правда так, не особо круто, по мелочи в основном), в Сях разбираюсь (могу грамотно поправить чужой код, хотя свой писать - мозгов, видимо, не хватает. Или банально желания :) ).
Да, ещё всякие user-friendly веб-морды ставлю и админю с превеликим удовольствием, особенно если те плотно интегрируются с LDAP. Собственно, одно время установкой Zimbr'ы подрабатывал, другое время - разовую работу по интеграции Redmine'а с корпоративным порталом и привязанным к нему 389 DS (жаль, что именно так, а не наоборот) делал :)
Админской практики много, но тянет больше к программированию, если честно.
С деньгами туго, так что сильно заинтересован в работе.
Какие будут предложения по усовершенствованию моего бытия? Просьба «башкой об стену» не предлагать :)

 ,

DRVTiny
()

Полтергейст появился в логах OpenVPN!

Буквально вот такая:

wWRwrWrWrWRwWrWrWRwWrWrWRrWRwRwRwRwWrWrWR
И так далее в том же духе.
Debian 6 Squeeze, OpenVPN установлен штатным образом.
И это внутри самого обычного лога, может наблюдаться в любом месте. Прямо полтергейст какой-то.
Есть подозрение, что это из-за сломанных пакетов или ещё чего-то подобного... Но в любом случае странно, что пишутся эти «W» и «r» в разных регистрах - к чему бы это вообще и как это интерпретировать??
Да, и если это некое штатное сообщение, очень интересно посмотреть в исходниках OpenVPN'а, как выглядит вывод вот этих чудо-буковок в server.log...

 

DRVTiny
()

Ботнеты для добычи биткойнов

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

 ,

DRVTiny
()

OpenVPN-bridge: как сделать IP клиента постоянным?

Собственно, из файла /etc/openvpn/ccd/ipp.txt записи почему-то пропадают со временем. Так каким же тогда образом сказать: «данному Common Name присвоить адрес из пула вот такой-то»? Явным образом прописать в /etc/openvpn/ccd/%CommonName% директиву ifconfig? Не хотелось бы... Именно формат ipp.txt кажется наиболее простым, понятным и логичным, тем более если назначение статических адресов для некоторых клиентов - это скорее исключение, чем правило...
Что думаете по означенному вопросу? :)

 

DRVTiny
()

VirtualDocumentRoot и всякие разные % (проценты) :)

Есть такая конфигурация, заботливо сгенерированная для меня Puppet'ом:

<VirtualHost *:80>
  ServerName company.ru
  ServerAdmin webmaster@company.ru

  ## Vhost docroot
  VirtualDocumentRoot /var/www/vhosts/%0

  ## ITK statement
  <IfModule mpm_itk_module>
     AssignUserId vu_%1 www-data
  </IfModule>

  ## Directories, there should at least be a declaration for /var/www/vhosts

  <Directory /var/www/vhosts/%0/www>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>

  ## Logging
  ErrorLog /var/log/apache2/company.ru_error.log
  LogLevel warn
  ServerSignature Off
  CustomLog /var/log/apache2/vhost_access.log "%V %h %l %u %t "%r" %s %b"
</VirtualHost>
Апач считает конфигурацию некорректной, так как имя пользователя vu_%1 ни в какие ворота не лезет (а вот vu_meteo у нас, например, есть :) ).
Вопрос: правильно ли я понимаю, что использовать в AssignUserID шаблоны mod_vhost_alias'а - НЕ СУДЬБА?
А если так, то как же всякие разные хостеры эти массовые vhost'ы запускают: наверняка ведь они используют VirtualDocumentRoot. Или я неправ?

 ,

DRVTiny
()

Изменения в файле, установленном из пакета? (как получить diff)

Есть php5 и файлик /etc/php5/apache2/php.ini . Я этом файлике понаизменял некие параметры и теперь вот не помню, что именно изменил (сумбурно было и не вчера).
Теперь хочу узнать, в чём разница между изменённым файлом php.ini и его оригиналом, который был в debian-пакете.
Как это сделать? :)

 

DRVTiny
()

Puppet: А умеет ли...?

Хотелось бы:
1) Чтобы не Puppet master искал в сети машинки, коннектился по SSH и «заражал» их нужной конфигурацией, а чтобы сами машинки находили сервер Puppet и забирали с него конфигурацию. Например, используя bonjour или любой другой протокол autodiscovery на основе широковещательных сообщений
2) Чтобы можно было сказать Puppet Master'у: вот к тебе сейчас «придёт» машинка с идентификатором X (класс идентификатора Y), настрой её как на исполнение «роли Z». То есть, например: жди запроса от 10.0.7.11, настрой на роль «PostgreSQL-сервер»
Судя по тому, что я знаю о Puppet, а знаю я, право слово, немного, да и приходилось с ним возиться крайний раз 1.5 года назад, он такого не умеет. Но, может, я его как-то недооцениваю? :)

 

DRVTiny
()

xm create: как по дефолту использовать каталог, отличный от /etc/xen

Поясню: нужно сделать автостарт xen-машинок, но судя по офдокам симлинки в /etc/xen/auto нельзя делать иначе как из /etc/xen. У xm create есть параметр --path (пути:разделённые:двоеточиями), но автозапуску на это плевать.
Пока я вижу один выход: писать на BASH фейковый «xm», который будет добавлять параметр --path для xm create.
Предложите, пожалуйста, вариант поинтереснее :)

 

DRVTiny
()

(Относительно) начинающий Perl-разработчик желает познакомиться

С работодателем, желательно - в ЗАО или в ЦАО.
Кроме Perl'а отлично прокачан скилл BASH-скриптинга.
Собственно, функционировал и продолжаю благополучно функционировать в качестве системного администратора nix-овых систем, но чувствую, что к возне с администрированием чужих программ уже несколько подостыл, а вот к написанию своих - напротив, интерес с годами только растёт и ширится :)
На Perl'е хотелось бы прежде всего заниматься тем, для чего он изначально разрабатывался - обработкой данных. Впрочем, программирование под веб-фреймворки тоже подойдёт, если дадите время «втянуться» в процесс.

О себе: работаю nix-администратором с 2005-го года, многое повидал, многое поковырял, от мобильных телефонов до IBM p-серии. Сейчас хочу перейти в программисты, поскольку и начиналось когда-то моё увлечение IT-технологиями с программирования, и в общем до сих мне куда интереснее писать код, нежели админить чужие вещи. Плюс ко все я отличаюсь графоманством и люблю писать документацию - иногда, правда, получается, с юмором, а иногда даже с налётом сарказма :)
Резюме есть такое: http://hh.ru/resume/4292ee00ff008654730039ed1f736563726574
Если нужно чисто программисткое резюме, могу и его предоставить по запросу в кратчайшие сроки :)

P.S. Местоположение действительно важно, поэтому большая просьба указывать его сразу

 ,

DRVTiny
()

OpenVPN: как использовать имя tun0 для tap-интерфейса?

Попалась тупая железка, у которой намертво забиты правила iptables для tun0, в том числе и маскарадинг для клиентов за роутером. Я же использую OpenVPN в режиме bridge'а, то есть у меня tap0.
Теперь, пробую создать tun0, который на самом деле tap:

openvpn --mktun --dev-type tap --dev tun0
Вижу, что вроде всё ОК:
# ifconfig tun0
tun0      Link encap:Ethernet  HWaddr 72:79:7B:E8:6E:3C  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Вместо «dev tap' в конфиг OpenVPN вписываю:
dev-type tap
dev-node tun0
Запускаю...
И вижу в /var/log/openvpn.log:
Thu Oct 10 13:19:48 2013 ERROR: Cannot open TUN/TAP dev tun0: No such file or directory (errno=2)
Thu Oct 10 13:19:48 2013 Exiting due to fatal error
Что я делаю не так?

 

DRVTiny
()

Обычные массивы BASH - на самом деле ассоциативные?

declare  -a arr_=([0]=31 [31]=2 [1257]=87)
declare -p arr_
echo ${#arr[*]}
echo ${#arr[@]}

Действительно ли реализация обычных массивов в BASH - это по сути тот же хэш, только слегка «завуалированный»?
В таком случае получается, что ассоциативные массивы (точнее, векторы) в BASH всегда были, просто до 4-й версии существовало ограничение на формат «ключей»?

 ,

DRVTiny
()

Выполнить кусок кода на BASH внутри Perl-программы?

Проблема в том, что Perl использует почему-то sh, а как указать на необходимость использования другой оболочки - непонятно.
Нужно выполнить вот такой код:

$ENV{"PERL5SHELL"}="bash"
system("source ~grib/bin/grib-scriptset/point_forecast_hashes_extended.def; source /opt/scripts/functions/perl.inc; PerlDcl_Hash LBL2MP");

 ,

DRVTiny
()

RSS подписка на новые темы