Ich wollte nur [...] und dann ist das Universum explodiert.

Projects
Books
Archive
About









    Permalink
  1. Web | Paste-Service via CommandLine (Sprunge.us)

    Sprunge.us ist ein Paste-Service den ich heute von Chris gezeigt bekommen habe. Sprunge ist aber außerdem noch _awesome_, weil er ohne Registrierung oder Umstände alles annimmt was man ihm via curl -F übergibt. Von den Entwicklern ist das wie folgt vorgesehen:

    <command> | curl -F 'sprunge=<-' http://sprunge.us
    INFO: Code: gJIJ
    INFO: URL: http://sprunge.us/gJIJ

    Und man kann unter der ausgespuckten URL den SourceCode begutachten. Den curl-Aufruf finde ich persöhnlich ziemlich lang und nicht wirklich eingängig. Das fanden anscheinend auch die Entwickler von “sprang“. Usage ungefähr so:

    cat /usr/local/scripts/script.sh | sprang
    INFO: Code: gJIJ
    INFO: URL: http://sprunge.us/gJIJ

    sprang ist ein Python-Script das mit dem sprunge.us Pastebin-Dienst interagieren kann. Man kann ihm zum Bleistift auch mit sprang -f ein Fileübergeben, mit -L Logfiles definieren oder ähnliches bewerkstelligen (genaueres mit sprang –help). Durch die Installation des python-setuptools bzw dem Kommando

    aptitude install python-setuptools; easy_install sprang

    wird der Helfer für den Dienst nutzbar. Ich muss ehrlich gestehen ich bin kein Fan von Fremdpaketsystemen. Aber diesbezüglich muss es eben sein. Alternative ist natürlich ein Bash-alias

    alias sprang="curl -F 'sprunge=<-' http://sprunge.us"

    Wobei somit die Restfunktionalität des sprang-scripts verloren geht. Besonders schön ist auch das Syntax Highlightning. Je nach Eingespeisten Source kann man der URL beispielsweise ein ?bash oder ?py mitgeben

    http://sprunge.us/gJIJ?bash

    http://sprunge.us/gJIJ?py

    und erhält schön bunt und leserlich ge-Highlightete Versionen des gesendeten.


  2. Permalink
  3. Python | cryzed bashing

    nerd-battle
    disziplin: pythonjamsession

    #!/usr/bin/python
    def omgwtfbbq():
    while True:
    s = raw_input('cryzeds mom is ')
    if s == 'the end of the world':
    break
    else:
    print 'this ones for you chris: '
    print 'your mom is', s
    continue
    omgwtfbbq()

    Mit Highlightning und Tabs: http://dpaste.com/97809/
    siehe auch cryzed.de


  4. Permalink
  5. Backup | Bash vs. Python

    Mein erstes BackupScript war in Python geschrieben. Das sah dann wie folgt aus:

    #!/usr/bin/python
    import os
    import time
    quellen = ['/home/ /etc/ /var/www/ /root/ ']
    ziel_verzeichnis = ('/media/backup/backup/')
    ziel = ziel_verzeichnis + time.strftime('%Y-%m-%d') + '.tar.gz'
    zip_befehl = 'tar -czvf %s %s' % (ziel, ' '.join(quellen))
    loggingok = 'echo " " >> /var/log/backup.log; echo `date +%d-%m-%Y-%H:%M:%S` --- NEW Action ---  >> /var/log/backup.log; echo `date +%d-%m-%Y-%H:%M:%S` Erfolgreich gebackupped!  >> /var/log/backup.log; echo `date +%d-%m-%Y-%H:%M:%S` --- END Action ---  >> /var/log/backup.log '
    loggingno = 'echo " " >> /var/log/backup.log; echo `date +%d-%m-%Y-%H:%M:%S` --- NEW Action ---  >> /var/log/backup.log; echo `date +%d-%m-%Y-%H:%M:%S` Backup fehlgeschlagen! >> /var/log/backup.log; echo `date +%d-%m-%Y-%H:%M:%S` --- END Action ---  >> /var/log/backup.log '
    if os.system(zip_befehl) == 0:
    print 'Erfolgreiche Sicherung nach', ziel
    os.system(loggingok)
    else:
    print 'Sicherung fehlgeschlagen!'
    os.system(loggingno)

    Aber irgendwie… wurde mir das bissl zu blöd. Alle meine Skripte laufen auf Bash. Warum beim Backuppen aus der Reihe tanzen?
    Eigentlich wäre das ganze schon nach _einer_ Zeile gelaufen. Wenn ich nicht noch die LoggingFunktion hätte.

    #!/bin/bash
    tar -czvf /media/backup/backup/`date +%Y-%m-%d-%H-%M`.tar.gz /home /etc /var/www /root
    return=`echo $?`
    if [ $return -eq 0 ]; then
    echo " " >> /var/log/backup.log
    echo `date +%d-%m-%Y-%H:%M:%S` --- NEW Action ---  >> /var/log/backup.log
    echo `date +%d-%m-%Y-%H:%M:%S` Files Erfolgreich gebackupped!  >> /var/log/backup.log
    echo `date +%d-%m-%Y-%H:%M:%S` --- END Action ---  >> /var/log/backup.log
    else
    echo " " >> /var/log/backup.log
    echo `date +%d-%m-%Y-%H:%M:%S` --- NEW Action ---  >> /var/log/backup.log
    echo `date +%d-%m-%Y-%H:%M:%S` File Backup fehlgeschlagen! >> /var/log/backup.log
    echo `date +%d-%m-%Y-%H:%M:%S` --- END Action ---  >> /var/log/backup.log
    mail -s "Backup fehlgeschlagen!" root@zwetschge.org < /var/log/backup.log
    fi

    Ich weiss nicht. Mir gefällts besser.


  6. Permalink
  7. IDE Festplatten, Backups und Skripte

    Zwetschge hat gestern eine zusätzliche Festplatte für Backups bekommen die ich per Python und Cron automatisch jeden Mittwoch um 4:01 Uhr machen lassen möchte. Nach ein paar Master/Slave Spielereien lief die Platte dann auch. Wichtige Erkenntnis dabei:

    hda -> master

    hdb -> slave

    hdc -> master

    hdd -> slave

    mount /dev/hdd /mount/backup

    Einhängen wäre damit schonmal geschafft.

    Mein nettes Pythonskript:

    #!/usr/bin/python
    import os
    import time
    quellen = ['/home /etc /var/www ']
    ziel_verzeichnis = ('/media/backup/backup/')
    ziel = ziel_verzeichnis + time.strftime('%Y%m%d') + '.tar.gz'
    zip_befehl = 'tar -czvf %s %s' % (ziel, ' '.join(quellen))
    if os.system(zip_befehl) == 0:
    print 'Erfolgreiche Sicherung nach', ziel
    else:
    print 'Sicherung fehlgeschlagen!'

    Wird nun via cronjob (python /etc/backup) ausgeführt, und das jeden Mittwoch um 4:01 Uhr:

    01   04   * * 3 root python /etc/backup


  8. Permalink
  9. Gobby | Multi Cursor File Editing

    Seit einigen Tagen spielen CrackPod und ich gleichzeitig zusammen an PythonDateien herum. Ich hab auch noch nicht verstanden wie das genau funktioniert.

    Hier mal der Link zu Gobby: http://gobby.0×539.de/trac/

    Gobby is a free collaborative editor supporting multiple documents in one session and a multi-user chat. It runs on Microsoft Windows, Mac OS X, Linux and other Unix-like platforms.

    Mithilfe eines Passworts lässt sich dann die Session betreten und mehrere Dokumente bearbeiten/anlegen. Dadurch sind wir dann auf die Idee gekommen uns unsere eigene kleine Welt zusammenzubasteln.

    
    #!/usr/bin/python
    
    class Person:
    	bevoelkerung = 0
    	def __init__(self, name, url):
    		self.name = name
    		self.url = url
    		print'%s Wird geboren' % self.name
    		Person.bevoelkerung +=1
    
    	def blog(self):
    		print 'Visit me on %s'  % self.url
    
    	def __del__(self):
    		print '%s ist tot!' % self.name
    		Person.bevoelkerung -=1
    
    		if Person.bevoelkerung == 0:
    			print'ich bin der letzte'
    		else:
    			print'Es gibt noch %d Leute.' % Person.bevoelkerung
    
    	def sagHallo(self):
    		print 'Servus ich bin %s' % self.name
    	def wieViele(self):
    		if Person.bevoelkerung == 1:
    			print 'ich bin ganz alleine hier*angst*'
    		else:
    			print 'Es leben hier %d Leute' % Person.bevoelkerung
    
    noqqe = Person('noqqe', 'noqqe.de' )
    noqqe.blog()
    noqqe.sagHallo()
    noqqe.wieViele()
    crackpod = Person('crackpod', 'crackpod.bplaced.net' )
    crackpod.sagHallo()
    crackpod.blog()
    crackpod.wieViele()
    noqqe.sagHallo()
    noqqe.wieViele()
    Julie = Person('Julie', 'julie.hat-gar-keine-homepage.de' )
    Julie.sagHallo()
    Julie.blog()
    Julie.wieViele()
    noqqe.__del__()
    noqqe.wieViele()
    

    oder wie immer hier : http://paste.pocoo.org/show/79759/

    Ausgabe sieht dann ungefähr wie folgt aus:
    noqqe Wird geboren
    Visit me on noqqe.de
    Servus ich bin noqqe
    ich bin ganz alleine hier*angst*
    crackpod Wird geboren
    Servus ich bin crackpod
    Visit me on crackpod.bplaced.net
    Es leben hier 2 Leute
    Servus ich bin noqqe
    Es leben hier 2 Leute
    Julie Wird geboren
    Servus ich bin Julie
    Visit me on julie.hat-gar-keine-homepage.de
    Es leben hier 3 Leute
    noqqe ist tot!
    Es gibt noch 2 Leute.
    Julie ist tot!
    Es gibt noch 1 Leute.
    ich bin der letzte
    crackpod ist tot!


  10. Permalink
  11. Python Backup Skript

    Sozusagen das mein erstes Nutzskript in python :) Regelmäßig gemacht ist das schonmal ne super Sache :)

    (Ich weiss es ist unsinn das /home Verzeichnis nach /home zu backuppen :) aber ist auf dem EeePC ja nur zu Testzwecken.)

    [sourcecode language='python']
    #!/usr/bin/python

    import os

    import time

    quellen = [ '/home/noqqe' ]

    ziel_verzeichnis = (‘/home/noqqe/backup/’ )

    ziel = ziel_verzeichnis + time.strftime( ‘%d%m%Yum%H:%M’ ) + ‘.zip’
    zip_befehl = ‘zip -qr %s %s’ % (ziel, ‘ ‘.join(quellen))

    if os.system(zip_befehl) == 0:

    print ‘Erfolgreiche Sicherung nach’, ziel

    else:

    print ‘Sicherung fehlgeschlagen!’[/sourcecode]

    Hier nochmal mit Syntax Highlightning und mit _wichtigen_ Einrückungen.

    http://paste.pocoo.org/show/79569/


  12. Permalink
  13. Ich lerne Python

    Auf den Trichter hat mich CrackPoD gebracht :) Anhand einer PDF für Python Neulinge

    http://abop-german.berlios.de/

    bringe ich mir zur Zeit Pyhton bei! Ist eigentilch Recht einfach. Aber ich glaube das liegt auch ein bisschen an meinen 2 Jahren C++ in der Berufsschule. Hier meine ersten paar kleinen Skripte:

    Variablen und Operatoren

    #!/usr/bin/python

    laenge = 5
    breite = 2
    flaeche = 2 * (laenge + breite)
    print 'laenge' , laenge
    print 'breite' , breite
    print 'flaeche ist: ' , flaeche

    Schleifen und Breaks


    #!/usr/bin/python


    while True:
    s = raw_input ('geben sie etwas ein ')
    if s == 'ende' :
    break
    if len(s) < 3:
    continue
    print 'Laenge ist ausreichend', len(s)
    print 'fertig'

    Globale und Interne Variablen


    #!/usr/bin/python


    def funk():
    global x
    print 'x ist', x
    x = 2
    print 'lokales x ist jetzt' , x

    x = 50
    funk()
    print 'der wert von x ist' ,x

    und hier das erste Skript mit Unterhaltungswert :D
    Zahlenraten.

    #!/usr/bin/python

    zahl = 23
    weiter = True

    while weiter:
    geraten = int(raw_input('geben sie eine zahl ein'))

    if zahl == geraten:
    print 'glueckwunsch, du hasts!'
    weiter = False
    elif geraten < zahl:
    print 'nein die zahl ist etwas hoeher'
    else:
    print 'nein die zahl ist etwas niedriger'

    else:
    print 'schleife beendet'
    print 'Fertig'

    Ich hoff ich kann bald produktiv damit arbeiten :)