Rāda ziņas ar etiķeti bash. Rādīt visas ziņas
Rāda ziņas ar etiķeti bash. Rādīt visas ziņas

svētdiena, 2011. gada 31. jūlijs

How to create PDF photo album with ImageMagick


rinda=""; a=1 ; p=1 ;
for fails in ./*JPG
do
rinda=$rinda" "$fails[200x150]
a=$(($a+1))
if [ $a == 37 ]
then
echo "processing $p set"
montage -label '%f' -tile 6x $rinda -page A4 index-$p.pdf
a=1 ; p=$(($p+1)) ; rinda=""
fi
done
echo "processing last set"
montage -label '%f' $rinda -page A4 index-$p.pdf


Update
OMG. The following simple line just works and puts all thumbnails in one PDF file - 35 frames per PDF page.

montage -label "%f" -tile 5x7 -page A4 ../*JPG[200x150] index.pdf

otrdiena, 2010. gada 6. jūlijs

Foto pārsaukšana

Ar šo komandu var pārsaukt bildes, pievienojot tiem priekšā datumu.\
for i in DSC*JPG ; \
do mv $i \
`identify -format "%[EXIF:DateTime] %f " $i | \
awk '{gsub(":","-",$0); print $1"-"tolower($3) }'` ; \
done

ceturtdiena, 2010. gada 24. jūnijs

Latvijas kartes priekš TurboGPS

Skripts, kas savāc kartes ar visu Latviju un savāktās kartes pārsauc TurboGPS saprotamā veidā.


#!/bin/bash

## No cik gabaliem taisīsim lielāku karti - kartes gabaliņi tiks vilkti 1/$KarsuSkaits malu attiecībā (tā ir ātrāk)
KarsuSkaits=10

## Kāds būs mazās kartes platums - 500 labi pilsētām, citur pietiek ar 2000
XSOLIS=2000

## Kur novietosim izveidotās kartes
mkdir map$XSOLIS
MAPDIR=map$XSOLIS

## Sākums un beigas X un Y koordinātu plaknē - te ir visa Latvija un vēl biki
LV_X_START=313000
LV_Y_START=6172000
LV_X_BEIGAS=763000
LV_Y_BEIGAS=6439000


## funkcija karte, kas savāc mazos gabaliņus un izveido karti
function karte() {
## No kuras X koordinātes sāksim vilkt kartes
XSAKUMS=$1
## No kuras Y ordinātes sāksim vilkt kartes
YSAKUMS=$2
## Aprēķinam X un Y koordināšu beigas.
XBEIGAS=$(($XSAKUMS + $KarsuSkaits * $XSOLIS ))
YBEIGAS=$(($YSAKUMS + $KarsuSkaits * $XSOLIS ))


X1=$XSAKUMS
## Nobīde +10, lai kartes numurā būtu 2 cipari un montage tās saliktu pareizā secībā.
for kartite in `seq 11 $(($KarsuSkaits+10))`
do
# mazo kartīti velkam 1/$KarsuSkaits izmērā
wget -q "http://maps.kartes.lv/kijs/get_map.php?BBOX=$X1,$YSAKUMS,$(($X1+$XSOLIS)),$YBEIGAS&KIJS=BM45" -O tmp-$XSAKUMS-$kartite.gif
X1=$(($X1+$XSOLIS))
done
## Izplānojam kartes nosaukumus
KartesNosaukums="$XSAKUMS-$YSAKUMS-$XBEIGAS-$YBEIGAS"

## Izplānojam kartes nosaukumus priekš TurboGPS
## LU - Left Upper - kreisais augšējais stūris koordinātes
XLU=`echo $XSAKUMS $YBEIGAS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $1}'`
YLU=`echo $XSAKUMS $YBEIGAS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $2}'`
## RL - Right Lower - labais apakšējais stūris koordinātei
XRL=`echo $XBEIGAS $YSAKUMS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $1}'`
YRL=`echo $XBEIGAS $YSAKUMS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $2}'`
TGPSKOORD=$XLU'_'$YLU'_'$XRL'_'$YRL


## No mazajām kartēm izveidojam vienu lielāku karti
echo montage tmp-$XSAKUMS-* -tile "$KarsuSkaits"x1 -geometry 200x2000 $KartesNosaukums.gif
montage tmp-$XSAKUMS-* -tile "$KarsuSkaits"x1 -geometry 200x2000 $MAPDIR/$KartesNosaukums.gif
## Un izveidojam kopiju priekš turboGPS
cp -v $MAPDIR/$KartesNosaukums.gif $MAPDIR/$TGPSKOORD'_2000_2000.gif'
}


## Nosūtam funkcijai X un Y sākuma koordinātes
#start=352000
KartesXSolis=$(($XSOLIS*$KarsuSkaits))
KartesYSolis=$(($XSOLIS*$KarsuSkaits))
for YNr in `seq $LV_Y_START $KartesYSolis $LV_Y_BEIGAS`
do
for XNr in `seq $LV_X_START $KartesXSolis $LV_X_BEIGAS`
do
karte $XNr $YNr
done
done

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:


#!/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

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