shell find & replace recursive
Много мразя като ми се налага да променям едно и също нещо в много различни файлове !
Затова е следният ред :
find * -type f -exec sed -i ’s/ТОВА ТЪРСИМ/ПРОМЕНЯМЕ С ТОВА/’ {} \;
Казах ли колко обичам sed ?
Скрипт за проверка дали даден процес е жив
Леко скриптче за проверка дали даден процес е жив (в случая 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
толкоз .
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 часът през нощта скрипта ще се изпълнява.
Това е !
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