#!/bin/bash
# Jāieraksta pareizs fonda nosaukums
FONDS="SEB Fund 1 Nordic Fund"
# Par cik vecu periodu jāsavāc informācija
VECUMS=$((3*365))
# Tālāk visam jānotiekas automātiski
# Izvadu var savākt kaut vai ar "tee -a"
FONDS_SHORT=`echo $FONDS | tr " " _`
datums=`date --date="-$VECUMS days" +%D`
for i in `seq 1 $VECUMS`
do datums=`date --date="$datums +1day" +%D`
DATUMA_IERAKSTS=`date --date="$datums" +"day="%d"&month="%m"&year="%Y`
echo -ne $datums\\t
lynx -dump "http://www.seb.lv/lv/private/services/investments/funds/SEB/howtoinvest/readmore/prices/values/?$DATUMA_IERAKSTS&cur=EUR&ofTabIndex=0" -show-rate=off -nomargins -nolist |
sed 's/fund/Fund/g ; s/fonds/Fund/g ; /Fund$/N;s/\n */\t/' |
grep "$FONDS" |
sed "s/$FONDS/$FONDS_SHORT/g" |
awk '{print $2"\t"$3}'
done
trešdiena, 2009. gada 2. decembris
SEB bankas fondu vēsturisko datu novilkšanas skripts
Cits prasts skripts vēsturisko fondu vērtību novilkšanai no SEB bankas.
otrdiena, 2009. gada 1. decembris
SEB bankas Latu rezervers fonda vēsturisko vērtību iegūšana
Tā kā SEB bankas speciālisti nez kādu iemeslu dēļ nav pacentušies uztaisīt jelkādu tabuliņu ar savas bankas ieguldījumu fondu sarakstiem, bet šādu sarakstu būtu labi iegūt, un, par laimi, attiecīgai lapai tiekam klāt ar zolīdu URL, tad lūk, skripts, ar ko novilkt vērtības. Pēc vajadzības var pielāgot arī citiem SEB bankas vērtspapīriem.
Tiek izmantots, bash, links un date un seq komandas.
Tiek izmantots, bash, links un date un seq komandas.
#!/bin/bash
# Sakuma datums
datums=`date --date="2008/01/01" +%D`
# Protams, dienu skaits ir jāpielāgo savām vajadzībām
for i in `seq 1 730`
do
datums=`date --date="$datums +1day" +%D`
DATUMA_IERAKSTS=`date --date="$datums" +"day="%d"&month="%m"&year="%Y`
echo -ne $datums\\t
links -dump "http://www.seb.lv/lv/private/services/investments/funds/LRF/value/?$DATUMA_IERAKSTS&ofTabIndex=0" |
grep "Latu rezerves fonds LVL " |
awk '{print $5}'
done
ceturtdiena, 2009. gada 22. oktobris
Informācijas novilkšana no ASUS WL-320gP par pieslēgtajiem klientiem
Komanda:
Vai, ja vēlamies saprotamā veidā, un esam lejupielādējuši WL320gP MIB failus ( kādā no šiem failiem:
http://files.wl500g.info/asus/wl320gp/firmware/ ) un iekopējuši tos ./mib/ :
WL-320gP pārstartēšana:
jeb
snmpbulkwalk -v2c -c public DWLAP320gPIPAdrese .1.3.6.1.4.1.2623.4.1.1.6.2.4
Vai, ja vēlamies saprotamā veidā, un esam lejupielādējuši WL320gP MIB failus ( kādā no šiem failiem:
http://files.wl500g.info/asus/wl320gp/firmware/ ) un iekopējuši tos ./mib/ :
snmpbulkwalk -m ALL -M ./mib -v2c -c public WLAP320gPIPAdrese WL320g-MIB::stWireless
# vai
snmpbulkwalk -m ALL -M ./mib -v2c -c public WLAP320gPIPAdrese WL320g-MIB::stStationMACAddr 2>/dev/null -Ov
WL-320gP pārstartēšana:
snmpset -v2c -c private WLAP320gPIPAdrese .1.3.6.1.4.1.2623.4.1.1.5.6.0 i 2
jeb
snmpset -m ALL -M ./mib -v2c -c private WLAP320gPIPAdrese WL320g-MIB::systemCommand i 2
sestdiena, 2009. gada 29. augusts
Aerofoto karšu vilkšana no Balticmaps.eu skripts 2.
Uzdevums: Novilkt aerofoto kartes atbilstoši "Latvijas satelītkaršu" iedalījumam;
Zemākais skripts ir tapis ilgu pūliņu rezultātā, un dažas lietas tur ir gan liekas, gan uzlabojamas.
Jāpiemin, ka:
1) pēc noklusējuma netiek ģenerēta lielā aerofoto bilde, jo sanāk 625Mpix bilde (25kmx25km kartei), un ne katrs dators to var pacelt (jābūt daudz RAM). Šim nolūkam ir jāatkomentē attiecīgā rindiņā.
2) tā kā vilkšanas procesā bieži tiek novilktas kropļotas bildes (pilnīgi baltas vai ar baltumiem augšējā kreisā stūrī), tad ir uztaisīts imagemagick pārbaudes skripts un bilde tiek mēģināta vilkt no jauna, bet nedaudz citām koordinātēm.
3) Šķiet, ka blogspot neļauj rakstīt visus skriptus (kur novelk un apstrādā satelītkartes koordinātes :( Skripts ir iekopēts pie http://pastebin.ca/1546988>, bet tur, savukārt, 23. rindā ir pielikts klāt viens (") skata uzlabošanai
Man šis skripts strādā, citiem varētu nestrādāt, bet varētu noderēt, kur paskatīties idejas bilžu vilkšanai.
Skripts:
Lai pašu karti novilktu, ir jālaiž skripts ar vēlamās kartes nosaukumu, piemēram,
Zemākais skripts ir tapis ilgu pūliņu rezultātā, un dažas lietas tur ir gan liekas, gan uzlabojamas.
Jāpiemin, ka:
1) pēc noklusējuma netiek ģenerēta lielā aerofoto bilde, jo sanāk 625Mpix bilde (25kmx25km kartei), un ne katrs dators to var pacelt (jābūt daudz RAM). Šim nolūkam ir jāatkomentē attiecīgā rindiņā.
2) tā kā vilkšanas procesā bieži tiek novilktas kropļotas bildes (pilnīgi baltas vai ar baltumiem augšējā kreisā stūrī), tad ir uztaisīts imagemagick pārbaudes skripts un bilde tiek mēģināta vilkt no jauna, bet nedaudz citām koordinātēm.
3) Šķiet, ka blogspot neļauj rakstīt visus skriptus (kur novelk un apstrādā satelītkartes koordinātes :( Skripts ir iekopēts pie http://pastebin.ca/1546988>, bet tur, savukārt, 23. rindā ir pielikts klāt viens (") skata uzlabošanai
Man šis skripts strādā, citiem varētu nestrādāt, bet varētu noderēt, kur paskatīties idejas bilžu vilkšanai.
Skripts:
#!/bin/bash
# Karte ar korekciju
satelitkarte='http://myname.vic.lv/Map/'
tmpkartes=`mktemp`
# Izskirtspeeja - jaieraksta cik m liels ir 1 pikselis, mazaakais=1. 25000 jaadalaas bez atlikuma ar izskirtspeeju
izskirtspeja=1
# montēšanas bildes atsevišķās bildītes izšķirtspēja (oriģinālie pikseļi/fināla pikselī)
fin_izskirtspeeja=1
# mazaas bildes attieciiba
maz_izskirtspeeja=5
solisX=1000
solisY=1000
# ImageMagick taisa lielus temfailus - jānorāda vieta, kur to var darīt. Diemžēļ šis pasākums (MAGICK_TMPDIR norādīšana) nezināmu iemeslu dēļ nestrādā
if [ ! -d `pwd`/tmp ] ; then
mkdir `pwd`/tmp
fi
MAGICK_TMPDIR=`pwd`/tmp
export MAGICK_TMPDIR
# Visi karshu nosaukumi (izvada arī uz ekrāna)
wget $satelitkarte -O - -q | grep Data.*jpg | tr -d \" | sed 's/.*\\//g' | sed 's/.jpg//g' | sort
function func_ortofoto {
logfile=log-$karte.log
npk=1000
## XCOUNT un YCOUNT - skaitļi, kas norāda karšu skaitu mapē
YCOUNT=0
# Visas kartes velkam 1x1km
# echo $XA $YA $XB $YB $XSKAITS $YSKAITS $karte
izmers=$solisX\x$solisY
# Izveidojam attieciigo direktoriju. kur glabaat 1x1km aerofoto kartes
mkdir map-$karte
# visas mazo karshu apakseejaas Y karshu koordinaates saakot no lielaakas
for Y in `seq $(($YB-$solisY)) -$solisY $(($YA-$solisY+10))`
do
XCOUNT=0
# visas mazo karshu apakseejaas Y koordinaates
for X in `seq $XA $solisX $(($XB-10)) `
do
# genereeajam bildes nosaukumu
bilde=map-$karte/$npk-$X-$Y
if [ -f $bilde.jpg ] && [ `identify -format '%wx%h' $bilde.jpg` == $izmers ] ; then
echo -n .
echo == $bilde ar izmeeru `identify -format '%wx%h' $bilde.jpg` jau eksistee == | tee -a $logfile
else
wget -nv "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$X,$Y,$(($X+$solisX)),$(($Y+$solisY))&WIDTH=$solisX&HEIGHT=$solisY&KIJS=BM45" -O $bilde.jpg -a wget-$karte.log && bildes_izmers=`identify -format '%wx%h' $bilde.jpg` | tee -a $logfile
fi
# Pāŗbaudam, vai nav balti pleķi uz mazās bildes
if [ `convert $bilde.jpg -crop 1x1+5+5 txt:- | tail -n 1 | awk '{print $4}'` == "white" -o `convert $bilde.jpg -crop 1x1+255+5 txt:- | tail -n 1 | awk '{print $4}'` == "white" -o `convert $bilde.jpg -crop 1x1+255+255 txt:- | tail -n 1 | awk '{print $4}'` == "white" -o `convert $bilde.jpg -crop 1x1+5+255 txt:- | tail -n 1 | awk '{print $4}'` == "white" ] ; then
echo == balta bilde $bilde == | tee -a $logfile
KOREKCIJA=300
wget -nv "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$(($X-$KOREKCIJA)),$Y,$(($X+$solisX)),$(($Y+$solisY))&WIDTH=$(($solisX + $KOREKCIJA))&HEIGHT=$solisY&KIJS=BM45" -O $bilde.jpg | tee -a $logfile && convert -crop $solisX\x$solisY+$KOREKCIJA $bilde.jpg $bilde.jpg 2>/dev/null
bildes_izmers=`identify -format '%wx%h' $bilde.jpg`
if [[ $bildes_izmers != $izmers ]] ; then
# izveidojam mazu baltu bildi, kas nepiecieshama veelaak pie montage
echo -n g
echo == veidojam mazu peleeku bildi $bilde.jpg ==
rm $bilde.jpg
convert -size 10x10 xc:gray95 $bilde.jpg
fi
fi
# Palielinam XCOUNT skaitu
XCOUNT=$(($XCOUNT+1))
# Palielinam npk skaitu, lai kartes būtu pēc kārtas
npk=$(($npk+1))
done
# Palielinam YCOUNT skaitu
YCOUNT=$(($YCOUNT+1))
done
# ievadam mainīgo datus indekss failā - vēlākai lietošanai ar montage
echo '#'$karte > map-$karte/00-index.txt
echo -e XCOUNT=$XCOUNT\\nYCOUNT=$YCOUNT\\nXKREISAIS=$XA\\nXLABAIS=$XB\\nYAPAKSA=$YA\\nYAUGSA=$YB\\nXIZMERS=$XSKAITS\\nYIZMERS=$YSKAITS >> map-$karte/00-index.txt
echo -e XMIN=$XA\\nXMAX=$(($XA+$XCOUNT*$solisX))\\nYMIN=$(($YB-$YCOUNT*$solisY))\\nYMAX=$YB >> map-$karte/00-index.txt
}
## Montēšanas f-ja - varam izsaukt vēlāk
function func_montage {
logfile=log-$karte.log
#aprēķinam oriģinālās bildes ģeometriju
GEOM=$(($solisX/$fin_izskirtspeeja))
# aprēķinām samazinātās bildes ģeometriju
SMGEOM=$(($GEOM/$maz_izskirtspeeja))
mapname=aerofoto-$karte.jpg
if [ -f ./$mapname ] ; then
echo == karte $mapname jau eksistē - pārsaucam par aerofoto-$karte-`date +%s`.jpg == | tee -a $logfile
mv $mapname aerofoto-$karte-`date +%s`.jpg
fi
# Ielasam jau aprēķinātās vēŗtības
if [ -f map-$karte/00-index.txt ] ; then
. map-$karte/00-index.txt
## Zemākā rinda ir jāatkomentē, lai izveidotu lielo bildi oriģinālajā izmērā (1px=1m2), jo komanda taisa ~625 Mpix lielu bildi
# time montage -verbose -tile $XCOUNT\x$YCOUNT -geometry $GEOM\x$GEOM ./map-$karte/*.jpg ./$mapname | tee -a $logfile
# Uztaisam arii mazaaku failu ar zemaaku izšķirtspēju
if [ ! -f ./aerofoto-$karte-$maz_izskirtspeeja.jpg ] ; then
echo == veidojam karti == | tee -a $logfile
time montage -verbose -tile $XCOUNT\x$YCOUNT -geometry $SMGEOM\x$SMGEOM ./map-$karte/*.jpg ./aerofoto-$karte-$maz_izskirtspeeja.jpg | tee -a $logfile
fi
else
echo "fails nav atrasts - varbūt kartes vēl nav novilktas"
fi
}
# Novelkam kartes datus ar // BLOGSPOT šo rindu neņem pilnībā pretim - ideja - novelkam kartes datus un koordinātes no satelītkartes un ievietojam tos $tmpkartes failā.
wget $satelitkarte -O - -q | grep "\ $tmpkartes
cat $tmpkartes | while read xa ya xb yb karte cits
do
# Apstrādājam tikai norādīto karti
if [[ $karte == $1 ]] ; then
# echo $xa $xb $karte
# Mainam X, ja pirmais ir lielaaks kaa Y
if [ $xa -gt $xb ]
then
# echo mainam
tmp=$xa ; xa=$xb ; xb=$tmp
# echo $xa $xb
fi
if [ $yb -gt $ya ]
then
# echo mainam
tmp=$ya ; ya=$yb ; yb=$tmp
# echo $ya $yb
fi
# echo $xa\\t$ya\\t$xb\\t$yb\\t$karte
# Reekinam koordinaates kartee
XA=`echo "(294131+100+$xa*5000/23)/5000*5000" | bc `
XB=`echo "(294131+100+$xb*5000/23)/5000*5000" | bc `
YA=`echo "(6457608+100-$ya*5000/23)/5000*5000" | bc `
YB=`echo "(6457608+100-$yb*5000/23)/5000*5000" | bc `
YSKAITS=$(($YB-$YA))
XSKAITS=$(($XB-$XA))
# echo $XA $YA $XB $YB $XSKAITS $YSKAITS $karte
func_ortofoto $XA $YA $XB $YB $XSKAITS $YSKAITS $karte
func_montage $karte
fi
done
rm $tmpkartes
Lai pašu karti novilktu, ir jālaiž skripts ar vēlamās kartes nosaukumu, piemēram,
bash karte.sh eleja
Latvijas/Ārvalstu trafika zīmēšana
Uzdevums: Nepieciešams uzzināt Latvijas un pārējā trafika apjomu vienai vai vairākām tīkla kartēm. Šim nolūkam ar IPTABLES tiks marķēts Latvijas trafiks (neLatvijas - tas, kas nav nomarķēts), ar rrdtool līdzekļiem tas tiks uzkrāts un zīmētas diagrammas.
Protams, šajā skriptā ir ierakstītas tikai tās lietas, kas attiecas uz pakešu marķēšanu. Parasti iptables skriptos ir ierakstīti arī citi pasākumi. Vienīgi jāatceras, ka ausgtākminētajiem PRE/POSTROUTING ierakstiem ir jābūt pirmajiem "mangle" tabulā.
Skripts, kas ar rrdtools un iptables palīdzību savāc, uzglabā un zīmē diagrammas. Šeit tas ir realizēts vienā skriptā, bet diagrammu zīmēšanu būtu lietderīgi veidot jaunā skriptā, kas tiek palaists ik pēc 5 - 15 minūtēm, nevis katras 10 sekundes. Diagrammas varētu papildināt arī ar MIN-MAX rādītājiem, jo pašas rrd datubāzes uzkrāj šos lielumus. Viss, protams, ir uzprišināms un maināms un uzlabojams.
Skaitīšanas skripts ir jāstartē ik pēc 10sek. (tādas mums rrd bāzes uztaisītas). To var laist gan no CRON, gan, piemēram,:
1. Latvijas tīklu iegūšana un IPTABLES uzstādīšana
#!/bin/bash
DARBADIR="/etc/iptables"
INTERFEISI="eth2 vlan0015 vlan0050"
# Novelkam Latvijas tīklu adreses
wget www.nic.lv/local.net -q -O - | grep '^[1-9]' | sort -n > $DARBADIR/local.net
#Iezimeejam visus Latvijas savienojumus ar mangle ==
cat $DARBADIR/local.net | while read LVNET
do
iptables -t mangle -A PREROUTING --src $LVNET -j MARK --set-mark 0x14
iptables -t mangle -A POSTROUTING --dst $LVNET -j MARK --set-mark 0x14
done
# Uzliekam skaitiitaajus muus intereseejoshiem interfeisiem visiem (NE)LATVIJAS tiikliem
for i in $INTERFEISI
do
#skaitam ienaakosho aarvalstu trafiku
iptables -t mangle -A PREROUTING -i $i -m mark ! --mark 0x14
#skaitam ienaakosho Latvijas trafiku
iptables -t mangle -A PREROUTING -i $i -m mark --mark 0x14
#skaitam izejosho aarvalstu trafiku
iptables -t mangle -A POSTROUTING -o $i -m mark ! --mark 0x14
#skaitam izejosho Latvijas trafiku
iptables -t mangle -A POSTROUTING -o $i -m mark --mark 0x14
done
Protams, šajā skriptā ir ierakstītas tikai tās lietas, kas attiecas uz pakešu marķēšanu. Parasti iptables skriptos ir ierakstīti arī citi pasākumi. Vienīgi jāatceras, ka ausgtākminētajiem PRE/POSTROUTING ierakstiem ir jābūt pirmajiem "mangle" tabulā.
2. Skaitītāju savākšana, uzglabāšana un diagrammu zīmēšana
Skripts, kas ar rrdtools un iptables palīdzību savāc, uzglabā un zīmē diagrammas. Šeit tas ir realizēts vienā skriptā, bet diagrammu zīmēšanu būtu lietderīgi veidot jaunā skriptā, kas tiek palaists ik pēc 5 - 15 minūtēm, nevis katras 10 sekundes. Diagrammas varētu papildināt arī ar MIN-MAX rādītājiem, jo pašas rrd datubāzes uzkrāj šos lielumus. Viss, protams, ir uzprišināms un maināms un uzlabojams.
#!/bin/bash
DARBADIR="/etc/iptables
WEBDIR="/var/pub/"
INTERFEISI="eth2 vlan0015 vlan0050"
cd $DARBADIR
for i in $INTERFEISI
do
# Ja rrd datubaaze nav izveidota - uztaisam to
if [ ! -f m-$i.rrd ]
then
rrdtool create m-$i.rrd --step 10 \
DS:lvin:COUNTER:300:0:1000000000000 \
DS:lvout:COUNTER:300:0:1000000000000 \
DS:nelvin:COUNTER:300:0:1000000000000 \
DS:nelvout:COUNTER:300:0:1000000000000 \
RRA:AVERAGE:0:1:720 \
RRA:AVERAGE:0.3:6:2880 \
RRA:AVERAGE:0.3:60:2016 \
RRA:AVERAGE:0.3:360:1488 \
RRA:AVERAGE:0.3:4320:1460 \
RRA:MIN:0.3:6:2880 \
RRA:MIN:0.3:60:2016 \
RRA:MIN:0.3:360:1488 \
RRA:MIN:0.3:4320:1460 \
RRA:MAX:0.3:6:2880 \
RRA:MAX:0.3:60:2016 \
RRA:MAX:0.3:360:1488 \
RRA:MAX:0.3:4320:1460
fi
rrdtool update m-$i.rrd -t lvin:lvout:nelvin:nelvout N:\
`iptables -nvxL PREROUTING -t mangle | grep $i.*"match 0x14" | awk '{print $2}'`:\
`iptables -nvxL POSTROUTING -t mangle | grep $i.*"match 0x14" | awk '{print $2}'`:\
`iptables -nvxL PREROUTING -t mangle | grep $i.*"match \!0x14" | awk '{print $2}'`:\
`iptables -nvxL POSTROUTING -t mangle | grep $i.*"match \!0x14" | awk '{print $2}'`
rrdtool graph $WEBDIR/m-$i.png --end now --start end-1800s --width 1000 --height 400 -v Bps \
DEF:lvin=m-$i.rrd:lvin:AVERAGE \
DEF:lvout=m-$i.rrd:lvout:AVERAGE \
DEF:nelvout=m-$i.rrd:nelvout:AVERAGE \
DEF:nelvin=m-$i.rrd:nelvin:AVERAGE \
"CDEF:clvout=0,lvout,-" \
"CDEF:cnelvout=0,nelvout,-" \
LINE1:lvin#0000FF:"LV_IN" \
LINE1:clvout#00CCFF:"LV_OUT" \
LINE1:nelvin#FF00FF:"NELV_IN" \
LINE1:cnelvout#FF5533:"NELV_OUT"
rrdtool graph $WEBDIR/m-$i-8h.png --end now --start end-8h --width 1000 --height 400 -v Bps\
DEF:lvin=m-$i.rrd:lvin:AVERAGE \
DEF:lvout=m-$i.rrd:lvout:AVERAGE \
DEF:nelvout=m-$i.rrd:nelvout:AVERAGE \
DEF:nelvin=m-$i.rrd:nelvin:AVERAGE \
"CDEF:clvout=0,lvout,-" \
"CDEF:cnelvout=0,nelvout,-" \
LINE1:lvin#0000FF:"LV_IN" \
LINE1:clvout#00CCFF:"LV_OUT" \
LINE1:nelvin#FF00FF:"NELV_IN" \
LINE1:cnelvout#FF5533:"NELV_OUT"
done
3. Trafika skaitīšana
Skaitīšanas skripts ir jāstartē ik pēc 10sek. (tādas mums rrd bāzes uztaisītas). To var laist gan no CRON, gan, piemēram,:
while : ; do bash ./skaita.sh ; sleep 10 ; done
piektdiena, 2009. gada 10. jūlijs
Aerofoto no balticmaps.eu - skripts 1
Skripts, kas novelk ortofoto bildi vienai konkrētai vietai no balticmaps.eu piedāvātajām aerofotokartēm.
Lai darbotos, nepieciešams bash, wget un imagemagick.
Skriptam kā parametri ir jānorāda X un Y koordinātes pēc balticmaps.eu, vēlamais kartes nosaukums un kartes vienas malas izmērs kilometros.
X un Y koordinātes var iegūt arī no garuma un platuma grādiem, izmantojot proj4 utilītas. piem.
Jāatceras gan, ka komanda "montage" spēj noēst ļoti daudz atmiņas, un jau kartes ģenerēšana ar izmēriem 12x12km ir ļoti resursietilpīga.
Un pats skripts:
Lai darbotos, nepieciešams bash, wget un imagemagick.
Skriptam kā parametri ir jānorāda X un Y koordinātes pēc balticmaps.eu, vēlamais kartes nosaukums un kartes vienas malas izmērs kilometros.
X un Y koordinātes var iegūt arī no garuma un platuma grādiem, izmantojot proj4 utilītas. piem.
echo 57.151101N 24.285018E | cs2cs ???
Jāatceras gan, ka komanda "montage" spēj noēst ļoti daudz atmiņas, un jau kartes ģenerēšana ar izmēriem 12x12km ir ļoti resursietilpīga.
Un pats skripts:
#!/bin/bash
# Ortofoto vilkshanas skripts
# Pārbaudam argumentu skaitu - jābūt 3
if [ $# -lt 3 ]
then
echo -e "Jāievada 3 vai 4 argumenti - centra X un Y koordinātes, vēlamais kartes nosaukums un kartes garums(platums)km (jaadalaas ar 4) \\n, piemēram:\\n
bash karte2.sh 353300 6363319 Ventspils 8 \\n
uztaisīs Ventspils aerofoto karti ar 8x8km izmēriem "
exit
fi
# Solis ir 2km
SOLIS=2000
# Mazās bildes nosaukumam sākumā piekabināsim kārtas numuru, lai pēc tam vieglāk varētu kombinēt bildi.
# Vienkāršākais - sākas ar 101
NOS=101
centrsX=$1
centrsY=$2
nosaukums=$3
GaPl=$(($4/2)) 2>/dev/null
if [[ $GaPl == "" ]]
then
# minimālais kartes izmērs - 2x2 km
GaPl=1
fi
#Pārbaudam vai šāds fails jau ir uztaisīts, ja ir - pārsaucam, pieliekot datumu un laiku
if [ -f $nosaukums-map.jpg ]
then
echo Kartes fails ar šādu nosaukumu jau eksistē - pārvietojam to
mv $nosaukums-map.jpg $nosaukums-map-`date +%y%m%d-%H%M`.jpg
fi
tmpkartes=`mktemp -d ./tmp-$nosaukums.XXXXXXXX`
# Apalojam XY līdz veseliem 100 - tā labāk lasās no servera ?
centrsX=$((($centrsX+50)/100))00
centrsY=$((($centrsY+50)/100))00
## Funkcija, kas veic bildes vilkshanu un pārbauda, vai tā ir novilkta
function ortofoto {
echo velkam $X $Y $SOLIS $NOS
bilde=$tmpkartes/$NOS-$X-$Y
wget -q "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$X,$Y,$(($X+$SOLIS)),$(($Y+$SOLIS))&WIDTH=$SOLIS&HEIGHT=$SOLIS&KIJS=BM45" -O $bilde.jpg || wget -q "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$X,$Y,$(($X+$SOLIS)),$(($Y+$SOLIS))&WIDTH=$SOLIS&HEIGHT=$SOLIS&KIJS=BM45" -O $bilde.jpg
# Ja joprojaam bilde nav novilkta, tad meeginam no
if [[ `identify -format '%W%H' $bilde.jpg` != "$SOLIS$SOLIS" ]] 2>/dev/null ; then
# Uztaisam mazu nobiidi par 1 pikseli
rm $bilde.jpg 2>/dev/null
X=$(($X-1)) && Y=$(($Y-1))
wget -nv "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$X,$Y,$(($X+$SOLIS)),$(($Y+$SOLIS))&WIDTH=$SOLIS&HEIGHT=$SOLIS&KIJS=BM45" -O $bilde-a.jpg
if [[ `identify -format '%W%H' $bilde-a.jpg` != "$SOLIS$SOLIS" ]] ; then
rm $bilde-a.jpg 2>/dev/null
wget -nv "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$X,$Y,$(($X+$SOLIS)),$(($Y+$SOLIS))&WIDTH=$SOLIS&HEIGHT=$SOLIS&KIJS=BM45" -O $bilde-b.jpg
if [[ `identify -format '%W%H' $bilde-b.jpg` != "$SOLIS$SOLIS" ]] ; then
rm $bilde-b.jpg 2>/dev/null
# Izveidojam mazu bildes failu, kas nepieciešams tālākai bildes kopā komponēšanai
convert -size 10x10 xc:gray $bilde-c.jpg
fi
fi
fi
}
# Aprēķinam kreiso X koordināti
startX=$(($centrsX-$GaPl/2*$SOLIS))
# Aprēķinam augšējo Y koordināti
startY=$(($centrsY+$GaPl/2*$SOLIS))
# echo $startX $startY
# Velkam kartes - saakot no augšējā kreisā stūra
# visas mazo karshu apakseejaas Y koordinaates
for Y in `seq $(($startY-$SOLIS)) -$SOLIS $(($startY - $SOLIS*$GaPl))`
do
# visas mazo karshu kreisās X koordinātes
for X in `seq $startX $SOLIS $(($startX + $SOLIS*($GaPl-1)))` ; do
# nosuutam mazaas bildes datus kartes vilksanas f-jai
ortofoto $X $Y $SOLIS $NOS
NOS=$(($NOS+1))
done
done
# Montējam kopā failu
if which montage >/dev/null 2>/dev/null; then
montage -verbose -tile $GaPlx$GaPl -geometry $SOLISx$SOLIS $tmpkartes/*jpg ./$nosaukums-map.jpg
rm -r $tmpkartes
fi
ceturtdiena, 2009. gada 9. jūlijs
DNAT routing over second link
The problem:
To correct this, you should:
Some other approach with CONNMARK (don't tested yet): http://home.regit.org/?page_id=7
- You have 2 connnections to the Internet - A is the default link, B - secondary link.
- You have hosts inside LAN which are DNAT'ed from B space IP addresses.
- Provider A blocks IP addresses from B address space
- on router you have DNAT'ed some hosts to LAN and SNAT'ed all outgoing IP addresses on A and B interfaces.
To correct this, you should:
- add corresponding iproute2 table (if not already exist)
- mark all outgoing packets from specified LAN host(s) with iptables PREROUTING chain
- add ip rule to route marked packets through specified table and gateway
## script - all other routes and configurations skipped
## you should add this only one time
# echo 200 bprovider >> /etc/iproute2/rt_tables
...
## add routes to B space and gateway - all in bprovider table
ip route add $B-NET dev $B-DEV src $B-IP table bprovider
ip route add default via $B-GW table bprovider
## add rule to answer all incoming connections to B space over B gateway
ip rule add from $B-IP table bprovider
## iptables part - DNAT incoming packets, SNAT outgoing packets, and mark LAN packets - only for B addresses.
## Only some http ports (80,443) are redirected to LAN host
...
iptables -t nat -A PREROUTING -d $B-IP -m multiport -p tcp --dports 80,443 -j DNAT --to $LAN_IP
iptables -t nat -A POSTROUTING -o $B-DEV -j SNAT --to-source $B-IP
iptables -t mangle -A PREROUTING -s $LAN_IP -j MARK --set-mark 99
...
## and finally - order marked packets to routed over B gateway
ip rule add fwmark 99 table bprovider
Some other approach with CONNMARK (don't tested yet): http://home.regit.org/?page_id=7
svētdiena, 2009. gada 5. jūlijs
Attēlu apstrāde ar imagemagick
Pāris skriptu, kā apstrādāt attēlu failus lielās direktorijās
Skripts, kas visiem attēliem faila nosaukumiem pieliek klāt datumu:
Uzmanību Ubuntu lietotājiem: Dažās versijās ir bugs, kas neattēlo EXIF informāciju!
https://bugs.launchpad.net/ubuntu/+source/imagemagick/+bug/227631
Skripts, kas visiem attēliem faila nosaukumiem pieliek klāt datumu:
#!/bin/bash
for i in *jpg *JPG
do
# Izvelkam datumu no bildes
DATUMS=`identify -format '%[EXIF:DateTime]' $i | tr : _ | awk '{print $1}' `
# Ja datuma vērtība eksistē un bildes nosaukumā jau nau datums, tad pārsaucam bildi
if [[ -n $DATUMS && $i != $DATUMS* ]]
then
mv -v $i $DATUMS-$i
fi
done
Uzmanību Ubuntu lietotājiem: Dažās versijās ir bugs, kas neattēlo EXIF informāciju!
https://bugs.launchpad.net/ubuntu/+source/imagemagick/+bug/227631
ceturtdiena, 2009. gada 2. jūlijs
To enable routing on Ubuntu host
edit /etc/sysctl.conf or with sysctl -w
To allow forward packets
sysctl -w net.ipv4.ip_forward=1
To forward packets comming to "wrong" interfaces:
sysctl -w net.ipv4.conf.default.rp_filter=0
(filter is enabled by default)
To allow forward packets
sysctl -w net.ipv4.ip_forward=1
To forward packets comming to "wrong" interfaces:
sysctl -w net.ipv4.conf.default.rp_filter=0
(filter is enabled by default)
pirmdiena, 2009. gada 26. janvāris
How to query Active Directory users from Linux to get password expire information
BASH script:
#!/bin/bash
#
DEXP=`date -d '+1week' +%s`
DNOW=`date +%s`
DVEC=`date -d '-1week' +%s`
SERV=winADserv
AUTHF=cred.txt
# Ielasama visus lietotajvardus
wbinfo -u | while read User
do
# Katram lietotaajam skatamies paroles expireeshanaas laiku
rpcclient -A $AUTHF -c "queryuser $User" $SERV | grep "Password must change Time" | cut -f 2- -d, | while read Datums
do
if [[ `date -d "$Datums" +%s` -le $DEXP ]] && [[ `date -d "$Datums" +%s` -ge $DVEC ]]
then
echo $User `date -d "$Datums" +%F`
fi
# echo -e $Datums\\t$User
done
done
ldapsearch script
LDAPDC="dc=skola,dc=example,dc=com"
LDAPCN="cn=Administrator,ou=Users,$LDAPDC"
LDAPPW=VerySecretAdminPassword
SERV=winADserv
WARNPWAGE=80days
ldapsearch -x -D "$CN" -w $LDAPPW -h $SERV -b $LDAPDC "(&(sAMAccountName=*)(objectClass=user)(pwdLastSet<=$((`date -d -$WARNPWAGE +%s`+11644473600))0000000)(pwdLastSet>=$((`date -d -100days +%s`+11644473600))0000000)(sAMAccountType=805306368))"| grep sAMAccountName
Abonēt:
Ziņas (Atom)