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.