friheim.com

Teknologi og øl

Year: 2011 (page 1 of 3)

Sorter bilder med EXIF-informasjon og script

Som mange nok vet, inneholder de fleste jpeg-bilder informasjon om bildets opprinnelse, slikt som tid, sted, kameramerke osv. Dette kan brukes til å få orden på samlinga etterhvert som den vokser, og du stadig endrer kamera, får tilsendt bilder osv. En god del filmformater har samme mulighet, så du kan godt kaste inn det i samme slengen.

Jeg har lagd et enkelt script i den anledning. fremgangsmåten er enkel:

  1. Legg alle bildene du vil ha sortert inn i en katalog
  2. Kopier scriptet nedenfor inn i ei fil på linuxboxen-din
  3. gjør scriptet kjørbart: chmod 755 bildesortering.sh kjkjk
  4. Gå inn i katalogen hvor du har bildene og kjør scriptet: ~/bildesortering.sh

Alle bildene som har gyldig exif-info skal nå være flyttet inn i kataloger sortert på årstall og måned. For å tilpasse mer, f.eks. med dato i tillegg, for andre filformater etc, så er det bare å forandre litt på scriptet.

#! /bin/bash

# Sorterer bilde/videofiler fra en katalog og legger dem i egne kataloger etter
# måned i exif-dato. For å sortere på dag også, legg til /%d
#
# Ivar Friheim, 03.10.2011
#

# Setter field-separator til noe annet enn space, slik at filnavn med space fanges opp
SAVEIFS=$IFS
IFS=$(echo -en «\n\b»)

# Kommenter ut/inn etter filtype du vil ta
# for fil in `ls *.MOV`
# for fil in `ls *.mp4`
for fil in `ls *.[Jj]Pp][Gg]`
# for fil in `ls *.THM` # brukes som stottefil til AVI. Kommenter ut egen AVI/THM-rutine lengre ned.

do

# Henter exif-dato, tar ut måned og år, og erstatter «:» med «/»
datokatalog=»$(exiftool -CreateDate $fil|awk ‘{print $4}’|cut -d: -f1,2|sed s%:%/%g)»

# Skriver logg til loggfil i katalogen programmet kjoeres fra
echo $fil » – » $datokatalog >> bildelogg.txt

# Sjekker om katalogen finnes
if [ ! -d «$datokatalog» ]; then
echo «Katalogen finnes ikke»
mkdir -p $datokatalog
fi

# Egen AVI/THM-rutine
# avifil=»$(echo $fil | cut -d . -f 1)»
# mv $avifil.AVI $datokatalog

# Flytt fila
mv $fil $datokatalog

done

#Setter fieldseparator tilbake til den opprinnelige
IFS=$SAVEIFS

 

Shrink PDF

PDF-filer med mange bilder kan ha det med å bli store og tunge. Spesielt ser jeg av og til autogenererte PDF-filer med mange bilder, hvor bildene blir lagt inn uten å få endret størrelse først. Da kommer GhostScript inn i bildet! Følgende script kan lagres og kjøres fra kommandolinje i Linux. Lagre det som shrink.pdf, og kjør det med navnet på den store fila som argument:

#!/bin/sh

gs -q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.3 \
-dPDFSETTINGS=/screen \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-dColorImageDownsampleType=/Bicubic \
-dColorImageResolution=128 \
-dGrayImageDownsampleType=/Bicubic \
-dGrayImageResolution=128 \
-dMonoImageDownsampleType=/Bicubic \
-dMonoImageResolution=128 \
-sOutputFile=mindre_$1 \
$1

Jeg greide å få redusert størreslen på ei PDF-fil fra 35,6 Mb til 1,3 Mb med dette scriptet. Det blir nok e-postmottakeren glad for!

Mutt med Gmail

Fler og fler har fått øynene opp for Gmail – en rask, pålitelig og gratis mailleverandør med god spam-vask. Et par svakheter er det imidlertid med Gmail – bl.a. har ikke jeg funnet noen enkel måte å sortere e-post i ulike mapper på eller enkle måter å sette opp regler for å sende nye e-poster direkte inn i ulike mapper. Det er jo mulig å merke spesielle e-poster med ulike tags, men de ligger uansett i innboksen sammen med alt annet. Og dette blir temmelig uoversiktlig.

For snart ti år siden stiftet jeg bekjentskap med Mutt, en tekstbasert og kraftig e-postleser som kan konfigureres til det uendelige. I tillegg til at den kan settes opp til å sortere og behandle ulike e-poster og vedlegg automatisk, kan den også installeres på en server så du kan bruke den fra andre lokasjoner; alt du behøver er en nettforbindelse og et terminalvindu. Eller som opphavsmannen selv sier om Mutt: «All mail clients suck. This one just sucks less.»

Tidligere måtte du bruke andre programmer for å hente og sende e-post, men mutt har utviklet seg og nå går det som en lek å bruke den mot IMAP iallefall.

Slik går du frem for å installere og konfigurere mutt på en Ubuntu/Debian/Mint-klient: (takk til CrunchBang linux for denne oppskriften).

sudo apt-get install mutt muttprint urlview

Deretter oppretter du kataloger som mail kan lagres i:

mkdir .mutt .mutt/cache

Så oppretter du fila .muttrc i hjemmekatalogen din, og legger inn følgende innhold: (men med dine brukeravn og passord såklart)

# Brukerinformasjon
set from = «brukernavn@gmail.com»
set realname = «Ditt Navn»
set imap_user = «brukernavn@gmail.com»
set imap_pass = «passord»

# Mutt gjenkjenner dine «labels» hos gmail og kobler dem med lokale mapper. Mer utdypende info om det finnes her.
# Sendte meldinger lagres på gmail-serveren som standard, så du behøver ikke å ta hensyn til det.
set folder = «imaps://imap.gmail.com:993»
set spoolfile = «+INBOX»
set postponed =»+[Gmail]/Drafts»
set trash = «imaps://imap.gmail.com/[Gmail]/Trash»

# Lokale kataloger
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates

set smtp_url = «smtp://brukernavn@smtp.gmail.com:587/»
set smtp_pass = «passord»

#Tastatursnarveier
bind editor <space> noop
macro index gi «<change-folder>=INBOX<enter>» «Innboks»
macro index ga «<change-folder>=[Gmail]/All Mail<enter>» «All e-post»
macro index gs «<change-folder>=[Gmail]/Sent Mail<enter>» «Sendt e-post»
macro index gd «<change-folder>=[Gmail]/Drafts<enter>» «Kladd»

#Noe småtteri
set move = no  #Slutt å spør om å flytte leste meldinger til mbox!
set imap_keepalive = 900

#Ekstra greier – dette kan du forandre av hjertens lyst…

#Mailens header – viktig, men stort sett uinteressant
ignore «Authentication-Results:»
ignore «DomainKey-Signature:»
ignore «DKIM-Signature:»
hdr_order Date From To Cc

ignore *
unignore from: date subject to cc
unignore x-mailing-list: posted-to:
unignore x-mailer:

# Utseendet teller jo…
set markers=no # ikke sett «+» foran tekst som går over flere linjer
set pager_index_lines= 8 # Størrelsen på index-vinduet
set sort = ‘threads’ # Sorteringa av e-posten.
set sort_aux = ‘last-date-received’

# Editor – Vim såklart…
set editor=’vim + -c «set textwidth=72» -c «set wrap» -c «set nocp» -c «?^$»‘

# Alias…
set alias_file= ~/.mutt/aliases
set sort_alias= alias
set reverse_alias=yes
source $alias_file

Tilslutt endrer du rettigheter på fila, slik at ikke passordet ditt kommer på avveie:

chmod 700 ~/.muttrc

Voilá! Du skal nå være i stand til å kjøre Mutt fra terminal! Tilvalgsstoff: Søk litt på google for å se hvordan ulike mime-typer skal behandles automatisk i Mutt. Hva om f.eks. vedlegg som Word-dokumenter automatisk kjøres gjennom Antiword og lagres som ren tekst for deg? Eller alle bildevedlegg automatisk lagres i én katalog? Uante muligheter – eller for å bruke markedsplanen til underbuksegnomene i South Park:

  1. Use mutt on linux
  2. ????
  3. Profit!

Symantec Norton Antivirus

... bildet i seg selv sier vel nok om produktet.

Nortons informative "Gi tilbakemelding til oss"-hjemmeside - uten et eneste sted å gi tilbakemelding på.

Det ser ut til at de fleste nye maskiner i dag kommer med haugevis av programvare ferdig installert. Dessverre er mye av dette ting du må betale ekstra for, eller så er det bare i veien og er med på å gjøre maskina di treg. På en nylig installert Toshiba talte jeg over 15 ulike installerte programmer med navnet «Toshiba» først . Og ikke ett av dem var noe jeg hadde savnet.

En nylig installert Compaq hadde Norton Antivirus installert, men som alle andre «smarte» programmer er det nesten ingen innstillingsmuligheter eller muligheter til å se «under panseret» på den. Og dessuten koster den penger. Den avinstalleres til fordel for Microsoft Security Essentials – som enn så lenge er gratis…

Under avinstallasjonen av Norton var det en link til ei side hvor man kunne gi tilbakemelding til Symantec om hvorfor Norton blir avisntallert, og den valgte jeg å trykke på – jeg ville jo hjelpe dem til å bli bedre. Men utformingen på den sida sier vel mer enn nok om firmaet og hvor seriøst de tar slike tilbakemeldinger…?

Linux-server som fillagring

Jeg har nylig satt opp en ny server som sentralt fillager i et blandet miljø; dvs. med både Windows- og Linux-klienter. Kravene var ikke store; det skulle være rimelig og enkelt uten store krav til oppetid, så valget falt på en brukt maskin med Pentium 4-prosessor, raidkort, tre disker i raid og én disk til OS. Planen er at den i tillegg til å kunne fungere som sentralt fillager, også skal kunne fungere som en webserver med en Wiki på.

Valg av OS

Valg av OS var ikke enkelt.

  • Jeg kikket først på FreeNAS, men et par ting talte mot FreeNAS i dette tilfellet: FreeNAS har begrenset med andre GNU/Linux-verktøy tilgjengelig på boksen, slik som SQL-server, man-sider, vim og slikt som kan være greit å ha for enkel filbehandling via konsoll når Windowsmaskina ikke strekker til. Dessuten krever siste versjon av FreeNAS 4 GB RAM som minimum, noe jeg ikke hadde plass til eller behov for på den boksen jeg hadde funnet.
  • Ubuntu server ble deretter utprøvd, iom. at det finnes en god del dokumentasjon for denne. Problemet her var bare at Ubuntu server ikke ville gjenkjenne disken jeg ville installere OS på; en disk på 73 GB, tilkoblet onboard SATA-kontroller. Merkelig. Diskene tilkoblet RAID-kortet fant den uten problemer.
  • Debian ble 3. valg, og her fikset installasjonsprogrammet biffen.

Felles for installasjonen for både Ubuntu server og Debian var at dersom jeg valgte Engelsk som språk for installasjonen, og norsk tastatur, så ville den ikke gi meg norske tegn på konsollet. Locale-valgene jeg fikk var en mildt sagt broket liste, så jeg bet tilslutt i den sure delen av eplet og valgte norsk som språk for installasjonen. Deretter separerte jeg den ene disken i tre partisjoner: /, swap og /home, og installerte et minimalt system uten GUI.

Etter at installasjonen var ferdig og maskina startet på nytt, ble jeg ønsket velkommen av en suppe av norsk, svensk, dansk og engelsk språk – én av grunnene til at jeg ikke liker å velge norsk som språk i OSet. Etter litt Googling fant jeg frem til denne feilmeldingen på bugs.debian.org: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553678, og fant ut at løsningen er å editere fila /etc/default/locale:

#  File generated by update-locale
LANG=»nb_NO.UTF-8″
#LANGUAGE=»nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en»
LANGUAGE=»nb_NO:nb:no_NO:no:en»

Nettverk

Ettersom serveren fikk IP-adresse fra DHCP under installasjonen, bør vi nok endre dette. Det er tross alt ikke sååå artig å måtte gjette seg frem til IP-adressen til serveren hver gang den får ny. Dette gjør vi ved å editere /etc/network/interfaces:

 

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

Her bli det liv, raid-raid

…som vi bruker å si hver gang vi setter opp RAID her i Nord-Trøndelag.

Først fjernet jeg alle eksisterende partisjonstabeller og partisjoner på diskene ved hjelp av fdisk, og lagde én ny partisjon på hver disk. mdadm er det du behøver deretter – og det er ikke vanskelig. For å opprette et raid kalt /dev/md0, i raid 0 med de tre partisjonene sda1, sdb1 og sdc1, og deretter opprette et filsystem av typen ext4 på raidet,  brukte jeg følgende kommandoer:

mdadm -Cv /dev/md0 -l0 -n3 /dev/sd[abc]1

mkfs -t ext4 /dev/md0

Deretter må katalogen /mnt/raid opprettes og gies rettigheter, og /etc/fstab må få seg ei linje som viser at den skal montere raidet under oppstart:

mkdir /mnt/raid && chmod 777 /mnt/raid

echo «/dev/md0  /mnt/raid  ext4  defaults  1  2» >>  /etc/fstab

Windows-nettverk: Samba

Smb-protokollen som Microsoft bruker har fått sin gjenpart i samba på GNU/Linux. Samba kan brukes ganske sentralt i nettet for autentisering osv, eller den kan brukes helt i det små til å kun dele ut kataloger og printere på nett. Her går vi fpr den enkleste løsningen, nemlig å bruke samba til å dele ut én katalog som et felles lagringssted.

Etter at samba er installert, må fila /etc/samba/smb.conf få beskjed om at raidet skal deles ut på nettet.

[raid]
comment = Felles lagring
browseable = yes
guest ok = no
writable = yes
valid users = brukar1 brukar2
path = /mnt/raid
create mask = 666
directory mask = 775

Brukere som skal få tilgang til maskina legges til ved hjelp av kommandoen smbpasswd -a brukernavn.

Andre lenker av interesse om dette temaet:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553678

Kjør deler av Linux fra RAM

Hepp! Jeg har hatt lynnedslag i nærheten, og dermed døde et par datamaskiner. Jeg har nå skrapt sammen noe fra kjelleren, og har satt opp ei ny maskin til daglig bruk; en gammel Dell-server med Pentium 4-prosessor. Heldigvis hadde jeg en del RAM liggende, og fikk satt inn 4 Gigabyte i maskina.

Allikevel går jo ikke ting superraskt, så neste forsøk, etter å ha fått tak i et pci-lydkort og muligens et pci-skjermkort (8 mb minne på et onboard-skjermkort er ikke akkurat noe å slenge bestemor i veggen med), vil bli å kopiere deler av operativsystemet over til RAM under oppstart. Fant følgende oppskrift på et Gentoo-forum:

Why dont try the simplest way:

– create a ramdisk (greater than du -sh /usr/lib), i.E.: mount none -t tmpfs /mnt/ramdisk
copy all files from /usr/lib to the ramdisk, i.E.: cp -a /usr/lib/* /mnt/ramdisk
– mount the ramdisk to /usr/lib, i.E: mount -o bind /mnt/ramdisk/ /usr/lib/
– if you like to update your system, just umount /usr/lib and /mnt/ramdisk, update the system and do the stuff above again

(this can simple do in the background in /etc/conf.d/local.start)

Skal prøve det ut med tid og stunder!

Hardt virusangrep – hva gjør jeg?

Hvis Windows-maskina di er hardt angrepet av et virus, så er det aller best å la maskina starte fra en CD eller USB-pinne og la disse gjøre en scannejobb. Starter du fra CD eller USB er det stor sjanse for at du unngår å starte viruset, iom. at dette ligger i operativsystemet installert på harddisken.

Microsoft har kommet med en beta-versjon av en bootbar CD: http://connect.microsoft.com/systemsweeper

Avira Boot-cd: http://dl.antivir.de/down/vdf/rescuecd/rescuecd.iso

AVG rescue-CD (bygger på Linux): http://www.avg.com/us-en/avg-rescue-cd

F-secure: http://www.f-secure.com/linux-weblog/files/f-secure-rescue-cd-release-3.00.zip

Bit-defender boot-disc: http://download.bitdefender.com/rescue_cd/

Kaspersky: ftp://rescuedisk.kaspersky-labs.com/rescuedisk/

Exif-informasjon i bilder

Som de fleste vet lagres en hel del informasjon inne i bildene, som såkalt EXIF-informasjon. Dersom det digitale kameraet ditt har riktig innstilt klokke, kan dette være en god måte å få sortert en større haug bilder på. Datostempelet på selve fila kan i beste fall være misvisende for når bildet er tatt, mtp. at dette kan være satt da du kopierte fila, lagret den etter en redigering osv.

Det finnes mange måter å få ut EXIF-informasjon på, og i de fleste OS kan du høyreklikke på bildet og få ut litt utvidet informasjon. Dette blir imidlertid litt tungvint dersom du skal bruke det for å sortere mange bilder. Det er her «imagemagick» kommer inn i bildet. Imagemagick er en kommandolinjeapplikasjon som kan brukes til utallige operasjoner på bilder, og den er veldig lett scriptbar; bl.a. brukes denne i kulissene i mange webalbumer .

Etter at imagemagick er installert, kan du finne all EXIF-info fra ei fil med følgende kommando:

identify -format %[exif:*] filnavn.jpg

Her er det mye du kan leke deg videre med, men skal du kun hente ut dato og klokkeslett kan det gjøres med følgende kommando:

identify -format %[EXIF:DateTime] filnavn.jpg

For å bruke denne informasjonen til å sortere lager du så et «for-loop»-script som tar alle filer med endingen jpg, kjører kommandoen på hver fil, tar ut f.eks. måned og år vha. awk, sjekker om det finnes en katalog med dette navnet og flytter fila inn i katalogen etter at den er opprettet.

Linuxklient mot Windows-server

Så har jeg nok en gang satt opp en Linuxklient som skal koble seg opp mot et windows-share, og nok en gang har jeg lett lenge og vel etter en enkel måte å gjøre dette på. I Windows er dette enkelt; du velger «Map network drive» og huker av for at valgte stasjonsbokstav skal kobles opp mot samme share igjen ved omstart av maskina. I Linux er det, så vidt jeg hittil har sett, ingen som har greid å gjøre det like enkelt.

Det enkleste er nok fortsatt å editere på fila som sørger for oversikt over monterte filsystemer, /etc/fstab

For å knytte den delte katalogen delt på serveren 192.168.1.10 opp imot katalogen server i hjemmekatalogen til brukeren brukar, legger jeg inn følgende streng i /etc/fstab:

//192.168.1.10/delt /home/brukar/server cifs username=brukar,password=hemmelig,uid=brukar,gid=brukar,iocharset=utf8,users 0 0

Første del angir servernavnet, andre del angir lokalt monteringspunkt og tredje del spesifiserer filsystemet til cifs (common internet file system, tidligere kjent som samba eller smb). Deretter kommer brukernavn og passord på serveren, info om hvilken brukerid og brukergruppe man skal koble opp som, samt at filsystemet skal leses som utf8 (noe som er greit mtp. å få de sær-nordiske tegnene til å fungere). Argumentet users sikrer at brukere kan koble til og -fra nevnte montering uten root/sudo-tilgang, og er vel strengt tatt ikke nødvendig.

Dualboot – endre fra GRUB til BURG og få et bedre grensesnitt

Grub har vært standard som bootloader for GNU/Linux de senere årene, og det med god grunn.Men grafisk sett begynner den kanskje å bli litt utdatert; kidza i dag vil jo ikke se konsolltekst, de vil ha store ikoner og grelle farger. Og helst ikke vite hva som befinner seg bak, men det er kanskje en annen diskusjon…

I Ubuntu/Mint eller andre Debian-derivater bør det holde med følgende kommandoer:

sudo add-apt-repository ppa:n-muench/burg
sudo apt-get update
sudo apt-get install burg burg-common burg-themes burg-themes-common burg-emu burg-pc

kilde: http://www.linuxbsdos.com/2011/06/04/how-to-replace-grub-with-burg-on-linux-mint-11/

Nå skal du altså da ha greid å endre bootloaderen. For en enklere måte å konfigurere den på i ettertid, kan du bruke «Super Boot Manager». Den installeres med følgende kommandoer:

sudo add-apt-repository ppa:ingalex/super-boot-manager
sudo apt-get update
sudo apt-get install buc super-boot-manager

Kilde: http://www.ubuntugeek.com/super-boot-manger-make-easier-and-intuitive-configuration-of-grub-burg-and-plymouth.html

Older posts

© 2017 friheim.com

Theme by Anders NorenUp ↑