Tips v.9

Tänkte försöka ge er ett litet tips i veckan. Dels för att försöka håla liv i mitt bloggande och för att försöka få er att återkomma och kanske till och med diskutera lite.

Denna vecka blir det ett grymt användbar python oneliner. De flesta linux distar idag kommer med python förinstallerat och hur ofta har man inte bara velat dela med sig av data men kanske inte  har tillgång till scp,ftp eller liknande.

[cc lang=”text”]python -m SimpleHTTPServer[/cc]

Detta startar en webserver på port 80 som server katalogen du startar serven ifrån. Servern kan styras till valfri port genom att lägga till port nummert .
[cc lang=”text”]python -m SimpleHTTPServer 8080[/cc]

Det var ett tag sedan…

Har äntligen fått tillbaka min laptop (blev en ny sony vaio) och just nu körs Archlinux med ext4 filsystem och aes kryptering på sammtliga partitioner.

Python programmeringen ligger lite  i  dvala då jag nu läser kvällskurser i java. Har migrerat vår cvs på jobbet till svn vilket var mer jobb än vad jag trodde och (bugg i svn sourcen). Ska skriva en utförlig post om detta när tid ges.

Användbara oneliners

Oneliners är alltid lite roligt att briljera med men en del av dem är ofta riktigt använbara. Tänkte visa en enkel oneliner som jag ofta finner användbar då jag t.ex ska felsöka i våra mediaspelare på jobb som innehåller en otroligt strippad linux dist med massa standard kommandon bortagna.

Oneliner’n används t.ex när man vill se om en fil ökar i storlek eller om man vill kolla hur fort filer skapas i en katalog.
[cce lang=”text”]while true ;do ls -al filnamn ;sleep 3; done[/cce]
Som du säker ser så är detta en evighets loop som kör “ls -al” var 3dje sekund tills du avbryter. While loopen kan givetvis användas med valfria kommandon och bör kännas till av alla som spenderar tid i en terminal.

Samma information kan uppnås med watch kommandot men detta saknas i min miljö.

Jämför gärna med att köra följande:
[cce lang=”text”]watch -n 3 “date; ls -al filnamn”[/cce]

GIT

Jag har nu skaffat mig eget utrymme för mina configs och project på http://github.com. Git är ett versions kontroll system helt i opensource och vill du veta mer så läs här http://git.or.cz/

Så för att checka ut allt material till din dator behöver du installer git sen skriva följande:
[cce lang=”text”]git clone git://github.com/h-kan/projects.git[/cce]

Under Länkar till höger så hittar du URL’en till min git om du bara vill browse’a runt.

Awesome 3

För ett par dagar sedan började jag testa awesome3 från git’en jag blev förälskad direkt… Gnome snurrar på mitt arbete och det funkar bra. Hemma på laptopen har det tidigare varit fluxbox för hela slanten…

Har använt mig av Gigamos confar och justerat dessa efter mina behov… Efter som jag nu sitter i vim med python när tid finns över så fullkomligt älskar jag tiling windows… Att man nu i awesome även kan använda deras eget notify lib vilket underlättar då jag kör pidgin och sylpheed mail och nu får en liten fin bild i hörnet när något event sker.

Litet smakprov på hur det ser ut på min desk nu:

Project 1 (version och uptime funktionerna)

Första koden är skapad och den gör sitt jobb.. är osäker till om detta är den optimala lösningen men pågrund av att det rör sig om 13 klienter så lär det inte uppstå några problem.
[cce lang=”python”]
#!/usr/bin/python
# Check which version and uptime on the clients

import os
import sys
import ftplib

hosts = ["192.168.15.101",
"172.16.104.19",
"192.168.1.111",
"192.168.1.112",
"172.16.104.21",
"192.168.1.113",
"192.168.1.114",
"192.168.15.100",
"172.16.104.16",
"192.168.1.115",
"192.168.1.116",
"10.11.3.130"]

## Download /etc/borderlineversion and print the content of it

def getversion(ftp):
file = "borderlineversion"
ftp.cwd("/etc")
ftp.retrbinary("RETR " + file, open(file, "wb").write)
file = open("borderlineversion")
for line in file:
print ("Version: " +line.strip())

## Download /proc/uptime and than parse out the time from it and convert it to
## float and dived with 3600

def getuptime(ftp):
file = "uptime"
ftp.cwd("/proc")
ftp.retrbinary("RETR " + file, open(file, "wb").write)
file = open("uptime")
for line in file:
time = line.split()[0]
timefloat = float(time)
uptime = timefloat / 3600
print "Uptime: ", "%.2f" % uptime, "timmar\n"

## Loop through the list of hosts
for x in hosts:
print "Hosts: ", x
try:
ftp = ftplib.FTP(x)
ftp.login("****", "****")
except ftplib.error_perm, e:
print "Login failed %s" % e
sys.exit()
except socket.error, e:
print "Connection failed %s" % e
sys.exit()
getversion(ftp)
getuptime(ftp)

## clean up after all the work

ftp.close()
os.remove("borderlineversion")
os.remove("uptime")
[/cce]

Project 1

Har skissat ihop ett program att koda på vilket även kommer komma i användning i verkliga livet. Programet har som syfte på begäran sammla in information från 13 enheter och även kunna koppla upp sig mot en databasen klienterna hämtar information ifrån och ändra parametrar i den.

Funktionerna kan byggas ut med tiden men grund tanken är:

Funktioner som utförs mot enheterna:

  • visa enheternas version nummer
  • visa enheternas uptime
  • tanka hem sammtliga loggar från enheter och spara dem i varsin katalog.
  • packa upp och merge’a loggfilerna till en logg
  • söka igenom loggen efter omstarter och visa dessa

Funktioner som utförs mot Servern:

  • Tanka upp ny version
  • Uppgradera klienter till version
  • Nergradera klienter till version
  • Aktivera screen-blanking
  • Avaktivera screen-blanking

Jag kommer antagligen att bygga på listan efter hand och även kanske designa ett gui till programet.

All kod kommer postas här och om någon skulle läsa så är all kritik välkommen.