отобразить конфиг без комментариев

Запись создана декабря 21, 2009

Иногда нужно посмотреть конфиг не перегружая внимание чтением комментариев, я это делаю так:

grep -v -E "^;|^$" /usr/local/lib/php.ini

или так:

grep -v -E "#|^$" /usr/local/apache2/conf/httpd.conf

Хочу уточнить относительно отличий ^# и #. Первое это все строки начинающиеся с #, второе все строки содержащие #.

» Запись из раздела Несортированное | Комментировать

перенаправление stdout и stderr

Запись создана декабря 21, 2009

Коротко и ясно расскажу о пере направлении stdout и stderr. stdout это нормальный вывод, stderr это ошибки.

[root@shakirov ~]# ls /opt/ /blah
ls: /blah: Нет такого файла или каталога
/opt/:
firebird  iso  lost+found

красным выделен stderr, а синим stdout. По умолчанию в output отправляется и stdout и stderr.


перенаправления stdout в /tmp/stdout используйте конструкцию:

[root@shakirov ~]# ls /opt/ /blah > /tmp/stdout
ls: /blah: Нет такого файла или каталога

для перенаправления stderr в /tmp/stderr используйте конструкцию:

[root@shakirov ~]# ls /opt/ /blah > /tmp/stdout
/opt/:
firebird  iso  lost+found

Для перенаправления sterr и stdout в файл /tmp/all используйте конструкцию:

[root@shakirov ~]# ls /opt/ /blah > /tmp/all 2>&1

Есть вариант когда stderr и stdout отправляются в output и в файл. Это удобно для отладки интерактивных скриптов. Делается это через tee.

[root@shakirov ~]# ls /opt/ /blah 2>&1 | tee /tmp/all
ls: /blah: Нет такого файла или каталога
/opt/:
firebird  iso  lost+found

ну и пара практических вариантов, отправка stdout и stderr на электронную почту:

[root@shakirov ~]# ls /opt/ /blah 2>&1 | mail root@localhost

скрытие сообщений об ошибках:

[root@shakirov ~]# ls /opt/ /blah 2> /dev/null

» Запись из раздела Несортированное | Комментировать

кодировка bitrix модуль Сотрудники

Запись создана декабря 21, 2009

После переноса битрикса на новый сервер с php 5.2.12 в модуле «Сотрудники» и в «структура компании» всё перекосило. в первом случае это крякозябры вместо алфавитного указателя, во втром вообще весь html перекосило.

как выяснилось причиной является то что в php старше 5.2.8 директиву mbstring.func_overload нельзя задать из .htaccess простым php_value mbstring.func_overload 2

соответственно решением является задать её глобально для сервера в php.ini или в конфиге vhost-а через php_admin_value.

» Запись из раздела PHP | Комментировать

Tekram DC-395UW under CentOS

Запись создана декабря 15, 2009

Из штатов приехала коробка с SCSI дисками для HP-шных серверов, соответственно возникла необходимость прочекать их все перед тем как везти в датацентр. В закромах нашелся древний контроллер Tekram DC-395UW, SCSI кабель 68-ми пиновый и заранее купленный переходник на LVD 80 pin. В биосе контроллера диски прекрасно видятся, но при попытке установить CentOS на диски воткнутые в контроллер, anaconda в упор не видит дисков.

CD/DVD привода под рукой не оказалось, а вынимать из другой машины было лень, т.ч. установку выполнял по сети, загрузив машину по pxe+tftp. На машине с поднятым апачем делаем:

rpm2cpio  kernel-2.6.18-128.el5.i686.rpm| cpio -idmuv --no-absolute-filenames
find . | grep 395
cp ./lib/modules/2.6.18-128.el5/kernel/drivers/scsi/dc395x.ko /var/lib/www/

теперь начинаем установку системы на машине с контроллером. Если установка в text режиме, то на этапе когда диски не от дедектились (пустой список дисков) жмем Alt+F2 и переходим в консольку:

wget http://192.168.12.200/dc395x.ko
modprobe dc395x.ko
mknod /dev/sda

теперь Alt+f1 обратно к anaconda и жмем «добавить диск» или что-то в этом духе, будет предложено добавить iSCSI таргет, набиваем какой-нибудь левый ip и добавляем. iSCSI конечно не добавится, но анаконда перечитает список дисков и отобразит наш scsi диск. далее продолжаем установку в удобном нам виде.

Кстати первую часть можно выполнять на той же машине куда ставится система.

PS: контроллер гавно, но проверить диски он дал возможность.

» Запись из раздела CentOS Linux | Комментировать

OpenVZ: резервное копирование и клонирование контейнеров

Запись создана октября 20, 2009

В последние несколько месяцев активно работаю с OpenVZ. Соответственно вопрос который возникает после того как система развернута, это резервное копирование.

Расскажу как реализовать его проще всего, на примере CentOS 5.3

[root@root ~]# yum install cstream perl-LockFile-Simple
[root@root ~]# rpm -Uvh http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump-1.1-2.noarch.rpm
[root@root ~]# rpm -Uvh http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump-1.2-4.noarch.rpm
[root@root ~]# vzdump --help
Unknown option: help
usage: /usr/sbin/vzdump OPTIONS [--all | VPSID]

        --exclude VPSID         exclude VPSID (assumes --all)
        --exclude-path REGEX    exclude certain files/directories
        --stdexcludes           exclude temorary files and logs

        --compress              compress dump file (gzip)
        --dumpdir DIR           store resulting files in DIR
        --tmpdir DIR            store temporary files in DIR

        --mailto EMAIL          send notification mail to EMAIL.
        --quiet                 be quiet.
        --stop                  stop/start VPS if running
        --suspend               suspend/resume VPS when running
        --snapshot              use LVM snapshot when running
        --size MB               LVM snapshot size

        --node CID              only run on pve cluster node CID
        --lockwait MINUTES      maximal time to wait for the global lock
        --stopwait MINUTES      maximal time to wait until a VM is stopped
        --bwlimit KBPS          limit I/O bandwidth; KBytes per second

        --restore FILENAME      restore FILENAME

Согласно хелпу был написан простой скриптик для резервного копирования.

[root@root ~]# cat /bin/backup.sh
#!/bin/bash


mkdir  /vz/dump/`date "+%Y%m%d"`

/usr/sbin/vzdump --suspend --compress --exclude-path /tmp/ --all --mailto your@mail.com --dumpdir /vz/dump/`date "+%Y%m%d"`/

данный скрипт будет создавать в папке /vz/dump/ папку с текущей датой и в нее складывать дампы, пожатые в tgz, контейнеров. И слать уведомление на your@mail.com
скриптик этот нужно закинуть в крон, сам его допилить слегка для того чтобы убивались старые бакапы (man find).

для восстановления следует использовать vzdump с ключиком –restore
отсюда вытекает возможность клонировать контейнер.

vzdump --compress --suspend 110
vzdump --restore /vz/dump/vzdump-110.tgz 120
vzctl set 120 --hostname newhostname.com --save
vzctl set 120 --ipdel 192.168.0.110 --save
vzctl set 120 --ipadd 192.168.0.120 --save
vzctl start 120

в версии 1.2 восстановление делается так:
vzrestore /vz/vzdump-110.tgz 130

таким образом мы сделали копию контейнера 110 с VID 120, сменили ему ip и хостнейм. По тому же принципу накладываются новые ограничения.

возможные проблемы:

[root@server ~]# vzdump --compress --suspend --dumpdir /backup/ --tmpdir /backup/tmp/ 120
.................
Nov 19 20:10:51 INFO: Error: No checkpointing support, unable to open /proc/cpt: No such file or directory
Nov 19 20:14:34 ERROR: Backup of VM 120 failed - command '/usr/sbin/vzctl chkpnt 120 --suspend' failed with exit code 16

это лечится с помощью:

modprobe vzcpt

еще одна:

[root@vm1 ~]# vzdump --help
Can't locate PVE/VZDump.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/sbin/vzdump line 27.
BEGIN failed--compilation aborted at /usr/sbin/vzdump line 27.

лечится так:

[root@vm1 ~]# cp -r /usr/share/perl5/PVE/ /usr/lib/perl5/5.8.8/

Если возникли вопросы или нужна помощь, буду рад помочь.

» Запись из раздела CentOS Linux, OpenVZ | 2 комментариев

qmail smart relaying

Запись создана сентября 8, 2009

в одной из статей я описывал как настроить рлеинг исходящей почты через другой сервер. сейчас опишу как это сделать если используется Qmail.

echo ":mxr.domain.com" > /var/qmail/control/smtproutes

где mxr.domain.com это наш релей.
после чего делаем рестарт qmail. например /etc/init.d/qmaild restart

» Запись из раздела Несортированное | Комментировать

vzrst module is not loaded on the destination node

Запись создана августа 5, 2009

понадобилось мигрировать OpenVZ контейнер с одной физической машины на другую. Номер контейнера 140 используем vzmigrate

[root@s24 ~]# vzmigrate --online 91.195.xxx.xxx 140
OPT:--online
OPT:91.195.xxx.xxx
Starting online migration of CT 140 to 91.195.xxx.xxx
Error:  vzrst module is not loaded on the destination node
Error:  Can't continue online migration

идем на destanation машину и смотрим, есть у нас там vzrst или нет

[root@root ~]# lsmod | grep vz
vzethdev               16524  0
vzdquota               43800  1 [permanent]
vznetdev               21512  2
vzmon                  49548  3 vzethdev,vznetdev
vzdev                   7556  4 vzethdev,vzdquota,vznetdev,vzmon
ipv6                  288668  32 vzmon,ip6t_REJECT

нету, ну так мы поставим, не проблема :)

[root@root ~]# modprobe  vzrst
[root@root ~]# modprobe  vzcpt
[root@root ~]# lsmod | grep vz
vzcpt                 115492  0
vzrst                 142740  0
ip_nat                 22032  1 vzrst
ip_conntrack           60228  3 vzcpt,vzrst,ip_nat
vzethdev               16524  0
vzdquota               43800  1 [permanent]
vznetdev               21512  2
vzmon                  49548  5 vzcpt,vzrst,vzethdev,vznetdev
vzdev                   7556  4 vzethdev,vzdquota,vznetdev,vzmon
ipv6                  288668  36 vzcpt,vzrst,vzmon,ip6t_REJECT

ну вот собственна и всё, снова запускаем миграцию на соурс:

[root@s24 ~]# vzmigrate --online 91.195.xxx.xxx 140
OPT:--online
OPT:91.195.xxx.xxx
Starting online migration of CT 140 to 91.195.xxx.xx
Preparing remote node
Initializing remote quota
Syncing private
Live migrating container...
Syncing 2nd level quota
Cleanup

теперь идем на таргет сервер и проверяем

[root@root ~]# vzlist -a
      CTID      NPROC STATUS  IP_ADDR         HOSTNAME
       140        104 running 91.195.xxx.xxx  hostname.ru

всё, наш контейнер без даунтаймов мигрировал на другой сервер.

» Запись из раздела CentOS Linux, OpenVZ, virtualization | Комментировать

flashing cisco 7912 to SIP

Запись создана июля 28, 2009

В офисе после скачка напряжения, один из айпифонов Cisco 7912 сдох. Внешне это выгладело так: дисплей не горит, но горит кнопка speaker.

Судя по tcpdump телефон таки шлет запросы к dhcp, этим и воспользуемся.

в /etc/dhcpd.conf добавим пару строчек (полностью конфиг приведу ниже):

option option-150 code 150 = ip-address;
option option-150 192.168.11.200;

где 192.168.12.200 айпишник tftp сервера. Самое интересное в том что без этих строчек айпифоны прошились на SIP прошивку с SCCP без проблем. Ну да ладно..

на 192.168.12.200 в папку /tftpboot кладем сами файлы прошивки
CP7912080001SIP060412A.sbin и cp7912r.zup
по сути это один и тот же файл просто их два с разными именами. файлы можно найти на thepiratbay или могу выслать кому надо.

http://itblog.su/downloads/CP7912080001SIP060412A.sbin

http://itblog.su/downloads/cp7912r.zup

Теперь телефон в ребут по питанию и при старте он должен ожить. Опять таки самое смешное в том что после перепрошивки настройки не похерились.

PS: а еще есть психи которые выпаивают флешку и на программаторе заливают прошивку. т.ч. если не помогает описнный способ, можно попытаться найти одного из них :)

этим же методом перешивается Cisco 7912 с прошивки SCCP на SIP
Читать дальше

» Запись из раздела VoIP | 3 комментариев

перенаправление почты пользователя root

Запись создана июля 28, 2009

В linux системные отчеты от того же LogWatch складываются пользователю root в /var/spool/mail/root

но можно перенаправить их на ваш привычный ящик электронной почты, для этого в файле /etc/aliases отыщите строчку:

# Person who should get root's mail
#root:          marc

и замените на (вместо user@server.tld укажите свой имэйл):

# Person who should get root's mail
root:           user@server.tld

затем перекомпилируем базу алиасов:

cd /etc; newaliases

должно появиться сообщение вроде этого: /etc/aliases: 77 aliases, longest 28 bytes, 797 bytes total

» Запись из раздела CentOS Linux | 2 комментариев

как нагнать траф?

Запись создана июля 28, 2009

Возникла типичная для многих ситуация, на одном из серверов в одном из ДЦ оказалось что входящего трафа больше чем исходящего. причем нехватает пару терабайт исходящего.

ничего страшного :) /dev/urandom безлимитный, осталось только выбрать ДЦ и сервер на который можно его перегнать. А перегонять будем так:

cat /dev/urandom | ssh server 'cat > /traff'

время от времени (по крону например) на принимающем сервере будем обнулять файлик traff

> /traff

пока писал, пришла в голову мысль, что можно передавать сразу в /dev/null

cat /dev/urandom | ssh server 'cat > /dev/null'

» Запись из раздела CentOS Linux, FreeBSD, Unix | 6 комментариев

следующая страница »