Mein Proxy-Server

Also erst einmal eine kleine Vorgeschichte:

Ich wohne in einem ländlichen Gebiet (Ork) und habe zirka eine 1000-er DSL-Leitung…
… leider nutzt mein Bruder nun die Leitung um sein “GuildWars” zu spielen, außerdem habe ich mein W-Lan mit einem zweiten SpeedTouch-Router erweitert, so dass ich im ganzen Haus W-Lan habe und auch meine Schwester, Mutter und Vater online gehen können, welche natürlich zusätzlich die Leitung ausbremsen. Zudem habe ich da noch einen kleinen Xen-Server in meinem Schrank eingebaut aber dazu gleich… :)

Also hab ich mir gedacht, dass ich einen Proxy aufstelle, sodass zumindest Bilder, Updates, … welche jemand bereits heruntergeladen hat, nicht noch einmal aus dem Internet geladen werden müssen.

Eines der Kriterien, die der Proxy-Server erfüllen sollte war, dass ich keine Werbung mehr auf den Webseite haben wollte, dann am besten noch Anonym surfen kann, des weiteren wollte ich es irgendwie hin-bekommen, dass ich meinen kleinen V-Server, auf welchem auch diese Webseite läuft in das ganze geschehen mit einbeziehen kann, um dessen Download-Speed zu nutzen und dass alles ohne sich ständig von intern am Proxy Authentifizieren zu müssen.

Kommen wir nun zur Umsetzung des ganzen:


mein_proxy
mein Proxy


Mein Home-Netz:

SpeedTouch 585i (192.168.1.254) -> DMZ -> Endian Firewall (192.168.1.220 und 192.168.0.254) (Xen-Server)

Xen-Server: (Lenny – sid)
– Meister-Mail (*extern)
– Meister-Nagios (*intern)
– Meister-Proxy (*intern)
– Meister-Backup (*intern)

[intern = 192.168.0.0/24 und extern = 192.168.1.0/24]

Endian Firewall:
– Firewall / Portweiterleitung (NAT)
– transparenter Proxy-Server (squid)
– Inhaltsfilter (Dansguardian) – deaktiviert
– HTTP Antivirus (havp) – deaktiviert
– transparenter SMTP-Server (postfix)
– Anti-Virus (amavis+clamav)
– Anti-Spam (spamassassin)
– DHCP-Server (dhcpd) (192.168.0.1 – 192.168.0.100)
– DNS-Server (dnsmasq)
– Intrusion Detection System (SNORT) – deaktiviert
– Dynamischer DNS Updat – deaktiviert
– Trafficshaping – deaktiviert
– SIP-Proxy – deaktiviert
– VPN Server (OpenVPN & IPSec) – OpenVPN aktiviert

Die Firewall kann per Web-Oberfläche aus dem “grünen”-Netz (192.168.0.0/24) erreicht werden, zudem wurde die Konfiguration zusätzlich auf der Konsole verändert, so dass der Proxy z.B. nicht preisgibt, dass er etwas mit der Anfrage zu tun hat, somit wird der verwendete Browser/Betriebssystem/Auflösung/Herkunft verschleiert. Ausserdem wurde mithilfe der Weboberfläche eingestellt, dass es einen “Vorgelagerter Proxy” gibt, somit wird die Anfrage ggf. an Meister-Proxy weitergeleitet, wenn diese nicht bereits im Cache des Proxys zu finden ist.

Meister-Proxy:
– Proxy-Server (squid3) [127.0.0.1:8080]
– 2X Proxy-Server (ziproxy) [127.0.0.1:8081 und 192.168.0.232:3128]

Auf Meister-Proxy trifft die Verbindung als erstes auf den ersten Ziproxy-Server, welcher Bilder vom Format “JPEG 2000” zurück in “JPEG” konvertiert, warum dies nötig ist erschließt sich gleich… der nächste Proxy an den die Anfrage gerichtet wird ist ein Squid-Proxy, dieser ist so eingestellt, dass er nicht die aktuellen Updates, Download usw. wie der Proxy auf der Endian Firewall zwischenspeichert. Dieser Proxy speichert Dateien, welche häufig angefragt werden. Dieser leitet die Anfrage nun zum letzten Proxy in diesem Netzwerk weiter. Der zweite Ziproxy-Server empfängt von meinen V-Server HTML-Dateien, welche mit gzip komprimiert sind und Bilder welche im “JPEG 2000” konvertiert und somit verkleinert wurde, leider können dies nicht alle Browser darstellen bzw. verarbeiten, diese Ziproxy-Server macht ein de-gzip und somit erschließt sich auch der Sinn der zweiten Ziproxy-Servers, welcher die Bilder wider zurück konvertiert.

V-Server:
– Proxy-Server (privoxy) [127.0.0.1:8181]
– Proxy-Server (ziproxy) [:3128]

Der V-Server nimmt die Anfrage entgegen, und komprimiert die Daten mittels gzip und wandelt die Bilder in das Format “JPEG 2000” um, dann wird die Anfrage noch an den letzen Proxy geleitet, welcher die Werbung, Popups usw. entfernt und somit keine Werbung über meine langsame Leitung übertagen werden muss.

Zusammenfassung:
1.) Endian Firealll: Squid – Cachen von akuellen Dateien (z.B. Updates)
2.) Meister-Proxy: Ziproxy – dekomprimieren von Bildern für den Enduser
3.) Meister-Proxy: Squid – Cachen von häufigen Dateien (z.B. Google-Logo)
4.) Meister-Proxy: Ziproxy – dekomprimieren von gzip-Daten
5.) V-Server: Ziproxy – Komprimierung mittels “gzip” und “JPEG 2000”
6.) V-Server: Privoxy – Filtern von Werbung

Im grunde muss man diese Zusammenfassung nun rückwärts lesen, so sieht man den Weg, welchen die Webseite durchwandert, bis diese im Browser dargestellt wird.

Proxy-Server

Auf das Bild klicken, um es groß zu sehen!

Die Konfiguration:

Meister-Proxy: 2-mal Ziproxy

cd /usr/src/
wget http://kent.dl.sourceforge.net/sourceforge/ziproxy/ziproxy-2.7.1.tar.bz2
tar --bzip -xvf ziproxy-2.7.1.tar.bz2
cd ziproxy-2.7.1/
sudo aptitude install libgif-dev libgif4 libungif4-dev libungif-bin libungif4g libpng3 libpng3-dev libpng-dev libjpeg-dev libjpeg-gif libjpeg62 libjpeg62-dev libjasper-1.700-2 libjasper-1.701-dev
./configure --with-jasper=/usr/
make
make install
cp -pv /usr/local/bin/ziproxy /usr/bin/ziproxy
vim /etc/default/ziproxy


# Defaults for ziproxy initscript
# sourced by /etc/init.d/ziproxy
# installed at /etc/default/ziproxy by the maintainer scripts
#
# This is a POSIX shell fragment
#
# Additional options that are passed to the Daemon.
# DAEMON_OPTS="-c /etc/ziproxy/ziproxy.conf"
DAEMON_OPTS1="-c /etc/ziproxy/ziproxy-link.conf"
DAEMON_OPTS2="-c /etc/ziproxy/ziproxy-user.conf"

vim /etc/init.d/ziproxy
#!/bin/sh
### BEGIN INIT INFO
# Provides:          ziproxy
# Required-Start:    $network $local_fs
# Required-Stop:     $network $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Init script for ziproxy
# Description:       This is the init script for ziproxy.
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/ziproxy
NAME=ziproxy
DESC=ziproxy
test -x $DAEMON || exit 0
PIDFILE=/var/run/$NAME.pid
DODTIME=1                   # Time to wait for the server to die, in seconds
# If this value is set too low you might not
# let some servers to die gracefully and
# 'restart' will not work
# Include ziproxy defaults if available
if [ -f /etc/default/ziproxy ] ; then
. /etc/default/ziproxy
fi
DAEMON_OPTS1="$DAEMON_OPTS1 -d"
DAEMON_OPTS2="$DAEMON_OPTS2 -d"
set -e
running_pid()
{
# Check if a given process pid's cmdline matches a given name
pid=$1
name=$2
[ -z "$pid" ] && return 1
[ ! -d /proc/$pid ] &&  return 1
cmd=`cat /proc/$pid/cmdline | tr "00" "n"|head -n 1 |cut -d : -f 1`
# Is this the expected child?
##[ "$cmd" != "$name" ] &&  return 1
[ "$cmd" != "$name" ] &&  return 1
return 0
}
running()
{
# Check if the process is running looking at /proc
# (works for all users)
# No pidfile, probably no daemon present
[ ! -f "$PIDFILE" ] && return 1
# Obtain the pid and check it against the binary name
pid=`cat $PIDFILE`
running_pid $pid $DAEMON || return 1
return 0
}
force_stop() {
# Forcefully kill the process
[ ! -f "$PIDFILE" ] && return
if running ; then
kill -15 $pid
# Is it really dead?
[ -n "$DODTIME" ] && sleep "$DODTIME"s
if running ; then
kill -9 $pid
[ -n "$DODTIME" ] && sleep "$DODTIME"s
if running ; then
echo "Cannot kill $NAME (pid=$pid)!"
exit 1
fi
fi
fi
rm -f $PIDFILE
return 0
pkill -9 ziproxy
}
is_not_running() {
if ! running; then
echo "$NAME is not running."
exit 1
fi
}
case "$1" in
start)
echo -n "Starting $DESC: "
if running; then
echo "$NAME is already running."
exit 1
fi
start-stop-daemon --start --quiet --pidfile $PIDFILE
--exec $DAEMON -- $DAEMON_OPTS1 > $PIDFILE
start-stop-daemon --start --quiet --pidfile $PIDFILE
--exec $DAEMON -- $DAEMON_OPTS2 > $PIDFILE
if running; then
echo "$NAME."
else
echo " ERROR."
fi
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile $PIDFILE
--exec $DAEMON
echo "$NAME."
;;
force-stop)
echo -n "Forcefully stopping $DESC: "
is_not_running
force_stop
if ! running; then
echo "$NAME."
else
echo " ERROR."
fi
pkill -9 ziproxy
;;
#reload)
#
#       If the daemon can reload its config files on the fly
#       for example by sending it SIGHUP, do it here.
#
#       If the daemon responds to changes in its config file
#       directly anyway, make this a do-nothing entry.
#
# echo "Reloading $DESC configuration files."
# start-stop-daemon --stop --signal 1 --quiet --pidfile
#       /var/run/$NAME.pid --exec $DAEMON
#;;
force-reload)
#
#       If the "reload" option is implemented, move the "force-reload"
#       option to the "reload" entry above. If not, "force-reload" is
#       just the same as "restart" except that it does nothing if the
#   daemon isn't already running.
# check wether $DAEMON is running. If so, restart
start-stop-daemon --stop --test --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON
&& $0 restart
|| exit 0
;;
restart)
echo -n "Restarting $DESC: "
is_not_running
start-stop-daemon --stop --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON
[ -n "$DODTIME" ] && sleep $DODTIME
start-stop-daemon --start --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS1 > $PIDFILE
start-stop-daemon --start --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS2 > $PIDFILE
echo "$NAME."
;;
status)
echo -n "$NAME is "
if running ;  then
echo "running."
else
echo "not running."
exit 1
fi
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
exit 1
;;
esac
exit 0

Ziproxy-Link:

vim /etc/ziproxy/ziproxy-link.conf


Port = 8081
Address = "127.0.0.1"
NetdTimeout = 0
NextProxy="85.214.153.167"
NextPort=3128
ZiproxyTimeout = 0
TransparentProxy = false
ConventionalProxy = true
AllowMethodCONNECT = false
UseContentLength = false
MaxUncompressedGzipRatio = 4000
MinUncompressedGzipStreamEval = 250000
MaxSize = 2097152
Gzip = true
PreemptNameRes = true
PreemptNameResMax = 10
PreemptNameResBC = true
WA_MSIE_FriendlyErrMsgs = false
Compressible = {
"shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",
"java", "javascript", "staroffice", "vnd.", "futuresplash",
"asp", "class", "font", "truetype-font", "php", "cgi", "executable",
"shellscript", "perl", "python", "awk", "dvi", "css",
"xhtml+xml", "rss+xml", "xml", "pdf", "tar"
}
ProcessJPG = false
ProcessPNG = false
ProcessGIF = false
ImageQuality = {80,80,80,80}
JP2ImageQuality = {80,80,80,80}
ProcessJP2 = false
ProcessToJP2 = true
ForceOutputNoJP2 = false
AnnounceJP2Capability = true
DecompressIncomingGzipData = true

Ziproxy-User:

vim /etc/ziproxy/ziproxy-user.conf


Port = 3128
Address = "192.168.0.232"
NetdTimeout = 0
NextProxy="127.0.0.1"
NextPort=8080
TransparentProxy = false
ConventionalProxy = true
AllowMethodCONNECT = false
ZiproxyTimeout = 0
UseContentLength = false
MaxUncompressedGzipRatio = 4000
MinUncompressedGzipStreamEval = 250000
MaxSize = 2097152
Gzip = true
PreemptNameRes = true
PreemptNameResMax = 10
PreemptNameResBC = true
WA_MSIE_FriendlyErrMsgs = false
Compressible = {
"shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",
"java", "javascript", "staroffice", "vnd.", "futuresplash",
"asp", "class", "font", "truetype-font", "php", "cgi", "executable",
"shellscript", "perl", "python", "awk", "dvi", "css",
"xhtml+xml", "rss+xml", "xml", "pdf", "tar"
}
ProcessJPG = true
ProcessPNG = true
ProcessGIF = true
ProcessHTML = true
ProcessCSS = true
ProcessJS = false
ProcessHTML_JS = false
ImageQuality = {80,80,80,80}
JP2ImageQuality = {80,80,80,80}
ProcessJP2 = true
ProcessToJP2 = false
ForceOutputNoJP2 = true

Meister-Proxy: Squid
(Squid + VideoCache )

sudo aptitude install squid3
vim /etc/squid3/squid.conf

[...]
http_port 8080
[...]

Anbei mein Squid3-Konfig ->

awk '!/^ *#/&&(length > 0)' /etc/squid3/squid.conf | less


acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl SSL_ports port 81
acl Safe_ports port 80 # http
acl Safe_ports port 81 # http_isp-config
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access allow localhost
http_access deny all
icp_access allow localhost
icp_access deny all
htcp_access allow localhost
htcp_access deny all
http_port 8080
cache_peer localhost parent 8081 0 no-query no-digest
hierarchy_stoplist cgi-bin ?
cache_mem 250 MB
maximum_object_size_in_memory 512 KB
cache_replacement_policy heap LFUDA
cache_dir ufs /var/spool/squid3 3500 16 256
minimum_object_size 0 KB
maximum_object_size 2048 KB
cache_swap_low 95
cache_swap_high 98
access_log none
cache_store_log none
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|?) 0 0% 0
refresh_pattern . 0 20% 4320
via off
cache_mgr voku@voku-online.de
ipcache_size 5000
fqdncache_size 5000
forwarded_for off
client_db off
maximum_single_addr_tries 5
retry_on_error on
coredump_dir /var/spool/squid3
url_rewrite_program /usr/bin/python /usr/share/videocache/videocache.py
url_rewrite_children 7
acl videocache_allow_url url_regex -i .youtube.com/get_video?
acl videocache_allow_url url_regex -i .googlevideo.com/videoplayback .googlevideo.com/videoplay .googlevideo.com/get_video?
acl videocache_allow_url url_regex -i .google.com/videoplayback .google.com/videoplay .google.com/get_video?
acl videocache_allow_url url_regex -i .google.[a-z][a-z]/videoplayback .google.[a-z][a-z]/videoplay .google.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplayback?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplay?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/get_video?
acl videocache_allow_url url_regex -i proxy[a-z0-9-][a-z0-9][a-z0-9][a-z0-9]?.dailymotion.com/
acl videocache_allow_url url_regex -i vid.akm.dailymotion.com/
acl videocache_allow_url url_regex -i [a-z0-9][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?.xtube.com/(.*)flv
acl videocache_allow_url url_regex -i bitcast.vimeo.com/vimeo/videos/
acl videocache_allow_url url_regex -i va.wrzuta.pl/wa[0-9][0-9][0-9][0-9]?
acl videocache_allow_url url_regex -i .files.youporn.com/(.*)/flv/
acl videocache_allow_url url_regex -i .msn.com.edgesuite.net/(.*).flv
acl videocache_allow_url url_regex -i media[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/ mobile[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/
acl videocache_allow_url url_regex -i .mais.uol.com.br/(.*).flv
acl videocache_allow_url url_regex -i .video[a-z0-9]?[a-z0-9]?.blip.tv/(.*).(flv|avi|mov|mp3|m4v|mp4|wmv|rm|ram)
acl videocache_allow_url url_regex -i video.break.com/(.*).(flv|mp4)
acl videocache_allow_dom dstdomain .mccont.com dl.redtube.com .cdn.dailymotion.com
acl videocache_deny_url url_regex -i http://[a-z][a-z].youtube.com http://www.youtube.com
acl videocache_deny_url url_regex -i http://[a-z][a-z].maxdome.de http://www..maxdome.de
url_rewrite_access deny videocache_deny_url
url_rewrite_access allow videocache_allow_url
url_rewrite_access allow videocache_allow_dom
redirector_bypass on

Endian-Firewall: Squid
Squid wird über die Weboberfläche konfiguriert.

https://IP:10443/cgi-bin/advproxy.cgi

Nun verlassen wir unser Home-Netz und begeben uns zu dem V-Server…

V-Server: Ziproxy

wie zuvor wird auch hier als erstes der Ziproxy-Server installiert… gehen wir daher direkt zur Konfiguration über.
Deutsche (german) Ziproxy-Doku:

http://voku-online.de/ziproxy.txt

V-Server: Privoxy

wget http://ovh.dl.sourceforge.net/sourceforge/ijbswa/privoxy_3.0.13-1_i386.deb
dpkg -i privoxy_3.0.13-1_i386.deb
awk '!/^ *#/&&(length > 0)' /etc/privoxy/config

user-manual /usr/share/doc/privoxy/user-manual

confdir /etc/privoxy

logdir /var/log/privoxy

actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.

actionsfile default.action # Main actions file

actionsfile user.action # User customizations

filterfile default.filter

logfile logfile

listen-address 127.0.0.1:8118

toggle 1

enable-remote-toggle 1

enable-remote-http-toggle 1

enable-edit-actions 0

enforce-blocks 1

buffer-limit 500000

# forward / 127.0.0.1:8080

# forwarded-connect-retries 3

accept-intercepted-requests 1

allow-cgi-request-crunching 0

split-large-forms 1

keep-alive-timeout 600

connection-sharing 1

socket-timeout 600

log-messages 0

************ Anonym-Modus (TOR) ************

echp 'deb http://mirror.noreply.org/pub/tor lenny main' >> /etc/apt/sources.list
apt-key adv --recv-keys --keyserver subkeys.pgp.net 0x94C09C7F
apt-get update && aptitude install tor
echo 'forward-socks4a / localhost:9050 .' >> /etc/privoxy/config

*******************************************

Auf folgender Webseite, testen wir nun, ob die Bilder in allen Formaten angezeigt werden… ->www.aadmm.de/de/gf.htm

Und auf der nächsten Webseite testen wir welche HTTP-Header Daten mit übertragen werden.

ip.cc

mein Ergebnis:

###################### Proxy checking Report: ######################

IP DETECT: 85.214.114.181

COUNTRY: Germany – DE

RESULT: high-anonymous elite proxy

###################### Main anonymous proxy test variables: ######################

HTTP_FORWARDED: N/A

HTTP_X_FORWARDED_FOR: N/A

HTTP_CLIENT_IP: N/A

###################### Additional proxy variables: ######################

HTTP_VIA: N/A

HTTP_XROXY_CONNECTION: N/A

HTTP_PROXY_CONNECTION: N/A

###################### Other interesting info about you: ######################

HTTP_USERAGENT_VIA: N/A

HTTP_USER_AGENT: Opera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.00

HTTP_ACCEPT_LANGUAGE: de-DE,de;q=0.9,en;q=0.8

REMOTE_HOST: N/A

HTTP_CONNECTION: close

SERVER_PROTOCOL: HTTP/1.0

HTTP_REFERER: N/A

HTTP_ACCEPT: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

HTTP_CACHE_CONTROL: max-age=259200

HTTP_CACHE_INFO: N/A

MySQL root Passwort zurücksetzen

Wer sein root MySQL-Server Passwort vergessen hat, kann es mit folgendem HowTo wieder zurücksetzen…

füge folgenden Inhalt in eine neue Datei ein… ->

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MeinNeuesPasswort');"

nun müssen wir den MySQL-Server stoppen ->

/etc/init.d/mysql stop

und den MySQL-Server mit dem neuen Passwort starten ->

mysqld_safe --init-file=/PFADZUMFILE/FILE

nun nur noch ein restart des MySQL-Servers und Fertig…

/etc/init.d/mysql restart

alternativ kann man dies auch umgekehrt machen…

wir müssen den MySQL-Server wieder stoppen ->

/etc/init.d/mysql stop

dann den MySQL Daemon im safe-Mode starten ->

mysqld_safe --skip-grant-tables

per root in MySQL einloggen… ->

mysql --user=root mysql

und folgende Kommandos ausführen ->

UPDATE USER SET PASSWORD=PASSWORD('MeinNeuesPasswort') WHERE USER='root';
flush privilesges;
exit;

nun nur noch mysql-Server neu-starten und fertig…

/etc/init.d/mysql restart

jetzt nur nicht wieder das Passwort vergessen ;)

crontab

Ein Skript, ein Befehl oder sonstiges, was in einen bestimmten Rhythmus wiederholt in der ausgeführt werden soll, genau dafür ist ein Cronjob zuständig.

 

cron
cron

 

Um nun einen cronjob einzutragen, muss man sich zunächst für einen Editor für diesen Zweck entscheiden… in diesem Fall setzen wir als Standart-Editor “VIM” ->

export EDITOR=vim

das Kommando:

crontab -l

-> zeigt deine crontab-Einträge an

crontab -u -l

-> zeigt alle crontab-Einträge von einem bestimmten “user” an

crontab -e

-> editiert deine crontab-Einträge

crontab -u -e

-> editiert die crontab-Einträge von einem bestimmten “user”

crontab -r

-> löscht alle deine crontab-Einträge

die Syntax:

[Minuten] [Stunden] [Tag des Monats] [Monat] [Tag der Woche] [Kommando]

– [Minuten] -> 0-59
– [Stunden] -> 0-23
– [Tag des Monats] -> 1-31
– [Monat] -> 1-12
– [Tag der Woche] -> 0-7 (0 oder 7 = Sonntag)

einige Beispiele:

* * * * * /home/user/test.sh > /dev/null 2>> /var/log/test.log

– “* * * * *” -> das Skript wird jede Minute ausgeführt
– “> /dev/null” -> es hat keine Ausgabe auf der Konsole
– “2>>” -> Fehler werden ins Logfile geschrieben

30 00 * * * /home/user/test2.sh &> /dev/null

– “30 00 * * *” -> das Skript wird jeden Tag um 00:30 Uhr ausgeführt
– “&> /dev/null” -> es werden keine Ausgaben ausgegeben (kein Log)

0 0 1 1 * /home/user/test3.sh > /dev/null 2>> /var/log/test3.log

– “0 0 1 1 *” -> das Skript wird einmal im Jahr ausgeführt

30 00 * * 1,2,3,4,5 /home/user/test4.sh > /dev/null 2>> /var/log/test4.log

– “30 00 * * 1,2,3,4,5” -> das Skript wird von Montags bis Freitags ausgeführt (um 00:30)

30 00 * * 6-7 /home/user/test5.sh > /dev/null 2>> /var/log/test5.log

– “30 00 * * 6-7” -> das Skript wird Samstags und Sonntags ausgeführt (um 00:30)

0 */2 * * * /home/user/test6.sh > /dev/null 2>> /var/log/test6.log

– “0 */2 * * *” -> das Skript wird jede zwei Stunden ausgeführt

0 8-20/2 * * * /home/user/test7.sh > /dev/null 2>> /var/log/test7.log

– “0 8-20/2 * * *” -> das Skript wird jede zwei Stunden von 8 bis 20 Uhr ausgeführt

1,2,5,9 -> jede erste, zweite, fünfte, neunte (Minute, Stunde… )
0-4,8-12 -> von 0 bis 4 und von 8 bis 12 (Minute, Stunde… )
*/5 -> jede fünf (Minute, Stunde… )
1-9/2 -> von 1 bis 9 in zweier Schritten (Minute, Stunde… )

Hack your System – Kon-Boot

Mit folgender Live-Hack-CD kannst du, falls du dein Passwort vergessen hast, es wiederherstellen bzw. es zurücksetzen. Dies wurde bereits erfolgreich mit folgenden Windows Versionen getestet…

– Windows Server 2008 Standard SP2 (v.275)
– Windows Vista Business SP0
– Windows Vista Ultimate SP1
– Windows Vista Ultimate SP0
– Windows Server 2003 Enterprise
– Windows XP
– Windows XP SP1
– Windows XP SP2
– Windows XP SP3
– Windows 7


Diese Live-CD beschränkt sich jedoch beim zurück setzten des Passwortes nicht nur auf Windows, es wurde ebenfalls auf folgenden Distributionen erfolgreich angewendet.

– Gentoo 2.6.24-gentoo-r5 (GRUB 0.97)
– Ubuntu 2.6.24.3-debug (GRUB 0.97)
– Debian 2.6.18-6-6861 (GRUB 0.97)
– Fedora 2.6.25.9-76.fc9.i6862 (GRUB 0.97)



Download:
www.piotrbania.com/all/kon-boot/

Speicherverbrauch anzeigen lassen

Um deinen Speicherverbrauch zu sehen gibt es viele Möglichkeiten unter Linux.

1.) Allgemeine Speicherverbrauch im MB anzeigen lassen

free -mt

2.) Detaillierten Speicherverbrauch anzeigen lassen

cat /proc/meminfo

3.) Mit dem Universal-Werkzeug

top

-> gefolgt von einem großen “M” dann werden die Prozesse auch noch nach Ihrem Speicherverbrauch sortiert

4.) Eine sortierte Ausgabe des Speicherverbrauch je Prozess

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS

5.) Eine sortierte Ausgabe des Speicherverbrauch je Prozess (in schön)

vim ~/speicher.sh
#!/bin/bash

/usr/bin/printf "%-6s %-9s %sn" "PID" "Total" "Command"
/usr/bin/printf "%-6s %-9s %sn" "---" "-----" "-------"

for PID in `/bin/ps -e | /usr/bin/awk '$1 ~ /[0-9]+/ { print $1 }'`
do
   CMD=`/bin/ps -o comm -p ${PID} | /usr/bin/tail -1`
   TOTAL=`/usr/bin/pmap ${PID} 2>/dev/null | /usr/bin/tail -1 | /usr/bin/awk '{ print $2 }'`
   [ -n "${TOTAL}" ] && /usr/bin/printf "%-6s %-9s %sn" "${PID}" "${TOTAL}"  "${CMD}"
done | /usr/bin/sort -n -k2
chmod +x ~/speicher.sh
~/speicher.sh

In diesem Skript sollte ich das Programm “pmap” noch einmal erwähnen, mit diesem kannst du weitere Informationen zum Speicherverbrauch eines Prozesses in Erfahrung bringen.

z.B.:

ps auxf | grep apache

In der zweiten Spalte der Ausgabe finden wir jeweils die PID-Nummer des Prozesses.

pmap < PID > | grep php

nun sehen wir z.B. den Speicherverbrauch der php-Erweiterungen

mount über SSH

Wer per ssh z.B. ein bestimmtes Verzeichnis oder einen ganzen Server über ssh mounten möchte kann dies wie folgt unter Debian / Ubuntu bewerkstelligen.

aptitude install sshfs
mkdir -p ~/mnt/server
sshfs -o idmap=user root@server:/ ~/mnt/server

Mit “afuse” kann man das Verzeichnis auch automatisch mounten, sobald man darauf zugreift (man sollte ssh-keys verwenden, ansonsten muss man immer das Passwort eingeben…)

aptitude install afuse sshfs
mkdir ~/sshfs
afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/sshfs
cd ~/sshfs/root@server

Sobald man also mit “cd” in das Verzeichnis “~/mnt/server” wechselt springt der “afuse-Automounter” an und mountet das System via “sshfs”. Dabei wird die UserId, über welche man sich angemeldet hat, immer auf die lokale gemapped. Die Verwendung des SSH-Agent/SSH-Keys ist hier ganz nützlich – andernfalls poppt ein Passwort-Dialog auf, in welchem du dich anmelden musst.

SpeedUp Firefox 3

Dieses kleine HowTo soll zeigen wie man Firefox etwas Optimieren kann… wenn jemand eine Fehler findet oder weitere Möglichkeiten weiß, wie man Firefox beschleunigen kann, sollte man dies als Kommentar an diesen Blog-Eintrag senden, ich werde diesen dann ggf. mit in diesem Beitrag einarbeiten.

1.) Benchmark/Test

2.) Erweiterungen / Extensions

3.) Schrift optimieren

4.) Datenbank optimieren

5.) about:config Einstellungen

6.) Flash (Firefox) Optimierung

7.) Optimized Mozilla Firefox Build

1.) Benchmark/Test

Als erstes müssen wir die Geschwindigkeit/Performance testen, um diese nach unseren Änderungen vergleichen zu können. Dazu kann man z.B. folgende Webseite verwenden -> futuremark.com/peacekeeper

Eine Test-Seite, wo man eine seine Einstellungen testen/vergleichen kann

2.) Erweiterungen / Extensions

Es gibt einige Firefox-Erweiterungen, welche deinen Browser wirklich schneller machen können…

2.1) Adblock Plus

Wer es nicht kennen sollte, mit dieser Erweiterung, blockt man Werbung aus, was zur Folge hat, das die Webseite weniger Speicher verbraucht und besonders das JavaScript Gedöns wird nicht in den Speicher geladen.

2.2) Flashblock

Alle Flash Filme, aber auch Werbung welcher bei einigen Webseiten rechts und links (oben, unten oder mitten im Bild) eingeblendet werden, werden erst dann geladen, wenn du mit der Maus einmal darauf klickst, was den entscheidenen Vorteil hat, dass die CPU nicht unnötig belastet wird. Dies fällt besonders bei Leistungsschwächen Rechnern auf.

2.3) Fasterfox

Dies beschleunigt den Firefox durch Optimierung von Netzwerk- und Anzeigeeinstellungen.

Er bietet unter anderem eine erweiterte Funktion zum Vorausladen von Links (Prefetching), erweiterte Einstellungen zum Verbindungsaufbau, zum Cache-Verhalten und zur Seitenanzeige. Außerdem existiert eine Möglichkeit, durch Flash erzeugte Pop-up-Fenster zu blockieren.

2.4) DownThemAll!

Dies ist ein Download-Manager für Firefox, damit können angefangene Downloads pausiert und wieder fortgesetzt werden, auch nach einem Neustart des Browsers. Zusätzlich wird die Downloadgeschwingikeit von Firefox um bis zu 400 Prozent erhöht, indem mehrer Verbindungen zum entsprechenden Server aufgebaut werden.

2.5) Cache Status

Dieses Add-On fügt eine Status-leiste zu Firefox hinzu, die Ihnen up-to-date Informationen über den Cache Ihres Browsers (sowohl RAM und die Festplatte) anzeigt. Zudem kann man den Cache problemlos löschen und es kann auch automatisch geschehen, wenn der Speicher an einer bestimmten Grenze ist.

3.) Schrift optimieren

3.1) Schrift-Verbesserung deaktivieren

Pango ist ein Library zum verbessern der Schrift unter Ubuntu, in Firefox, wenn man diese ausschaltet, soll dies einen Geschwindigkeitsschub für Firefox 3.5 bringen.

echo 'export MOZ_DISABLE_PANGO=1' >> ~/.bashrc
source ~/.bashrc

3.2) Firefox mit schöner Schrift

Link zum HowTo:

firefox-3-mit-schoener-schrift

4.) Datenbank optimieren

Desweiteren benutzt Firefox seit der 3.X Version eine SQLite Datenbank für Bookmarks, Historie, Cookies, Passwörter… wenn man nun viel mit seinem Firefox arbeitet, kann es vorkommen das diese Datenbank im laufe der Zeit fragmentiert und Firefox z.B. länger braucht um zu starten.

sudo aptitude  install sqlite3
vim ~/speedup_ff.sh
#!/bin/bash
for f in ~/.mozilla/firefox-3.5/*/*.sqlite; do sqlite3 $f 'VACUUM;'; done
chmod +x ~/speedup_ff.sh
~/speedu_pff.sh

Alternativ kann man diese Funktion nun auch mit einer Erweiterung nachinstallieren…

addons.mozilla.org/en-US/firefox/addon/13824

5.) about:config Einstellungen

Normalerweise baut der Browser eine Verbindung zu einer Webseite auf. Wenn du jedoch “Pipelining” baut diese mehrere Verbindungen gleichzeitig auf, welch das laden der Webseite, bis zu einen gewissen Grad beschleunigen sollte.

Achtung!

Die Verwendung von Pipelining ist nicht HTTP-Standard-Konform. Viele Server reagieren unter Umständen sehr langsam, bis hin zum Abbruch, was in unterschiedlichen Fehlermeldungen (meist “Server nicht erreichbar”) münden kann.

Folgendes in die Adresszeile einfügen:

about:config

“network.http.pipelining” -> “true”

“network.http.pipelining.firstrequest” -> “true”

“network.http.proxy.pipelining” -> “true”

“network.http.pipelining.maxrequests” -> “10”

unter Ubuntu kann man die Einstellungen auch per Konsole ausführen, dies geht meistens schneller und hat den selben Effekt.

cd ~/.mozilla/firefox/*.default/
vim user.js

unter Windows können diese Einstellungen in folgender Datei geschrieben bzw. diese Datei angelegt werden

C: Dokumente und Einstellungen < USER > Anwendungsdaten Mozilla Firefox Profiles dkcejehb.default

und z.B. mit notepade oder einem ähnlichen Programm die Einstellungen in folgender Datei abspeichern

user.js

Folgende Zeilen können allgemein Eingefügt werden:

user_pref(“network.http.pipelining”, true);


user_pref(“network.http.pipelining.firstrequest”, true);

user_pref(“network.http.proxy.pipelining”, true);

user_pref(“network.http.pipelining.maxrequests”, 10 );

user_pref(“network.http.keep-alive”, true);

user_pref(“content.notify.backoffcount”, 5);

Schneller Computer / Schnelle Verbindung (z.B. DSL 2000)

user_pref(“content.interrupt.parsing”, true);


user_pref(“content.max.tokenizing.time”, 2250000);

user_pref(“content.notify.interval”, 750000);

user_pref(“content.notify.ontimer”, true);

user_pref(“content.switch.threshold”, 750000);

user_pref(“nglayout.initialpaint.delay”, 0);

user_pref(“network.http.max-connections”, 48);

user_pref(“network.http.max-connections-per-server”, 32);

user_pref(“network.http.max-persistent-connections-per-proxy”, 16);

user_pref(“network.http.max-persistent-connections-per-server”, 8 );

user_pref(“browser.cache.memory.capacity”, 65536);

user_pref(“ui.submenuDelay”, 0);

Schneller Computer / Langsamere Verbindung (z.B. DSL 1000)

user_pref(“content.max.tokenizing.time”, 2250000);


user_pref(“content.notify.interval”, 750000);

user_pref(“content.notify.ontimer”, true);

user_pref(“content.switch.threshold”, 750000);

user_pref(“network.http.max-connections”, 48);

user_pref(“network.http.max-connections-per-server”, 16);

user_pref(“network.http.max-persistent-connections-per-proxy”, 16);

user_pref(“network.http.max-persistent-connections-per-server”, 8 );

user_pref(“nglayout.initialpaint.delay”, 0);

user_pref(“browser.cache.memory.capacity”, 65536);

user_pref(“ui.submenuDelay”, 0);

Schneller Computer / Langsame Verbindung (z.B. ISDN)

user_pref(“content.interrupt.parsing”, true);


user_pref(“content.max.tokenizing.time”, 3000000);

user_pref(“content.maxtextrun”, 8191);

user_pref(“content.notify.interval”, 750000);

user_pref(“content.notify.ontimer”, true);

user_pref(“content.switch.threshold”, 750000);

user_pref(“network.http.max-connections”, 32);

user_pref(“network.http.max-connections-per-server”, 8 );

user_pref(“network.http.max-persistent-connections-per-proxy”, 8 );

user_pref(“network.http.max-persistent-connections-per-server”, 4);

user_pref(“nglayout.initialpaint.delay”, 0);

user_pref(“browser.cache.memory.capacity”, 65536);

user_pref(“ui.submenuDelay”, 0);

Langsamer Computer / Schnelle Verbindung

user_pref(“content.max.tokenizing.time”, 3000000);


user_pref(“content.notify.backoffcount”, 5);

user_pref(“content.notify.interval”, 1000000);

user_pref(“content.notify.ontimer”, true);

user_pref(“content.switch.threshold”, 1000000);

user_pref(“content.maxtextrun”, 4095);

user_pref(“nglayout.initialpaint.delay”, 1000);

user_pref(“network.http.max-connections”, 48);

user_pref(“network.http.max-connections-per-server”, 16);

user_pref(“network.http.max-persistent-connections-per-proxy”, 16);

user_pref(“network.http.max-persistent-connections-per-server”, 8 );

user_pref(“dom.disable_window_status_change”, true);

Langsamer Computer / Langsame Verbindung

user_pref(“content.max.tokenizing.time”, 2250000);


user_pref(“content.notify.interval”, 750000);

user_pref(“content.notify.ontimer”, true);

user_pref(“content.switch.threshold”, 750000);

user_pref(“nglayout.initialpaint.delay”, 750);

user_pref(“network.http.max-connections”, 32);

user_pref(“network.http.max-connections-per-server”, 8 );

user_pref(“network.http.max-persistent-connections-per-proxy”, 8 );

user_pref(“network.http.max-persistent-connections-per-server”, 4);

user_pref(“dom.disable_window_status_change”, true);

Einiger dieser Einstellungen kann man auch sehr bequem per “Extension” einstellen, dafür gehst du auf die folgende Webseite und installierst dir “Tweak Network Settings” ->www.bitstorm.org/extensions/tweak/


tweak-network
tweak-network

Alternativ kann man unter Windows auch “FireTune” installieren, welches die zuvor vorgestellten Einstellungen per GUI einstellen kann.

firetune

Download:

www.totalidea.com/firetune

History der Adresszeile reduzieren (about:config)

Schlüssel : browser.sessionhistory.max_total_viewer

Standard : -1

Wert : 0

für alle Text-Boxen die Rechtschreibung prüfen (about:config)

Schlüssel : layout.spellcheckDefault

Standard : 1

Wert : 2

deaktiviere die animierte Toolbar im Vollbildschirm [ F11 ] (about:config)

Schlüssel : browser.download.manager.scanWhenDone

Standard : true

Wert : false

ggf. Verzögerungen bei YouTube (Videos) verhindern (about:config)

Schlüssel : browser.sessionstore.interval

Standard : 10000

Wert : 120000

blende die Toolbar im Vollbildschirm nie aus [ F11 ] (about:config)

Schlüssel : browser.fullscreen.autohide

Standard : true

Wert : false

deaktiviere Anti-Virus Scanning von Downloads (about:config)

Schlüssel : browser.fullscreen.animateUp

Standard : 1

Wert : 0

einfügen mit der mittleren Maustaste (about:config)

Schlüssel : middlemouse.paste

Standard : false

Wert : true

ergonomischeren Dateidialog unter Gnome (about:config)

Schlüssel : platform_file_picker

Standard : false

Wert : true

Standard Firefox-Suche immer im neuen Tab (about:config)

Schlüssel : browser.search.openintab

Standard : false

Wert : true

Auto-Vervollständigung der URL, während du tippst. (about:config)

Schlüssel : browser.urlbar.autoFill

Standard : false

Wert : true

wenn Firefox 3.5 sich beendet, sobald man den letzten Browsertab schließt, schafft folgendes Abhilfe (about:config)

Schlüssel : browser.tabs.closeWindowWithLastTab

Standard : true

Wert : false

öffne JavaScript pop-ups anstat in einem neun Fernster, in einem neuen Tab (about:config)

Schlüssel : browser.link.open_newwindow.restriction

Standard : 2

Wert : 0

abschalte oder verändern der Session-Wiederherstellungsfunktion (about:config)

Schlüssel : browser.link.open_newwindow.restriction

Standard : 10000 (= 10 secs)

Wert : 90000 (diesen Wert je nach Leitung des PC/Laptop anpassen)

Wert : 0 (abschalten der Funktion)

Quelltext mit deinem bevorzugtem Editor öffnen (about:config)

Schlüssel : view_source.editor.external

Standard : false

Wert : true

und dann noch angeben, wo sich dieses Programm befindet

Schlüssel : view_source.editor.path

Standard : Null

Wert : /usr/bin/gedit

Wartezeit beim installieren von Erweiterungen (about:config)

Schlüssel : security.dialog_enable_delay

Standard : 2000

Wert : 0

Man kann auch neue Einträge in die “about:config” schreiben. Indem man die rechte Maustaste drückt und einen neuen Eintag anlegt, z.B.:

“Neu” -> “Integer”

Gibt die Zeit (in Millisekunden) an, die Firefox nach dem Empfang von Daten wartet, bevor er diese an den Bildschirm sendet. Dazu braucht man jedoch auch einen schnellen Computer und DSL. Für einen langsameren PC (z.B. Pentium III) und ISDN ist ein Wert von 100 ganz gut. (about:config)

Schlüssel : nglayout.initialpaint.delay

Standard : Null

Wert : 0

maximalen Speicherverbrauch einstellen (about:config)

“Neu” -> “Integer”

Schlüssel : browser.cache.memory.capacity

Standard : Null

Wert : 32000

(“32000” für 32000 KB Speicher-Cache)

Wobei Firefox standardmäßig den maximalen Speicherverbrauch selber einstellt. (-1)

um nicht als kompatibel eingestufte Erweiterungen trotzdem installiren zu können (about:config)

“Neu” -> “Boolean”

Schlüssel : extensions.checkCompatibility

Standard : Null

Wert : true (check ist unverändert)

Wert : false (check ist aus)

Festplatten-Cache auslagern (about:config)

“Neu” -> “String”

Schlüssel : browser.cache.disk.parent_directory

Standard : Null

String : /media/ff-cache/

man könnte nun eine Ram-Disk erstellen um und den Cache dorthin auslagern den Speicher, welchen du dafür zur Verfügung stellst, hängt davon ab, wie viel RAM dein System hat. In diesem Beispiel haben wir 256MB verwendet

sudo mount -t tmpfs -o size=256M,nr_inodes=10k,mode=0777 tmpfs /media/ff-cache

um diese RAM-Disk auch nach einem reboot zu erstellen, muss in folgender Datei etwas nachgetragen werden

vim /etc/fstab
tmpfs /media/ff-cache tmpfs size=256M,nr_inodes=10k,mode=777 0 0

Auf der folgenden Webseite findest du weitere Einstellungsmöglichkeit in der “about:config”…

kb.mozillazine.org/About:config_Entries

6.) Flash (Firefox) Optimierung

Ubuntu kommt mit swfdec Plug-in für die wiedergebe von Flash daher, welches nicht wirklich gut unterstützt wird, um nun die Performance von Flash unter Ubuntu (Firefox) zu verbessern installieren wir “flashplugin-nonfree”.

Link zum HowTo:

Adobe Flash Plugin 10.1

7.) Optimized Mozilla Firefox Build

weitere Erklärungen zu Swiftfox gibt es -> HIER <-

7.1) Optimized Mozilla Firefox Build für Linux

Für Linux gibt es Swiftfox, als optimierte Firefox-Versionen z.B. optimiert für “AMD64” oder “Intel Prescott”.

Download:

getswiftfox.com/download.htm

7.2) Optimized Mozilla Firefox Build für Windows

auf folgender Webseite findest du jeweils drei optimierte Firefox Version

P1 -> für alle CPUs

P2 -> für Athlon XP, Duron 1.1 GHz+, Pentium III ,Celeron 500+

P3 -> für AMD Athlon 64, Sempron, Opteron Prozessoren, Intel Pentium 4/D/M, Intel Xeon, Intel Atom, Intel Core Prozessoren und anderen neuen CPUs

Download:

weblog.pigfoot.org/pigfoot/

LVM – Logical Volume Manager

LVM steht für »Logical Volume Manager« und bezeichnet eine Funktion, die seit der Version 2.4 im Standard-Kernel integriert ist. Mittels LVM lässt sich eine logische Schicht zwischen Dateisystem und der Partition einer physikalischen Festplatte schieben.

Was kann LVM?

– hoch verfugbare Systeme
– Verlagern von Speicherplatz
– Snapshots
– Großenanderung
– Striping & Concatenation
– nabhangig von Plattenposition


lvm
LVM


Bei Kernel < 2.4 muss man noch das passende Modul nachladen:

modprobe lvm-mod

Bei der Standard-Ubuntu Version muss man noch das folgende Paket nachinstallieren um LVM nutzen zu können:

aptitude install lvm2

LVM einrichten:

1.) Eine Partition mit der Partitions-ID »8e« für LVM kennzeichnen

fdisk /dev/sdb

oder

cfdisk /dev/sdb

2.) Partition nach LVM durchsuchen und ggf. dafür benötigte Dateien anlegen

vgscan -v

3.) Physical Volume anlegen

pvcreate /dev/sdb1

4.) Volume Group anlegen
(man könnte an dieser Stelle auch mehrere “Physical Volume” zu einer “Volume Group” zusammenfassen)

vgcreate /dev/sdb1 (/dev/sdb2)

5.) Logical Volume anlegen
z.B.:

lvcreate -n "home" -L 10G lvcreate -n "tmp" -L 2G lvcreate -n "swap" -L 1G lvcreate -n "var" -L 30G

6.) Dateisysteme anlegen

mkfs -t xfs /dev/mapper/-home
mkfs -t xfs /dev/mapper/-var
mkfs -t xfs /dev/mapper/-tmp
mkfs -t xfs /dev/mapper/-boot
mkswap /dev/mapper/-swap

LVM Infos:

1.) Infos vom “Physical Volume” anzeigen lassen

pvdisplay

2.) “Volume Group” Infos anzeigen, z.B. wie viel Platten-Platz man noch auf die “Logical Volume” verteilen kann

vgdisplay

3.) Anzeigen welche “Logical Volume” zu welcher “Volume Group” gehören und z.B. dessen momentane Größe

lvdisplay

LVM vergrößern:

1.) Logical Volume Größe angeben oder um X vergrößern

lvextend -L 2G /dev/mapper/-swap

oder

lvextend -L +1G /dev/mapper/-swap

2.) unmounten der Partition bzw. swapoff

umount /LVM-Partition

bzw. in diesem Beispiel

swapoff -v /dev/mapper/-swap

3.) nun das Dateisystem prüfen

fsck -f /dev/mapper/-swap

4.) nun wird das Dateisystem selber vergrößert

xfs_growfs /dev/mapper/-X
resize_reiserfs /dev/mapper/-X
resize2fs /dev/mapper/-X
ntfsresize /dev/mapper/-X

bzw. in diesem Beispiel

mkswap /dev/mapper/-swap

5.) Mounten der Partition bzw. swapon

mount -t xfs /dev/mapper/-home /home
swapon -av

LVM verkleinern:

In aktuellen Implementierungen ist es nicht möglich, ein XFS-Dateisystem zu verkleinern, daher nehmen wir als Beispiel ein “ext3”-Dateisystem

1.) unmounten der Partition

umount /dev/mapper/-var

2.) nun das Dateisystem checken

e2fsck -f /dev/mapper/-var

3.) neue Dateisystem-Größe in KB angeben

resize2fs /dev/volg1/logv1 15728640

4.) anschließend LVM entsprechend reduzieren

lvreduce -L -15GB /dev/mapper/-var

5.) und wieder mounten, fertig

mount -t ext3 /dev/mapper/-var /var

Volume Group vergrößern:

1.) ein neues Physical Volume anlegen

pvcreate /dev/sdb3

2.) das neue “Physical Volume” zur Volume Group hinzufügen

vgextend volg1 /dev/sdb3

Volume Group verkleinern:

1.) überprüfen ob das betreffende Physical Volume Daten enthält

pvdisplay -v /dev/sdb3

2.)das neue “Physical Volume” von der Volume Group entfernen

vgreduce volg1 /dev/hdb7

weitere Infos und Anleitungen findest du auf linuxhaven.de

Bash-Programmierung: Schleifen

Eine Endlosschleife erzeugen wir nun, indem wir einfach eine Bedingung wählen, die immer erfüllt ist… dies könnte man z.B. wie folgt machen:

while true; do date; sleep 5; done

Dies kann man jedoch auch sehr viel einfacher haben und zwar mit “watch”:

watch -n5 "date"

Wenn die Schleife jedoch noch einigen Durchläufen beendet werden soll, kann man dies z.B. so machen:

for i in`seq 1 50` ; do echo $i ; date ; sleep 5 ; done

Hier noch ein paar Beispiele:

#!/bin/sh

ANZAHL=0
echo "until-Loop"
# gt = groesser

until [ ${ANZAHL} -gt 10 ] ; do
        echo ${ANZAHL}
        ANZAHL=`expr ${ANZAHL} + 1`
done

# ------------------------------------

ANZAHL=0
echo "while-Loop"
# gt = kleiner/gleich

while [ ${ANZAHL} -le 10 ]
        do
        echo ${ANZAHL}
        ANZAHL=`expr ${ANZAHL} + 1`
done

# ------------------------------------

echo "For-Loop"
# seq = sequenz

for i in `seq 0 10`
        do
        echo $i
        done
exit

# ------------------------------------

Zum Schluss noch ein Beispiel aus der Praxis:

for I in $(ps aux|grep "apache"| awk {'print $2'}); do kill -9 $I; done

vielleicht auf den ersten Blick ein wenig konfus, aus den zweiten Blick erkennt man jedoch, dass mittels ps nach “apache” gesucht wird, die PID-Nunner per awk herausgenommen und diese Programme dann getötet werden.

cdrecord – ISO erstellen und CD brennen

1.) Du musst wissen ob/wo dein CD-Brenner ist…

cdrecord --scanbus

Ausgabe:
0,0,0 0) *
0,1,0 0) *
0,2,0 0) ‘SONY’ […] Removable CD-ROM

2.) Dateien in ein Verzeichniss schaufeln, so dass wir aus dem Verzeichniss ein Image machen können.

cp -v /home/User/Desktop/test_Datei /home/User/brenn_verzeichniss/
cp -v /home/User/Dokumente/test_Datei2 /home/User/brenn_verzeichniss/
mkisofs -R -l /home/User/brenn_verzeichniss/ > /home/User/Desktop/disk.iso

3.) Testen ob im Iso auch alle Dateien sind, welche wir haben wollten

sudo mkdir /mnt/cdrom_iso
sudo mount -t iso9660 -o ro,loop /home/User/Desktop/disk.iso /mnt/cdrom_iso

nachdem man sich vergewissert hat, dass die Dateien alle an Ort und Stelle sind, kann man die ISO wieder unmounten

sudo umount /mnt/cdrom_iso

4.) Brennen der CD

DEVICE="0,2,0"
SPEED=6

(der Speed muss individuell an deine Bedürfnisse/Gegebenheiten angepasst werden)

sudo cdrecord -v dev=${DEVICE} speed=${SPEED} /home/User/Desktop/disk.iso