Posts mit dem Label Script werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Script werden angezeigt. Alle Posts anzeigen

Donnerstag, 25. September 2008

Automatische Sicherung mit tar auf FTP-Server

Ich stand in der letzten Zeit vor dem Problem, eine gute Sicherungsmethode zu finden, welche performant, sicher und unkompliziert von statten geht.
Die beiden ersten Punkte habe ich denke ich erfüllt, am dritten Punkt müsste ich noch arbeiten :)
In diesem Fall wird per Shell-Script eine Sicherung aller relevanter Daten erstellt, gepackt, komprimiert und anschließend auf einen FTP-Server hochgeladen. Wer es brauchen kann, soll es sich gerne kopieren.

#!/bin/sh

# Festlegen der für das Script nötigen Variablen
dateiname="backup.tar.gz"
mysql=`date "+mysql_backup-%Y-%m-%d.sql"`
apache=`date "+apache_backup-%Y-%m-%d.tar.gz"`
datum=`date +%Y-%m-%d`

cd /

# Erstellen der verschiedenen Sicherungen
# MySQL-Komplettsicherung
# Apache-Configsicherung
mysqldump -uuser -ppasswort --all-databases > $mysql
tar cplvzf $apache /etc/apache2
tar cplvzf $dateiname /

echo "Backup erstellt!"

# Erstellen eines neuen Log-Eintrags in die backup.log
echo $dateiname $datum >> backup.log

# Verbindung zum FTP-Server und Hochladen der Dateien
ftp -n 150.50.50.0 << END_OF_FTP
user heinz_user heinz_passwort
put $dateiname
put backup.log
quit
END_OF_FTP

echo "Daten erfolgreich hochgeladen!"

# Löschen der auf dem Server erstellten temporären Dateien
cd /
rm $dateiname
rm $mysql
rm $apache

Dienstag, 23. September 2008

Referat - Scriptsprachen

Kürzlich musste ich für die Schule ein Referat zum Thema Scriptsprachen erstellen. Dieses enthält alles relevante zu den wichtigsten Sprachen, wie kleine Scriptbeispiele, die Geschichte, Anwendungsgebiete etc.

Sollte jemand dieses Referat gebrauchen können, so kann er sich gerne die Informationen herausfiltern, die er benötigt.

Das Referat werde ich hochladen, sobald die vollständige Benotung vonstatten gegangen ist.

Dienstag, 2. September 2008

"Hangman" - Mein erstes Python-Projekt

Nachdem mein erster, nur auf Modulbasis bestehender Versuch ein Hangman-Spiel zu schreiben zwar funktioniert hat, in programmiertechnischer Hinsicht allerdings ein Fiasko war habe ich diesen mit Hilfe des deutschen Python-Forums (nur zu empfehlen!) neu geschrieben bzw. so viel geändert, dass im Grunde genommen ein neuer Code daraus entstanden ist :)

Die wichtigsten zusammenhängenden Funktionen sind in Hauptfunktionen unterteilt, um eine bessere Übersicht und Funktionalität gewährleisten zu können. Zur etwas besseren visuellen Darstellung wird auch eine Funktion ausgeführt, welche in kleines Hangman'chen anzeigt.

Der Code ist mit Sicherheit nicht "gut" oder "perfekt", aber vielleicht hilft es ja dem ein oder anderen. Verbesserungsvorschläge sind natürlich auch gerne gesehen :)

Den Code gibts hier

from random import shuffle

datei = open('wort.txt', 'r')
var = datei.read()
words = var.split(" ")
datei.close()

def hangman_show(a, b):
hangman = ["-----", "|/ |", "| o ", "| \O/ ", "| / \ "]
for i in range(a, b):
print hangman[i]

def input_char():
char = raw_input('\nBitte geben Sie einen Buchstaben ein:')
while len(char) > 1 or char == '':
char = raw_input('Bitte geben Sie einen EINZELNEN Buchstaben ein:')
char = char.upper()
return char.swapcase()

def output_word(wort, buchstaben):
daneben = 0
for stelle in wort:
if stelle in buchstaben:
print stelle,
else:
print "_",
daneben += 1
return daneben

def guess_chars(versuche, words):
shuffle(words)
wort = words.pop()
fehler = 0
buchstaben = ''
while fehler < versuche:
char = input_char()

if char in wort:
print 'Dieser Buchstabe ist richtig!'
if char not in buchstaben:
buchstaben += char
if output_word(wort, buchstaben) == 0:
print '\nSie haben das Wort erraten!'
break
else:
print 'Dieser Buchstabe ist schon vorhanden!'
else:
print 'Dieser Buchstabe ist falsch!'
hangman_show(0,fehler+1)
fehler += 1
if fehler == versuche:
print '\nSie haben verloren!'

nochmal = ''
while nochmal == 'j':
guess_chars(5, words)
nochmal = raw_input('Wollen Sie noch einmal spielen? (j/n)')

Freitag, 29. August 2008

Datenbankabfrage über mehrere Tabelle ohne Joins

Nach mehreren Stunden herumprobieren habe ich endlich einen Befehl gefunden, der mein Problem löst. Eigentlich sehr einfach, aber finden muss man ihn erst einmal :)

Ich spreche vom UNION-Befehl.

Problem: Datenbankabfrage über mehrere gleich aufgebaute Tabellen, zum einen um Übersicht zu gewähren und zum anderen, weil in Zukunft enorm viele Datensätze aufgenommen werden, welche in einer Tabelle zu einem Wust von Daten führen würden.

Ich habe mehrere Befehle und Sortiermethoden ausprobiert, z.B. die einzelnen Abfrage-Arrays nach den Abfragen zu verketten, um die Arrays selber zu ordnen nur keine der Möglichkeiten war zufriedenstellend.

Der UNION-Befehl machte alles sehr einfach und mich glücklich :)

Beispiel: Alle Datensätze sollen abgefragt werden

Tabelle abc
Tabelle def

(SELECT * FROM abc) UNION (SELECT * FROM def)