johker’s blog stories about me, my life, science and my trips

13Jan/100

AVI Dateien zusammenfügen

Das funktioniert entweder mit mencoder:

1
mencoder -forceidx -ovc copy -oac copy -o output.avi input1.avi input2.avi ...

Oder mit avimerge aus dem transcode package:

1
avimerge -o output.avi -i input1.avi input2.avi ...
29Oct/090

Wordpress Seite mit Passwort schützen

Lange habe ich nach dieser Funktion gesucht und nun habe ich sie endlich gefunden:
Rechts neben der Textbox zum Verfassen eines Beitrags gibts es einen Bereich "Publish". Dort kann man unter "Visibility" festlegen, ob eine Seite öffentlich, passwortgeschützt oder privat sein soll.

10Aug/091

Synergy

Ein geniales Tool, wenn man zwei Rechner hat und diese ohne teure Hardware mit der selben Maus/der selben Tastatur verwenden will. Zusätzlich steht auch noch eine gemeinsame Zwischenablage zur Verfügung.
Unter folgendem Link wird sehr einfach erklärt, wie man Synergy einrichtet:
http://gnuski.blogspot.com/2008/02/quicksynergy-quick-howto.html

Filed under: IT, Tipps und Tricks 1 Comment
3Aug/090

Freien Speicherplatz auf ftp-Server bestimmen

In Zusammenhang mit meinem letzten Beitrag über Server-Backups hier noch ein kleiner Tipp wie man den freien Speicherplatz auf einem ftp-Server bestimmen kann:

1
echo du -hs . | lftp -u <BENUTZERNAME>,<PASSWORT> <SERVER>

Sollte das Paket lftp nicht verfügbar sein, kann man es über apt nachinstallieren:

1
aptitude install lftp

Falls jemand weiß, ob und wie man den freien Speicherplatz direkt über ncftp erfragen kann, wäre ich über einen kleinen Kommentar dankbar.

15Apr/090

Megavideo ohne Zeitbeschränkung

Heute ist mir mal wieder ein Streich gelungen. Wer auch genervt ist von der 72 Minuten Beschränkung bei megavideo.com, für den habe ich die Lösung: Einfach auf folgender Webseite ganz rechts im "Megavideo Bypasser!!!" den Link zum megavideo-Video angeben und ohne lästige Unterbrechung Filme schauen.

LINK

Update: Diese Methode funktioniert wohl nicht mehr. Alternativ kann man das Video in megavideo komplett vorladen lassen, dann in den Offline-Modus des Browsers wechseln, das Video anschauen und danach wieder in den Online-Modus wechseln. Auch mit dieser Methode sollte man ohne Zeitbegrenzung schauen können. Viel Spaß!

7Apr/090

fetchmail Integration in postfixadmin

Viele Benutzer haben auch Mailboxen bei anderen Anbietern, z.B. bei gmx oder web.de. Damit diese Benutzer ihre E-Mails aggregieren können, wird fetchmail eingerichtet. fetchmail ist bereits in postfixadmin integriert, somit können fetchmail-Einträge über postfixadmin verwaltet werden (derzeit leider nur von Administratoren). Über das mitgelieferte fetchmail.pl-Skript werden die Daten aus der Datenbank ausgelesen, fetchmail aufgerufen, die Mails durch amavisd-new überprüft und an die Mailboxen der Benutzer ausgeliefert. Das perl-Skript wurde etwas angepasst, damit es mit postgres interagieren kann. Des Weiteren wurden die Dateinamen etwas angepasst.

Installation:

aptitude install fetchmail
aptitude install liblockfile-simple-perl

Nötige Verzeichnisse für das Skript anlegen:

mkdir /var/run/fetchmail
touch /var/run/fetchmail/fetchmail-all.lock

Das Skript:

fetchmail.pl

#!/usr/bin/perl
 
use DBI;
use MIME::Base64;
# use Data::Dumper;
use File::Temp qw/ mkstemp /;
use Sys::Syslog;
# require liblockfile-simple-perl
use LockFile::Simple qw(lock trylock unlock);
 
openlog("fetchmail-all", "pid", "mail");
 
sub log_and_die {
        my($message) = @_;
  syslog("err", $message);
  die $message;
}
 
# read options and arguments
 
$configfile = "/etc/fetchmail/config";
 
@ARGS1 = @ARGV;
 
while ($_ = shift @ARGS1) {
    if (/^-/) {
        if (/^--config$/) {
            $configfile = shift @ARGS1
        }
    }
}
 
# postgres settings
$database="postfix";
$hostname="127.0.0.1";
$user="postfix";
$password="XXXXXX";
 
$run_dir="/var/run/fetchmail";
 
# use specified config file
if (-e $configfile) {
    do $configfile;
}
 
$dsn = "DBI:Pg:database=$database;host=$hostname";
$lock_file=$run_dir . "/fetchmail-all.lock";
 
$lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1);
$lockmgr->lock($lock_file) || log_and_die "can't lock ${lock_file}";
 
#postgres connect
$dbh = DBI->connect($dsn, $user, $password) || log_and_die "cannot connect the database";
 
$sql=<<SQL;
SELECT id,mailbox,src_server,src_auth,src_user,src_password,src_folder,fetchall,keep,protocol,mda,extra_options,usessl 
FROM fetchmail
WHERE date_part('epoch',now())-date_part('epoch',date) > poll_time*60
SQL
 
my (%config);
map{
        my ($id,$mailbox,$src_server,$src_auth,$src_user,$src_password,$src_folder,$fetchall,$keep,$protocol,$mda,$extra_options,$usessl)=@$_;
 
  syslog("info","fetch ${src_user}@${src_server} for ${mailbox}");
 
        $cmd="user '${src_user}' there with password '".decode_base64($src_password)."'";
        $cmd.=" folder '${src_folder}'" if ($src_folder);
        $cmd.=" mda ".$mda if ($mda);
 
#       $cmd.=" mda \"/usr/local/libexec/dovecot/deliver -m ${mailbox}\"";
        $cmd.=" is '${mailbox}' here";
 
        $cmd.=" keep" if ($keep);
        $cmd.=" fetchall" if ($fetchall);
        $cmd.=" ssl" if ($usessl);
        $cmd.=" ".$extra_options if ($extra_options);
 
        $text=<<TXT;
set postmaster "postmaster"
set nobouncemail
set no spambounce
set properties ""
set syslog
 
poll ${src_server} with proto ${protocol}
        $cmd
 
TXT
 
  ($file_handler, $filename) = mkstemp( "/tmp/fetchmail-all-XXXXX" ) or log_and_die "cannot open/create fetchmail temp file";
  print $file_handler $text;
  close $file_handler;
 
  $ret=`/usr/bin/fetchmail -f $filename -i $run_dir/fetchmail.pid`;
 
  unlink $filename;
 
  $sql="UPDATE fetchmail SET returned_text=".$dbh->quote($ret).", date=now() WHERE id=".$id;
  $dbh->do($sql);
}@{$dbh->selectall_arrayref($sql)};
 
$lockmgr->unlock($lock_file);
closelog();

Damit das Skript regelmäßig ausgeführt wird, legen wir einen Cronjob dafür an (als Benutzer root). In der hier gezeigten Konfiguration wird das Skript alle 5 Minuten ausgeführt.

crontab -e:

*/5 * * * * /PFAD/ZU/fetchmail.pl &> /dev/null
23Mar/091

Firefox SSL-Zertifikate

Endlich habe ich eine Lösung für die nervtötenden Firefox-Warnungen über selbstsignierte SSL-Zertifikate gefunden: https://addons.mozilla.org/en-US/firefox/addon/10246. Wer es auch leid ist die Maus 2-17 Mal schubsen zu müssen, bis Firefox einem endlich den Zugriff auf eine Webseite erlaubt, dem lege ich dieses Addon ans Herz.
ACHTUNG: Man sollte es nur benutzen, wenn man weiß, was man tut. Man kann mit diesem Plugin (etwas) einfacher Opfer von Phishing-Attacken oder ähnliche Angriffen werden.

27Feb/090

Linux Tipps I

Ich dachte mir es wäre vielleicht eine gute Idee ab und an mal wieder ein paar kleine Tipps und Tricks für Linux zu veröffentlichen - nicht nur für andere Leute, sondern auch für mich, damit ich einen schönen Überblick über Befehle oder Skripte hab, die ich öfters brauche.

Rechte von Dateien/Ordnern ändern

1
2
find . -type d -print0 | xargs -0 chmod 0775 # Ordner
find . -type f -print0 | xargs -0 chmod 0664 # Dateien

Mit diesen beiden Befehlen kann man die Rechte von Ordnern bzw. Dateien ändern. Der Befehl wird auf das derzeitige Verzeichnisse und alle Unterverzeichnisse angewandt. Im Klartext heißt das "Gib allen Ordnern die Rechte 775 und allen Dateien die Rechte 664". Dieser Befehl ist ein mächtiges Instrument, wenn man nicht die Rechte von Dateien und Ordnern ändern will, sondern nur von Dateien oder Ordnern.

find kann man noch weitere Optionen mitgeben, damit z.B. die Rechte nur bis zu einer bestimmten Tiefe geändert werden. Interessant ist hier auch der Befehl xargs: mit diesem werden nicht x chmod-Prozesse gestartet, sondern nur einer und diesem werden alle Dateien/Ordner als Argumente mitgegeben.

Benutzer beim Erstellen in vordefinierte Gruppen aufnehmen

Oftmals will man, dass Benutzer, die man per adduser-Befehl anlegt automatisch in bestimmte Gruppen aufgenommen werden, z.B. in die Gruppe "users". Dies kann man in der Datei "/etc/adduser.conf" definieren. Fügt man dort die folgende Zeile ein, werden die Benutzer automatisch in die definierten Gruppen hinzugefügt:

1
2
EXTRA_GROUPS="users group1 group2"
ADD_EXTRA_GROUPS=1
21Oct/080

Java auf einem Virtuozzo Virtual Server installieren

Wie vielleicht einige wissen, administriere ich in meiner Freizeit einen virtuellen Server auf Virtuozzo Basis. Schon seit längerem ist es mir ein Dorn im Auge, dass sich Java darauf nicht installieren lässt lies. Seit heute ist das vorbei. Ich habe endlich eine Anleitung gefunden, wie man das Problem umgehen kann.

Zuerst vielleicht einmal, wie sich das Problem geäußert hat: Während des Installationsprozesses mit aptitude gab es einen Fehler beim Ausführen der postinst-Skripts von sun-java6-bin:

Setting up sun-java5-bin (1.5.0-10-3) ...
Could not create the Java virtual machine.
dpkg: error processing sun-java5-bin (--configure):
 subprocess post-installation script returned error exit status 1

Um dieses Problem zu lösen, muss das Skript postinst im deb-Paket geändert werden und folgende Zeile auskommentiert werden:

$basedir/bin/java -client -Xshare:dump &gt; /dev/null

Wie man ein deb-Paket entpackt und nach dem Modifizieren wieder ein deb-Paket erstellt, wird hier sehr ausführlich und gut beschrieben:

http://thedarkmaster.wordpress.com/2008/05/24/how-to-create-manipulate-a-deb-file-of-a-compiled-application/

Zusammenfassend legt man einen Ordner "AAA" an, entpackt das deb-Paket mit tar in diesen Ordner, entpackt die darin enthaltene Datei control.tar.gz in ein Verzeichnis "DEBIAN" (muss in "AAA" erstellt werden) und entpackt die Datei data.tar.gz in den Ordner "AAA". Jetzt kann bearbeitet werden, was das Zeug hält. Ist man damit fertig, baut man das deb-Paket mit (man muss im Überordner von "AAA" sein):

dpkg-deb --build AAA
20Oct/080

dpkg error: trying to overwrite X, which is also in package Y

Falls euch auch mal der Fehler in der Überschrift begegnet, so habe ich hier eine Lösung für euch:

Das Problem:

dpkg: error processing /var/cache/apt/archives/AAA (--unpack):
trying to overwrite '/usr/lib/BBB', which is also in package CCC
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
AAA
E: Sub-process /usr/bin/dpkg returned an error code (1)

(AAA, BBB, CCC sind Platzhalter)

Zur Lösung des Problems führt man folgenden Befehl aus:

sudo dpkg -i --force-overwrite AAA

(wobei AAA für das Paket - mit vollem Pfad - steht, dessen Konfiguration man vorziehen will)

Danach führt man folgenden Befehl aus:

sudo aptitude install -f

Das sollte das Problem lösen.