Блогът на Борис Димитров

freebsd , linux , system & network admin blog
  • Home
  • За мен

Posts Tagged ‘admin’

15 фев 2010

Mount /usr/ports във Freebsd Jail

Имам 3 Jail-a искам да си инсталирам и в 3те нещо от /usr/ports :

mount_nullfs /usr/ports/ /usr/jails/ns/usr/ports
mount_nullfs /usr/ports/ /usr/jails/mail/usr/ports
mount_nullfs /usr/ports/ /usr/jails/www/usr/ports

15 февруари, 2010 at 14:36 by admin

Tags: admin, Freebsd, shell, полезно
Posted in Freebsd, Servers | No Comments »

9 фев 2010

shell recursive rename

Ако искаме да сменим ‘foo’ с ‘bar’ в имената на ВСИЧКИ (recursive) файлове в даден директория :

Само принтира промените :
find . -type f -print0 | xargs -0 rename -n ’s/foo/bar/g’

Прави промените :
find . -type f -print0 | xargs -0 rename ’s/foo/bar/g’

9 февруари, 2010 at 13:10 by admin

Tags: admin, полезно
Posted in Freebsd, Linux | No Comments »

8 фев 2010

shell find & replace recursive

Много мразя като ми се налага да променям едно и също нещо в много различни файлове !
Затова е следният ред :

find * -type f -exec sed -i ’s/ТОВА ТЪРСИМ/ПРОМЕНЯМЕ С ТОВА/’ {} \;

Казах ли колко обичам sed ?

8 февруари, 2010 at 19:51 by admin

Tags: admin, Freebsd, Linux, полезно
Posted in Freebsd, Linux, Без категория | No Comments »

8 фев 2010

Perl конференция 2010

На 30.1.2010 в София се проведе втория (за България) Perl Workshop в София , част от ежегодни такива събития по целия свят. Миналата година за съжаление неможах да присъствам на събитието , но тази година грешката беше поправена :)

Накратко :
Гост от Русия беше Андрей Шитов който направи интересна презентация на Gearman. Идеята на gearman е да бъде диспечър за задачи (има клиенти освен за perl и за други езици за програмиране , дори и за бази данни – mysql , postgre) на локален или отдалечен сървър. Досега не съм ползвал такъв вид софтуер, но ми се струва удобно всички скриптове да се изпълняват на машина преназначена само затова. С презентацията си Андрей показа солидни разлики във времето на изпълнение със и без gearman, също така като голям плюс e балансирането на задачите. Лесен е за използване и добре документиран. Понеже на съм го ползвал (засега :) повече немога да споделя , мисля , че трябва да се пробва!
Самата презентация можете да видите тук :

http://www.slideshare.net/andy.sh/gearman-and-perl

Втората презентация беше за Catalyst Perl web framework от Петър Шангов (дано да се пише така на Български името му).Тази презентация за мен беше доста интересна защото ми се е налагало да работя с MVC Frameworks в миналото , но на PHP , интересен ми беше начинът как идеята е реализирана с perl. Оказа се че разликите не са чак толкова големи а идеята общо взето е една и съща. Много подробна презентация с добри обяснения за MVC модела като цяло и доста примери за реални ситуации. Това на което наблегна Петър е , че Catalyst сравнен с останалите frameworks в момента идва изцяло без никакви модули (разбира се на разположение на developer-a e да си изтегли такива от CPAN), а core-a е особено малък като размер и слоевете MODEL , VIEW са доста така да се каже олекотени за сметка на CONTROLLER-ите.Също ми се стори доста удобно , че Интересна презнетация.

Третата и най-интересна за мен като системен администратор презентация беше на Мариян Маринов , който говори за Event Driven Programming с perl модула AnyEvent. За мен това е нова концепция в системното програмиране която със сигурност ще пробвам. Идеята е ако ще се пишат демони за следене на даден процес или събитие да не се блокират системни ресурси които могат да се ползват за други задачи или приложения в същото време. Найстина е важно да се мисли от началото на проекта за performance-a на системата , защото с разширяването на задачите и усложняването им програмата започва да изисква повече и повече ресурси и това започва да вляе негативно на цялостния performance. Имам да чета доста по темата , по-натам ще пиша пак.

Останах с много добри впечатления от конференцията и хората там като цяло и съм им много благодарен за усилията които са положили за да я организират. Надявам се по-често да има такива събития в България.

8 февруари, 2010 at 16:37 by admin

Tags: admin, Perl
Posted in Freebsd, Linux, Perl | No Comments »

8 юни 2009

Предишен/следващ ред от таблица mysql

Previous ID:

SELECT id FROM $mytable WHERE id < $id ORDER BY ID DESC LIMIT 1;

Next ID:

SELECT id FROM $mytable WHERE id > $id ORDER BY ID ASC LIMIT 1;

8 юни, 2009 at 13:07 by admin

Tags: admin
Posted in Без категория | No Comments »

3 юни 2009

Скрипт за проверка дали даден процес е жив

Леко скриптче за проверка дали даден процес е жив (в случая snmpd) :

#!/bin/bash

hostname=b2.sysadmins-bg.net
email=billy@microsoft.com
snmpd_test=`pgrep snmpd`

# SNMPD TEST
if [ $snmpd_test != 1 ]
then
echo `echo host $hostname report: SNMPD DAEMON NOT RUNNING !!!|mail -s CHECK-IT-NOW $email`
fi

в crontab на 5 минути:

*/5 * * * * check-snmpd.sh > /dev/null 2>&1

толкоз .

3 юни, 2009 at 10:19 by admin

Tags: admin, Linux, Servers, полезно
Posted in Linux, Servers | No Comments »

20 май 2009

Master and Slave DNS zone update BIND9

Ако ви се налага да направите нов secondary dns сървърили просто да ъпдейтвате с нови зони съществуващ такъв , новите зони се налага да ги описвате на ръка . Ето едно решение за динамичен ъпдейт (не DDNS) на конфига на secondary (slave) dns сървъра, което копира конфигурационня файл на primary сървъра и след това прейменува зоните на slave.
Ще трябва да си направите и ключ за ssh за да може скрипта да влиза без парола , ще пиша и за това , но в друга статия.

master dns : 192.168.0.1
slave dns : 192.168.0.2

И самия скрипт (нищо сложно) :

#!/bin/sh

# Script to copy slave dns zones from master dns
# release 1.0
# b2 (at) playtime.bg

# first we need master dns zone config local to make changes on it
# this is how we do it

scp user@192.168.0.1:/etc/namedb/named.conf /root/work/named_master.conf

# now we need to change some things in the config and save it as slave

for domain in `grep ^zone /root/work/named_master.conf |awk ‘{print $2}’ |sed ’s/\(.*\)./\1/’ |sed ’s/.\(.*\)/\1/’`

do

/usr/bin/printf “

zone \“$domain\“ {
type slave;
file \“/etc/bind/slaves/$domain\“;
masters { 192.168.0.1; };
};\n“

done > /root/work/slavefile.conf

# now it is time to (smoke some weed and) move it on /etc/bind && reload our server
cp slavefile.conf /etc/bind/named.conf.local && /etc/init.d/bind9 reload

# let’s do some checks to be sure bind daemon is up & running

bind_status=`/etc/init.d/bind9 status`
status_ok=“bind9 is running.“

if [ "$bind_status" = "$status_ok" ];
then

# all done – mail admins and go to sleep :)
echo „MASTER/SLAVE ZONES SYNCRONIZATION COMPLETED – YOU CAN GET DRUNK NOW !“ |mail -s „ZONES SYNCRONIZATION COMPLETED“ admin ( at ) playtime.bg

else
# fuck , something wrong here !
echo „SLAVE DNS SERVER NOT RUNNING ALTER SYNCRONIZATION – DO SOMETHING NOW !“ |mail -s „SLAVE DNS DOWN AFTER SYNCRONIZATION“ admin ( at ) playtime.bg

fi
exit 0

също и в crontab-а на root вмъкнете :

0 4 * * * /path/to/script

всеки ден в 4 часът през нощта скрипта ще се изпълнява.
Това е !

20 май, 2009 at 17:39 by admin

Tags: admin, dns, Linux
Posted in Linux, Servers | 1 Comment »

12 мар 2009

FreeBSD jails

Intro :
FreeBSD е операционна система с отворен код , поне според мен най-подходяща за изграждане на сървъри , но също и с много добре развити мрежови приложения – перфектна за PPPoE концентратори или друг вид рутери да речем , като цяло доста стабилна операционна система с много възможности за настройки и много инструменти в помощ на системния администратор.Не на последно място ще кажа че проекта FreeBSD има изключително добра подръжка и много ама найстина много документация .

Какво е jail ?
Основната идея на jail-а е да повиши сигурността на системата като отдели един или повече процеси от другите и ги постави в chroot(2) среда. Чрез chroot(8) можем да променим root директорията на поредица процеси като ги отделим в сигурна среда от другите. Да речем , че недобронамерен потребител направи успешен exploit върху уязвим процес пуснат в jail и успешно компроментира системата , това няма да повлияе на цялата система както сами се досещате, а атакуващия ще има достъп само до процесите пуснати в jail-a. Разбира се има начини да се избяга от chroot средата, но за по-прости задачи (като service jails) e доста мощен инструмент.
Като цяло командата jail(8) служи за контрол над създадените jails.
Разбира се всички тези неща са доста добре обяснени във онлайн документацията на http://www.freebsd.org/doc/en/books/handbook/ , но основната ми идея е да ви покажа накратко как да си направите няколко service jails.

Изграждане на jails :

Тук ще ви покажа един елементарен пример за шаблон , лично аз използвам най-вече service jails – накратко това означава, че не е нужно да се прави пълен installworld на всеки jail. В този пример искаме крайният резултат да бъде HTTP, DNS и SMTP сървайси в отделни jails.Ще ни трябва една машина която ще наричаме хост и на която ще пуснем тези сървайси.На машината за примера имаме чисто нова инсталация на FreeBSD 6.3 със инсталиран пакет source , можете да вземете нужния сорс чрез :

#sysinstall -> configure -> distributions -> src

И така , да започваме :)

Кратко обяснение :

  • Всеки jail ще бъде монтиран в /home/services.
  • /home/services/ro е темплейта и read-only partition за всеки jail
  • Празна директория за всеки jail ще бъде създадена тук : /home/services
  • Всеки jail ще има директория /rw , която ще бъде линкната към read-write частта от jaila
  • Всеки jail ще има собствена read-write която се базира на /home/services/skel.
  • Всеки jailspace (read-write частта от всеки jail) трябва да бъде създадена /home/jails.

Сздаване на read-only темплейта :
* може да се наложи да инсталирате sysutils/cpdup на хост системата.

# mkdir /home/services /home/services/ro
# cd /usr/src
# make installworld DESTDIR=/home/services/ro
# cd /home/services/ro
# mkdir usr/ports
# portsnap -p /home/services/ro/usr/ports fetch extract
# cpdup /usr/src /home/services/ro/usr/src
# mkdir /home/services/skel /home/services/skel/home /home/services/skel/usr-X11R6 /home/services/skel/distfiles
# mv etc /home/services/skel
# mv usr/local /home/services/skel/usr-local
# mv tmp /home/services/skel
# mv var /home/services/skel
# mv root /home/services/skel
# mergemaster -t /home/services/skel/var/tmp/temproot -D /home/services/skel -i
# cd /home/services/skel
# rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev
# cd /home/services/ro
# mkdir rw
# ln -s rw/etc etc
# ln -s rw/home home
# ln -s rw/root root
# ln -s ../rw/usr-local usr/local
# ln -s ../rw/usr-X11R6 usr/X11R6
# ln -s ../../rw/distfiles usr/ports/distfiles
# ln -s rw/tmp tmp
# ln -s rw/var var
# echo "WRKDIRPREFIX?= /rw/portbuild" > /home/services/skel/etc/make.conf

ако всички тези операции минат успешно е време да добавите в /etc/fstab следните неща :

/home/services/ro /home/services/ns nullfs ro 0 0
/home/services/ro /home/services/mail nullfs ro 0 0
/home/services/ro /home/services/www nullfs ro 0 0
/home/jails/ns /home/services/ns/rw nullfs rw 0 0
/home/jails/mail /home/services/mail/rw nullfs rw 0 0
/home/jails/www /home/services/www/rw nullfs rw 0 0

след това добавяме в /etc/rc.conf следните редове :

jail_enable="YES"
jail_set_hostname_allow="NO"
jail_list="ns mail www"
jail_ns_hostname="ns.example.org"
jail_ns_ip="192.168.3.17"
jail_ns_rootdir="/usr/home/services/ns"
jail_ns_devfs_enable="YES"
jail_mail_hostname="mail.example.org"
jail_mail_ip="192.168.3.18"
jail_mail_rootdir="/usr/home/services/mail"
jail_mail_devfs_enable="YES"
jail_www_hostname="www.example.org"
jail_www_ip="192.168.3.19"
jail_www_rootdir="/usr/home/services/www"
jail_www_devfs_enable="YES"

* За вески jail трябва да сме предвидили ip адрес – това е задължително (без значение частен или публичен)
* Сигурно ви прави впечатление че тука заместваме /home/services/ със /usr/home/services , това е така защото във FreeBSD директорията /home е линк към /usr/home

Да продължим нататък като създадем тези папки :


# mkdir /home/services/ns /home/services/mail /home/services/www
# mkdir /home/jails
# cpdup /home/services/skel /home/jails/ns
# cpdup /home/services/skel /home/jails/mail
# cpdup /home/services/skel /home/jails/www

И накрая :

# mount -a
# /etc/rc.d/jail start

Ако всичко е наред би трябвало да имате три стартирани jail-a (можете да проверите това с jls(8)):
# jls
JID IP Address Hostname Path
3 192.168.3.17 ns.example.org /home/services/ns
2 192.168.3.18 mail.example.org /home/services/mail
1 192.168.3.19 www.example.org /home/services/www

Всичко изглежда наред , сега можете да се логнете да речем в jail с ID 3 (ns) с командата :

# jexec 3 csh

Това е всичко :)

12 март, 2009 at 14:05 by admin

Tags: admin, Freebsd, полезно
Posted in Servers | No Comments »

2 апр 2003

Apache Benchmark Testing

Тези дни ми се наложи да променям нещо по скриптовете на един от проектите по който работя , в случая исках да знам как ще се държи сървърът ми след промяна по накой от скриптовете . Решението е в инструмента ab (Apache Benchmark) който идва със Apache Web Server . Използва се много лесно и дава полезна информация (макар и не особено много) затова как се държи сървърът при определен брой заявки за определен период към определена страница от сайта ви. Имайте предвид че ab не емулира реално поведение на юзер на вашата страница , но може да ви помогне да разберете как сървърът ви поема заявките. Важно е да знаем , че не е препоръчително ab и сървърът който тестваме да са на един и същи хост , защото и двата процеса ще заемат ресурси (не много малко – зависи от машината) , и това със сигурност ще се отрази на резултатите. Има и доста други показатели от който зависят резултатите от теста, тъй че те не винаги ще бъдат абсолютно еднакви , затова най-добре би било да се сравняват тестовете след минимални промени по конфигурацията на уеб сървъра или скрипта по който сте работили и тествали . ab е доста лесна за ползване – в моя случая пуснах 1000 рекуеста (-n 1000) , по 10 наведнъж (-c 10):

$ab -n 1000 -c 10 http://b2.sysadmins-bg.net/test.html

Ето и резултата :

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking b2.sysadmins-bg.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software: Apache
Server Hostname: b2.sysadmins-bg.net
Server Port: 80

Document Path: /test.html
Document Length: 20711 bytes

Concurrency Level: 10
Time taken for tests: 1178.201 seconds
Complete requests: 1000
Failed requests: 414
(Connect: 0, Receive: 0, Length: 414, Exceptions: 0)
Write errors: 0
Total transferred: 20892586 bytes
HTML transferred: 20710586 bytes
Requests per second: 0.85 [#/sec] (mean)
Time per request: 11782.007 [ms] (mean)
Time per request: 1178.201 [ms] (mean, across all concurrent requests)
Transfer rate: 17.32 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 7
Processing: 2638 11766 2444.4 11625 37576
Waiting: 1000 8787 1969.5 8759 28169
Total: 2639 11766 2444.3 11625 37576

Percentage of the requests served within a certain time (ms)
50% 11625
66% 12268
75% 12657
80% 12975
90% 13992
95% 14918
98% 16899
99% 18568

2 април, 2003 at 22:30 by admin

Tags: admin, Linux, Servers, полезно
Posted in Servers | No Comments »

  • Превод

  • Календар

    март 2010
    П В С Ч П С Н
    « фев    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
  • Категории

    • Freebsd (5)
    • Linux (5)
    • Networking (1)
    • Perl (1)
    • PHP (1)
    • Servers (6)
    • Без категория (2)
    • България (2)
    • Лични (2)
    • Новини (1)
  • ИТ

    • Корпоративни интернет решения
  • Приятели

    • :: KnowHow by Sto. :: line-by-line on commandline
    • Instudio54 Lifestyle Online Radio
    • Блогът на Иван Тодоров
    • Институт за имунологично здраве, имунопрофилактика, имунотерапия и биологична терапия на рака “д-р Русчо Иконописов”
  • Реклами


Блогът на Борис Димитров powered by WordPress
Hosted at Sysadmins-bg.net
Design & code by Jonk
Entries (RSS) and Comments (RSS).
19 queryes | 2,152 seconds.