/etc menedžments ar subversion (svn)
2009-09-11 09:07:25 UTC by maris in Linux, gentoo, Quick Tips,Kas ir subversion visi zina :)
Tā pielietojumu atradu arī /etc menedžēšanai, šad tad gribas redzēt kas kādam konfigam ko ir mainījis, un šad tad ir nepieciešams uztaisīt kādu izmaiņu rollback.
Tiek izveidota repozitorija struktūra
mkdir svnprep
mkdir -p {branches,logs,trunk}
svn import -m 'Initial import' svn://mansSVNservers/repozitorijs
cd ../
rm -rf svnprep
Tiek uztaisīta lokāla darba kopija
svn co svn://mansSVNservers/repozitorijs/trunk /Configs
cd /Configs
Struktūra ir apmēram šāda:
svn:
->branches
->logs
->trunk:
--->all (konfigi kopēji visiem serveriem)
--->$(hostname) (katra hosta individuālie konfigi)
tālāk visi konfigi, kas ir vienādi visiem serveriem tiek pārnesti zem /Configs/all/etc/ un izveidots simlinks.
mv /etc/make.conf /Configs/all/etc/
ln -s /Configs/all/etc/make.conf /etc/
konfigi, kas ir unikāli hostam tiek ienesti iekš /Configs/HOSTNAME
tad jaunie faili tiek pievienoti pie svn un uztaisīts komits.
pēc komita nostrādā post-commit hook, kas caur ssh uz katra servera izpilda 'svn update'.
post-commit hooks
#!/bin/sh
hosts=`ls /Configs`
for h in $hosts
do
ssh root@${h} "cd /Configs; svn update"
done
tādējādi izdarot izmaiņas uz viena hosta updeitojas visi hosti.
Vienīgais priekšnoteikums ir tāds, ka autorizācija uz serveriem notiek ar ssh atslēgām bez paroles.
Atjaunots files.inbox.lv downloaderis
2009-09-11 08:54:58 UTC by maris in Linux, python,Jauninājumi: * Lejupielādes atsākšana * opcija -c - automātiskai merķa direktorijas izveidei. paņemt te: inbox-files-downloader-r30
(0 komentāri)Perl ithreads vs Memory
2009-08-21 08:54:00 UTC by maris in Linux,Uznāca vajadzība uzrakstīt perl skriptu, kas apstrādā relatīvi lielu masīvu - pie 500k - 1m elementiem, lai lieta ietu ātrāk nolēmu izmantot ithreads. Masīva tips ir HASHES OF ARRAYS. Masīvā aptuveni 40 HASH'i viens pavediens katram hešam. Problēmas sākās, tad, kad veidojot jaunu pavedienu Perl kopē visas datu struktūras uz jauno pavedienu, tas nozīmē, ka izveidojot 40 pavedienus servera atmiņā ir 40 masīva kopijas.
(0 komentāri)files.inbox.lv downloader
2009-06-05 15:09:46 UTC by maris in Linux, python, Skripti, Apple, Software,files.inbox.lv ir visai jauns failu glabāšanas serviss, kam ir diezgan ērta upload forma, kas ļauj augšup ielādēt vairākus failus vienlaicīgi, bet diemžēl nav iespējas lejupielādēt vairākus failus vienlaicīgi, tādēļ uzrakstīju nelielu Python skriptu, kas šo trūkumu atrisina.
Inbox Files Downloader ir komandrindas (cli) Python skripts, kas lejupielādē failus no files.inbox.lv servisa, saglabājot tos uz lokālā diska. Skripts ir spējīgs lejupielādēt individuālus failus, vaī pat veselu direktoriju saturu.
Spēj lejupielādēt:
1. Privātos failus un direktorijas saturus, ar autorizāciju
2. Publiskos failus - bez autorizācijas
Lai lejupielādēt privāto failu vai direktorijas saturu:
./inbox-files-downloader.py -s 'http://files.inbox.lv/files/download/?id=9999' -d Downloads/
pēc kā tiks paprasīti autorizācijas dati.
vai publisko:
./inbox-files-downloader.py -s 'http://files.inbox.lv/ticket/2dcb12a3282ce55ac122c118ac4c567acae474c5/817-2271.pdf' -d Downl/
autorizācijas dati netiks prasīti.
Komentāri un ieteikumi ir laipni gaidīti :)
Nepieciešama UNIX tipa OS un python > 2.4, pie lielas vēlēšanās var modificēt arī priekš Win.
paņemt var te:
py skripts: inbox-files-downloader
Win32 exe: inbox-files-downloader-r20
Bash timed execution
2009-05-22 08:05:14 UTC by maris in Linux, Skripti,Tikko savajadzējās uztaisīt check'u ar timeout'u, te mu būs piemērs kā to izdarīt no bash. Ideja diezgan vienkārša - forkojam galveno procesu backgroundā, savācam procesa pid, guļam timeout sekundes, pēc kā pārbaudma vai process joprojām ir aktīvs.
#!/bin/bash
mainproc(){
for i in `seq 1 20`
do
echo "Now in $i"
sleep 1
done
}
timeout=5
echo "Running with timeout of 5 seconds"
mainproc &
pid=$!
sleep $timeout
kill -0 $pid
if [ $? -eq 0 ]
then
echo "Process hang"
kill -9 $pid
else
echo "Process ok"
fi