piektdiena, 2010. gada 13. augusts

Dažas atziņas par datorklašu klonēšanu

Ok, tātad esmu uzinstalējis un pārklonējis visās datorklasēs Ubuntu 10.04 (bija Ubuntu 8.04)

Ubuntu10.04 instalēšana
Pati instalēšanas gaita bija vienkārša:
  • sainstalējam desktopu
  • no iepriekšējās sistēmas ar dpkg --get-selections apskatamies vērtīgās pakotnes un dpkg --set-selections && apt-get dselect-upgrade visu uzinstalējam
  • novācam visu lieko (indiešu fonti, akonadi u.t.t.)
  • piekonfigurējam datoru tīklam (winbind, krb5, security/group.conf, cups/client.conf, umask, uzliekam ssh atslēgas, lai var pieslēgties bez paroles, u.t.t.)

Patika:
  • winbind un pam_mount strādāja "Out of Box" - pēc to standarta piekonfigurēšanas nebija nepieciešamas nekāda papildu /etc/pam.d/* pieslīpēšana
  • pēc winbind autentifikācijas lietotājiem ir arī kerberos biļete.
  • visi desktop efekti strādā arī uz datoriem, uz kuriem līdz šiem tie nedarbojās (datoriem ir iebūvētās Intel videokartes)
Nepatika:
  • GDM ir galīgi sačakarēts, jo netiek piedāvātas nekādas normālas konfigurēšanas iespējas
  • ???

Fsarchive
Tā kā līdz šim izmantotais parted vairs neuztur ext4, nācās pāriet uz fsarchive. Manas atziņas par fsarchive:
Patīk:
  • Vienkāršs
  • Gana čakls
  • Nav vairs prasība pēc identiskiem sējumu lielumiem.
Nepatīk:
  • ???
Vēlētos:
  • servera atbalstu - lai attēlus var paņemt uzreiz no servera, nevis montēta tīkla sējuma
  • statusa indikatoru (%, ātrums ..)

Klonēšana:
Klonēšanai tiek izmantots arī LTSP serveris (gan tikai tīkla būtošanai, bet ja jau LTSP darbojas, kāpēc gan izgudrot jaunu velosipēdu).
Klonēšanas vajadzībām LTSP klienta daļā papildu tika pieinstalēts:
  • nfs-common, lai var montēt tīkla sējumus
  • fsarchiver, lai var klonēt diskus
  • openssh server, lai var attālināti pieslēgties plānajam klientam, kā arī sakopētas attiecīgās atslēgas uz known_hosts un authorized_keys
Lai nebūtu jāskraida gar datoriem un jāspaida tīkla ielādes taustiņu kombināciju, datorklašu datoriem ar skripta palīdzību uzliek universālo, GRUB lādējamo gpxe.lkrn , un pamaina /boot/grub/menu.lst, lai gpxe startētos pēc noklusējuma:
#!/bin/bash
komanda="ssh -n -o ConnectTimeout=1 -i .ssh/id_rsa"
scpkom="scp -o ConnectTimeout=1 -i .ssh/id_rsa"
for hstend in `seq 64 95`
do
hst=10.XXX.XXX.$hstend
$scpkom gpxe.lkrn root@$hst:/boot/
$komanda -n root@$hst '
echo >> /boot/grub/menu.lst
echo title LTSP2 >> /boot/grub/menu.lst
echo root"(hd0,0)" >> /boot/grub/menu.lst
echo kernel /boot/gpxe.lkrn >> /boot/grub/menu.lst
sed -i "s/^default.*0/default 4/g" /boot/grub/menu.lst
reboot
exit' &
done

Pēc parstartēšanas (datori paceļas kā tīkla plānie klienti), skriptu pielabo uz :
$komanda  -n root@$hst '
mount -t nfs 10.X.X.XXX:/data/images /media
fsarchiver restfs /media/CSDA1.fsa id=0,dest=/dev/sda1,mkfs=ext4
mkdir /tmp/sda1
mount /dev/sda1 /tmp/sda1
/usr/sbin/grub-install --root-directory=/tmp/sda1 /dev/sda && reboot' &
done


Pēc pārstartēšanas datoram atliek nomainīt datora vārdu un piejoinot to domēnam:

Hosta nosaukumi:
Lai nebūtu jāskraida gar datoriem un manuāli jāmaina hosta nosaukums (var jau pieslēgties arī ar ssh un katru konfigurēt atsevišķi), var izmantot dhcp iespēju datora nosaukumu paņemt no DHCP servera. Lai tas notiktos, ir jādzēš /etc/hostname fails. Vienīgais trūkums ir tas, ka hosta nosaukumam ļoti vēlams ir jābūt arī /etc/hosts failā, lai datoram pašam sevi nebūtu jāmeklē. Tāpēc lieto skriptu, kas jauno, dhcp hostname ieraksta, gan /etc/hostname gan /etc/hosts failā

Pievienošanās domēnam:
Domēnā tiek izveidots pagaidu konts (expirējas jau rīt), kuram ir tiesības pielikt datorus domēnam, un šis konts tiek pielikts skriptam.

Tātad pēc klonēšanas un pārstartēšanas var laist sekojošo mainīto skriptu:
$komanda  -n root@$hst 'hostname
### Uzstadam hostname no DHCP servera
rm /etc/hostname ; dhclient eth0 && echo `hostname` >> /etc/hostname && echo 127.0.1.1 `hostname` >> /etc/hosts && hostname `hostname`
### echo == turpinam ar winbindu =======
/etc/init.d/winbind stop
killall winbindd
rm -vf /var/lib/samba/*
rm -vf /var/lib/samba/winbindd_idmap.tdb
rm -vf /var/cache/samba/winbindd_cache.tdb
### echo == pievienojam ldap administratoru ==
smbpasswd -w VerySecretLDAPPassword
### echo == uzgaidam 3 sekundes un joinojamies domenam ====
sleep 3
net ads join -S ADServer -U KlonesanasTmpUser%LotiSlepenaParole
### echo === uzgaidam veelreiz 3 sekundes un starteejam winbindd ===
/etc/init.d/winbind start
sleep 3
### echo === Te varam pārliecināties, vai winbind strādā ===
wbinfo -t
wbinfo -u | tail -n 1 '

otrdiena, 2010. gada 10. augusts

Info par lietotāju

Interesē, piem,, info par lietotāju Peteris

1) autentificējamies ar kinit

2) rpcclient -c 'querydispinfo' -k adserver | grep Peteris # Iegūstam Petera RID, piem. 1078

3) rpcclient -c 'queryuser 1078' -k adserver

otrdiena, 2010. gada 27. jūlijs

Samba 3.4 izmaiņas un montēšana

Apgreidojot serverus saskāros ar problēmu, ka Samba 3.4+ vairs automātiski neliek klāt noklusētā domēna nosaukumu pie lietotājvārda.
Un, ja agrāk komanda:
mount.cifs //samba33/tstuser ./mnt --verbose -o user=tstuser

darbojās, tad no Sambas 3.4.0 versijas komandas rezultātā ir kļūda ar "Permission denied". Tiesa, komanda darbojas, ja domēns tiek norādīts:
mount.cifs //samba33/tstuser ./mnt --verbose -o user=tstuser,domain=SKOLA
, vai arī lietotājs lieto pilno lietotājvārdu (SKOLA\\tstuser).

Bet tas neder manām vajadzībām, kur winbind lieto ar "use default domain = yes" opciju. (Tīkla diski tiek pievienoti ar pam_mount moduli pie pieteikšanās sistēmā).

Tātad no 3.4 ir izmaiņas, kas aprakstītas WHATSNEW sekcijā "Authentication Changes", un smb.conf failā ir jāpievieno "map untrusted to domain = yes" ieraksts smb.conf failā uz servera.

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

pirmdiena, 2010. gada 7. jūnijs

LKS92 konvertācija uz platuma un garuma grādiem

Konvertēt var ar proj komandu cs2cs, piemēram, Rīga (Rīgas 3. vidusskola):
http://www.balticmaps.eu/?lang=lv&draw_hash=jlfstt&centerx=506642&centery=6311466&zoom=-2&layer=map

echo 506642 6311466 | 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 "%.7f"
24.1091813 56.9467706 0.0000000

# Vai
echo 506642 6311466 | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 \
+ellps=GRS80 +units=m +to=WGS84 -f "%.6f"
24.109181 56.946771 0.000000

# Vai
echo 506642 6311466 | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 \
+ellps=GRS80 +units=m +to=WGS84
24d6'33.053"E 56d56'48.374"N 0.000

ceturtdiena, 2010. gada 20. maijs

MAC adrešu savākšana

Skripts, kas no doto slēdžu IP adresēm nolasa visas MAC adreses un izveido sarakstu ar
LAIKS SWITCHAIP PORTS MACADRESE


 
for i in SwitchIP1 SwitchIP2 SwitchIP3
do
snmpbulkwalk $i -v2c -c public enterprises.11.2.14.2.10.5.1.3.1 -OQqn |
tr : . | while read rinda
do
awk -v SWITCH="$i" -v LAIKS="`date +%F-%H-%M`" -F. '{ print LAIKS"\t"SWITCH"\t"$17"\t"$24}'
done
done