Archive for the ‘Linux’ Category
You are currently browsing the archives for the Linux category.
You are currently browsing the archives for the Linux category.
Ако искаме да сменим ‘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’
Много мразя като ми се налага да променям едно и също нещо в много различни файлове !
Затова е следният ред :
find * -type f -exec sed -i ’s/ТОВА ТЪРСИМ/ПРОМЕНЯМЕ С ТОВА/’ {} \;
Казах ли колко обичам sed ?
На 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. Имам да чета доста по темата , по-натам ще пиша пак.
Останах с много добри впечатления от конференцията и хората там като цяло и съм им много благодарен за усилията които са положили за да я организират. Надявам се по-често да има такива събития в България.
Леко скриптче за проверка дали даден процес е жив (в случая 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
толкоз .
Ако ви се налага да направите нов 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 часът през нощта скрипта ще се изпълнява.
Това е !