Мой проект InfoBook

Как я и говорил, последнее два месяца не прошли зря, и вот один из результатов моей творческой деятельности, подробней вы сможете прочесть тут


Количество просмотров :3524

Cisco DHCP резервируем Ip по MAC адрессу

Если вы делаете DHCP сервер на циске, и вам нужна привязка MAC-IP. то  необходимо помнить несколько правил.  Для каждого конкретного host-а создается отдельный Pool. Если у клиента стоит Windows, то надо в пуле, для идентификации использовать не hardware-address, а client-identifier, причем если в hardware-address используется MAC сетевухи, то в client-identifier нужно прописывать unique-identifier, пишется он по схеме:

«01»+MAC.

Соответственно если MAC у клиента 102a.с12а.11b2 то запись в пуле будет

client-identifier 0110.2aс1.2а11.b2

Количество просмотров :5768

Nginx — could not build the server_names_hash, you should increase server_names_hash_bucket_size

После того, как я добавил виртуальный хост на nginx, при перезапуске появилась вот такая ошибка

root@server [/etc/init.d]# service nginx restart
2009/06/19 12:22:17 [emerg] 4322#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
2009/06/19 12:22:17 [emerg] 4322#0: the configuration file /etc/nginx/nginx.conf test failed
root@server [/etc/init.d]#

Для того, что бы избавиться от данной ошибки, заходим в nginx.conf:

vi /etc/nginx/nginx.conf

Находим там

http {

и добавляем после:

server_names_hash_bucket_size 64;

Количество просмотров :5970

libphp5.so: cannot enable executable stack as shared object requires: Permission denied

При загрузке Apache появилась вот такая ошибка :

[root@localhost apache2]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: 
Syntax error on line 6 of /etc/httpd/conf.d/zendserver_php.conf: 
Cannot load /usr/local/zend/lib/apache2/libphp5.so into server: 
/usr/local/zend/lib/apache2/libphp5.so: 
cannot enable executable stack as shared object requires: Permission denied
                                                           [FAILED]
[root@localhost apache2]#

Даная ошибка возникает из-за включеного SELINUX. Для того что бы отключить SELinux прочтите вот эту статью — Как выключить SELinux


Количество просмотров :3096

Лицензии для ISR G2

Вот тут недавно приехал новый маршрутизатор 2921 и встал вопрос с активацией лицензий. Немного порыскав в интернете нашел замечательную статью от silver_golem

Все уже в курсе, что для новых роутеров ISR G2 компания Cisco.com изменила политику поставок своей операционной системы IOS. Теперь нет различных паков, с разными фичами. Операционка теперь одна, а фичи включаются лицензиями. Эти самые лицензии надо покупать и активировать их. Про активацию и пойдет речь в сегодняшнем рассказе…

Идем на https://tools.cisco.com/SWIFT/Licensing/PrivateRegistrationServlet

Для каждого конкретного устройства создаем его набор лицензий. Берем присланные продавцем бумажки/pdf. Нам нужен набор символов над штрихкодом. В поле Product Authorization Key (PAK): * вводим этот самый ключ. Регистр значения не имеет, заботливый скрипт заменит маленькие буквы на большие. Следующим шагом спросят PID и SN. Логинимся в циску, говорим

TEL#sh version | begin Device или sh license udi

в ответ получаем

Device# PID SN
————————————————-
*0 C3900-SPE150/K9 FOC1XXXXXXX

Вводим данные, скачиваем лицензию. Заливаем лицензию на роутер (лично я пользуюсь ftp)

TEL#copy ftp: flash0: Address or name of remote host []? 10.28.1.1
Source filename []? FOC14322T7X_2010100000000000080.lic
Destination filename [FOC14322T7X_2010100000000000080.lic]?
Accessing ftp://10.28.66.113/FOC14322T7X_2010100000000000080.lic…
Loading FOC14322T7X_2010100000000000080.lic !

Инсталлируем лицензию.

TEL#license install flash0:FOC14322T7X_2010100000000000080.lic
Installing licenses from «flash0:FOC14322T7X_2010100000000000080.lic»
Installing…Feature:securityk9_npe…Successful:Supported
1/1 licenses were successfully installed
0/1 licenses were existing licenses
0/1 licenses were failed to install

если у вас несколько лицензий, то лучше регистрируйте каждую по отдельности, а то у меня при попытке одновременной регистрации двух лицензий начались неадекватные глюки. После установки всех лицензий надо перезагрузить роутер. В общем в итоге по команде sh version | begin Technology Package должно выйти следующее

Technology Package License Information for Module:’c3900′
—————————————————————-
Technology Technology-package Technology-package
Current Type Next reboot
——————————————————————
ipbase ipbasek9 Permanent ipbasek9
security securityk9_npe Permanent securityk9_npe
uc uck9 Permanent uck9
data None None None

Теперь можно воспользоваться всеми активированными возможностями.


Количество просмотров :5757

Apache + mount.cifs

Появилась необходимость примаунтить разшариную папку Windows и сделать ее папкой на одном из вебсайтов. Задача не сложная, использовал я для нее mount.cifs:

mount.cifs <путь к папке Windows> <Локальная папка куда маунтим> -o username=<Имя пользователя, который имеет право доступа к папке Windows>,password=<пароль>

как пример:

mount.cifs //10.10.10.1/ext_share /var/www/vhosts/dataroom/http/ -o username=apache,password=123123,uid=48,gid=48

uid и gid — id группа и пользователь с которому будет принадлежать примаунченая папка и ее содержимое, в моем примере это пользователь apache и группа apache. Что бы просмотреть uid или gid, воспользуйтесь командой:

id

И все бы хорошо, папка примаунчена, файлы читабельны, но вот при попытки скачать их через Web, размер их равен 0, при этом никаких ошибок в логах Apache нет. Проблема решалась очень просто, все что необходимо сделать это добавить в hhtpd.conf:

EnableSendfile off

Количество просмотров :3213

Squid ошибка: winbind client not authorized to use winbindd_pam_auth_crap

Если у вас настроена NTLM авторизация, то иногда может возникать вот такая ошибка —

Login for user []\[user]@[DE-FF23B1FE568F] failed due to [winbind client not authorized to use winbindd_pam_auth_crap. Ensure permissions on /var/cache/samba/winbindd_privileged a re set correctly.]

Вы идете в указанную папку выставляете прав доступа и имя владельца, перезапускаете Squid, а ошибка не пропадает.

Но решение данной проблемы есть, оно немного странное, и мне лично, не совсем понятно почему оно срабатывает, но 100% рабочее. И так:

1. останавливаем winbind, smb и squid
2. удаляем содержимое из папки /var/cache/samba/
3. стартуем winbind и smb, обязательно проверяем что все работает(wbinfo -t, wbinfo -u)
4. Даем права 777 на папку /var/cache/samba/winbindd_privileged
5. И только теперь загружаем Squid

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


Количество просмотров :4831

Bash учебное пособие. Часть 7: Подмножества и части строк. Размеры

Подмножества и части строк

Обычно расширение имеет такую форму: ${PARAMETER:OFFSET:LENGTH}, где аргумент LENGTH необязателен. Итак, если вы хотите выбрать только определенное подмножество аргументов скрипта, вы можете использовать полную версию, чтобы показать, сколько аргументов следует выбрать. Например, ${@:4:3} обращается к трем аргументам, начиная с аргумента 4, а именно, к аргументам 4, 5 и 6. Вы можете использовать это расширение для выбора конкретных параметров помимо тех, которые доступны сразу, используя от $1 до $9 включительно. ${@:15:1} — способ вызова сразу 15 параметра.

Вы можете использовать расширение с конкретными параметрами, а также весь набор параметров, представленный при помощи $* или $@. В этом случае параметр обрабатывается как строка и число, представляющее собой сдвиг или длину. Например, если переменная x имеет значение «some value», то

${x:3:5}

будет иметь значение «e val».

Подстроки значений параметров в shell

[root@httpd ~]$ x=»some value»
[root@httpd ~]$ echo «${x:3:5}»
e val

Размеры

Вы уже видели, что $# указывает число параметров и что расширение ${PARAMETER:OFFSET:LENGTH} применяется и к конкретным параметрам, и к $* и $@, поэтому вас не должно удивить, что аналогичная конструкция, ${#PARAMETER}, может использоваться для определения размера конкретного параметра. Простая функция testlength, показанная в Листинге 10, иллюстрирует это. Попробуйте сделать это сами.

Параметр lengths

[root@httpd ~]$ testlength () { for p in «$@»; do echo ${#p};done }
[root@httpd ~]$ testlength 1 abc «def ghi»
1
3
7

Работа с шаблонами

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

Расширение шаблонов в shell Расширение Назначение

${ПАРАМЕТР#СЛОВО} Shell расширяет СЛОВО как расширение имени файла и удаляет самое короткое соответствие шаблону, если оно имеется, с начала расширенного значения ПАРАМЕТРА. Использование ‘@’ или ‘$’ приводит к удалению по образцу для каждого параметра в списке.
${ПАРАМЕТР##СЛОВО} Приводит к удалению самого длинного соответствия шаблону с начала вместо самого короткого.
${ПАРАМЕТР%СЛОВО} Shell расширяет СЛОВО как расширение имени файла и удаляет самое короткое соответствие шаблону, если оно имеется, с конца расширенного значения ПАРАМЕТРА. Использование ‘@’ или ‘$’ приводит к удалению по образцу для каждого параметра в списке.
${ПАРАМЕТР%%СЛОВО} Приводит к удалению самого длинного соответствия шаблону с конца вместо самого короткого.
${ПАРАМЕТР/ОБРАЗЕЦ/ПОСЛЕДОВАТЕЛЬНОСТЬ} Shell расширяет ОБРАЗЕЦ как расширение имени файла и заменяет самое длинное соответствие шаблону, если оно имеется, расширенным значением ПАРАМЕТРА. Для соответствия образцам в начале расширенного значения ПАРАМЕТРА поставьте в начале ОБРАЗЦА # или %, если соответствие должно проверяться до конца. Если ПОСЛЕДОВАТЕЛЬНОСТЬ пуста, перемещение / может быть опущено и соответствия удаляются. Использование ‘@’ или ‘$’ приводит к замене образца для каждого параметра в списке.
${ПАРАМЕТР//ОБРАЗЕЦ/ПОСЛЕДОВАТЕЛЬНОСТЬ} Выполняет замену для всех подходящих, а не только для первого.

Примеры шаблонов

[root@httpd ~]$ x=»a1 b1 c2 d2″
[root@httpd ~]$ echo ${x#*1}
b1 c2 d2
[root@httpd ~]$ echo ${x##*1}
c2 d2
[root@httpd ~]$ echo ${x%1*}
a1 b
[root@httpd ~]$ echo ${x%%1*}
a
[root@httpd ~]$ echo ${x/1/3}
a3 b1 c2 d2
[root@httpd ~]$ echo ${x//1/3}
a3 b3 c2 d2
[root@httpd ~]$ echo ${x//?1/z3}
z3 z3 c2 d2

Часть 1: скрипт Hellow World
Часть 2: Переменные
Часть 3: Специальные параметры
Часть 4: Одинарные и двойные кавычки. Математические операции
Часть 5: Структурные конструкции и команда test
Часть 6: Структура If…then…else
Часть 7: Подмножества и части строк. Размеры


Количество просмотров :13972

MySQL Got a packet bigger than ‘max_allowed_packet’ bytes

Бывает, при импорте большой базы возникает ошибка:

ERROR 1153 (08S01) at line 5190: Got a packet bigger than ‘max_allowed_packet’ bytes

т.е. стоит лимит на максимальный размер пакета в MySQL
Редактируем файл /etc/my.cnf и изменяем параметр max_allowed_packet

max_allowed_packet = 64M

сохраняем файл и перезапускаем MySQL

service mysql restart

Количество просмотров :5876

SCP копирование файлов и папок на удаленный сервер

SCP (Secure Copy Protocol) — Линукс команда для защищенного копирования файлов или папок на удаленный компьютер (сервер) или с него, используя для этого протокол SSH (Secure Shell). SCP является составной частью пакета OpenSSH. Благодаря использованию ssh, SCP является отличной заменой для небезопасного протокола FTP, которой широко используется в Интернете.

Копируем файл на удаленный сервер:

Заходим в директорию от куда необходимо скопировать файл/файлы, например file1.zip в директории /home/ , необходимо скопировать на удаленный компьютер в папку /home2/ . Находимся на первом сервере 192.168.0.1

scp file1.zip root@192.168.0.2:/home2/

или с любого места

scp /home/file1.zip root@192.168.0.2:/home2/

после ввода у вас запросит пароль к удаленному серверу.

root@192.168.0.2’s password:

т.е. scp файл пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать
если необходимо скопировать несколько файлов то их можно указать через пробел, т.е.: file1.zip file2.zip …

Копируем файлы и папки на удаленный сервер:

например вам нужно скопировать несколько каталогов и в каждом каталоге есть много файлов. Находимся на первом сервере 192.168.0.1

scp -r /home/ root@192.168.0.2:/home2/

после ввода у вас запросит пароль к удаленному серверу.

root@192.168.0.2’s password:

будет все скопировано что находится в каталоге /home/
т.е. scp каталог_от_куда_копировать_папки_и_файлы пользователь@адрес_сервера (IP или домен):каталог на удаленном сервере куда необходимо это скопировать

параметр: -r – рекурсивное копирование папок (включая подкаталоги);

Копируем файл с удаленного сервера:

Например на удаленном сервере находится file1.zip в директории /home2/, копируем на локальный сервер (там где находитесь) в папку /home/ . Находимся на первом сервере 192.168.0.1

scp root@192.168.0.2:/home2/file1.zip /home/

после ввода у вас запросит пароль к удаленному серверу.

root@192.168.0.2’s password:

т.е. мы скопируем с удаленного сервера файл file1.zip с папки /home2/ к себе в каталог /home/

Копируем файлы и папки с удаленного сервера:

scp -r root@192.168.0.2:/home2/ /home/

после ввода у вас запросит пароль к удаленному серверу.

root@192.168.0.2’s password:

т.е. скопируем с удаленного сервера все что находится в каталоге /home2/ к себе в каталог /home/

параметр: -r – рекурсивное копирование папок (включая подкаталоги);

Копируем файлы с одного сервера на другой находясь на третем.

scp root@192.168.0.1:/home/file1.zip root@192.168.0.2:/home2/

после ввода у вас запросит пароль к удаленным серверам.

root@192.168.0.1’s password:
root@192.168.0.2’s password:

т.е. мы скопируем с одного удаленного сервера (192.168.0.1) файл /home/file1.zip на другой удаленный сервере (192.168.0.2) в папку /home2/
находясь на третем сервере (192.168.0.3). Можно копировать файлы а так же и папки, используя параметр -r


Количество просмотров :50203