seeseekey.net - Invictus Deus Ex Machina

Einen Ser­ver auf seine SSL-Fähigkeiten zu über­prü­fen ist für den Laien nicht ohne wei­te­res mög­lich. Durch das Bash-Skript testssl.sh sieht dies nun anders aus.

testssl.sh in Aktion

Das freie, unter der GPL2 lizen­zierte Skript, dient dazu die Sicher­heit der SSL-Implementation eines ent­fern­ten Ser­vers zu tes­ten. Die Syn­tax für den Test ist dabei ein­fach gehalten:

./testssl.sh example.com

Dane­ben ver­fügt „testssl.sh“ über wei­tere Optio­nen, wie man der Doku­men­ta­tion ent­neh­men kann. Dem Autor des Skrip­tes kann auf Twit­ter gefolgt werden.

Manch­mal hat man ein Skript geschrie­ben wel­ches man sys­tem­weit auf­ru­fen möchte. Dazu muss die­ses natür­lich „instal­liert“ wer­den. Genau­ge­nom­men han­delt es sich bei der Instal­la­tion nur um eine Kopie an den rich­ti­gen Ort im Sys­tem. In die­sem Fall ist das der Ord­ner „/usr/local/bin/“. Aller­dings wird für ein sol­che Ope­ra­tion nicht „cp“ genutzt. Statt­des­sen wird dies mit­tels „install“ erledigt:

sudo install skript.sh /usr/local/bin/skript.sh

Damit wird das Skript in den ent­spre­chen­den Ord­ner kopiert. Dane­ben wer­den die Datei­rechte und Attri­bute ange­passt. Anschlie­ßend kann das Skript von allen Nut­zern sys­tem­weit genutzt werden.

Wei­tere Infor­ma­tio­nen gibt es unter:
https://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

Mit­tels „rsync“ ein Backup zu erstel­len, ist für den nor­ma­len Nut­zer unter Umstän­den etwas schwie­rig. Wesent­lich ver­ein­facht wird der Pro­zess von dem Skript „rsync-time-backup“. Die­ses unter einer MIT-Lizenz ste­hende Skript funk­tio­niert dabei unter Linux und Mac OS X. Die Instal­la­tion besteht dabei aus dem klo­nen des ent­spre­chen­den Git Repo­si­to­ries auf den eige­nen Rechner:

git clone https://github.com/laurent22/rsync-time-backup

Genutzt wird das ganze nach dem Schema:

./rsync_tmbackup.sh <quelle> <ziel> [ausgeschlossene Dateien als Pattern]

Das Skript legt dabei für jedes Backup ein Ver­zeich­nis mit dem Datum als Namen an. Dateien wel­che bereits in einem vor­he­ri­gen Backup vor­han­den und iden­tisch sind, wer­den dabei per Hard­link ver­knüpft. Damit bele­gen sie kei­nen zusätz­li­chen Spei­cher­platz. Das Wie­der­her­stel­len von Daten ist bei die­sem Backup sehr ein­fach. Es reicht den ent­spre­chen­den Ord­ner wie­der zum Quell­ver­zeich­nis zu kopie­ren. Hier­für wer­den keine zusätz­li­chen Tools benö­tigt. Zu fin­den ist das Skript auf Git­Hub.

Unter Git möchte man manch­mal ein Ver­zeich­nis von einem Repo­sitory zu einem ande­ren ver­schie­ben. Natür­lich soll dabei die Revi­si­ons­ge­schichte nicht ver­lo­ren gehen. In die­sem Fall hilft fol­gen­des Bashskript:

#!/bin/sh
# moves a folder from one git repository to another
# moveFolder <absolute repository one path> <repository one folder> <absolute repository two path>

# prepare repository one
cd $1
git clean -f -d -x
git checkout -b tmpBranch
git filter-branch --subdirectory-filter $2 HEAD
mkdir $2
mv * $2
git add .
git commit -a -m "Move files into folder"

#import in repository two
cd $3
git remote add repositoryOne $1
git pull repositoryOne tmpBranch
git remote rm repositoryOne

#cleanup
cd $1
git checkout master
git branch -D tmpBranch

#remove folder with history from repository one
cd $1
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch $2" HEAD

Genutzt wird das Skript dabei wie folgt:

./moveFolder /absolute/path/to/repo/one folderFromRepoOne /absolute/path/to/repo/two

Nach­dem das Ver­zeich­nis in das neue Repo­sitory mit­samt der Revi­si­ons­ge­schichte über­tra­gen wurde, wird es aus dem alten Repo­sitory ent­fernt. Das Skript funk­tio­niert dabei unter Win­dows, Linux und Mac OS X. Die jeweils aktu­ellste Ver­sion ist auf Git­Hub zu fin­den.

In einem mei­ner letz­ten Arti­kel gibt es darum, wie man Fire­fox Sync in Ver­bin­dung mit own­Cloud nutzt. Augen­schein­lich gibt es im Zusam­men­hang damit ein Pro­blem, das dass ganze nach dem Neu­start von Fire­fox nicht mehr rich­tig funk­tio­niert. Natür­lich kann man die ent­spre­chende App in own­Cloud deak­ti­vie­ren, aller­dings blei­ben dabei noch einige Ein­träge in der Daten­bank erhal­ten. Mit die­sem Skript kön­nen diese Ein­träge ent­fernt werden:

<?php
//Configuration
$dbServer = "localhost";
$dbDatabase = "owncloud";
$dbUsername = "user";
$dbPassword = "secret";

//Set up connection
$mySQLConnection = mysql_connect($dbServer, $dbUsername, $dbPassword) or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch!");
mysql_select_db($dbDatabase) or die ("Die Datenbank existiert nicht.");

//Cleanup ownCloud Tables
mysql_query("DELETE FROM `$dbDatabase`.`oc_appconfig` WHERE `oc_appconfig`.`appid` = 'core' AND `oc_appconfig`.`configkey` = 'remote_mozilla_sync' AND `oc_appconfig`.`configvalue` = 'mozilla_sync/appinfo/remote.php'");

mysql_query("DELETE FROM `$dbDatabase`.`oc_appconfig` WHERE `oc_appconfig`.`appid` = 'mozilla_sync' AND `oc_appconfig`.`configkey` = 'enabled' AND `oc_appconfig`.`configvalue` = 'no'");
mysql_query("DELETE FROM `$dbDatabase`.`oc_appconfig` WHERE `oc_appconfig`.`appid` = 'mozilla_sync' AND `oc_appconfig`.`configkey` = 'installed_version' AND `oc_appconfig`.`configvalue` = '1.0'");
mysql_query("DELETE FROM `$dbDatabase`.`oc_appconfig` WHERE `oc_appconfig`.`appid` = 'mozilla_sync' AND `oc_appconfig`.`configkey` = 'types' AND `oc_appconfig`.`configvalue` = ''");

//Drop tables
mysql_query("DROP TABLE `oc_mozilla_sync_collections`, `oc_mozilla_sync_users`, `oc_mozilla_sync_wbo`;");

//Close connection
mysql_close($mySQLConnection);
?>

Zu fin­den ist das Skript auf Git­Hub. Es ent­fernt dabei die Tabel­len „oc_mozilla_sync_collections“, „oc_mozilla_sync_users“ und „oc_mozilla_sync_wbo“. Dane­ben wird die Tabelle „oc_appconfig“ um die Ein­träge der App bereinigt.

Auf mactricks.de gibt es eine schöne Anlei­tung um aus einem Teil eines Git Repo­si­to­ries ein Sub­re­po­sitory zu erzeu­gen. Aller­dings gibt es mit der Vari­ante ein Pro­blem. Wenn man das ganze mehr als zwei oder drei­mal machen möchte, wird es mit der Zeit ner­vig all diese Befehle einzugeben.

Aus die­sem Grund habe ich für das Extra­hie­ren eines Sub­pro­jek­tes aus einem Git Repo­sitory ein Skript geschrieben:

#!/bin/sh
# extractSubproject <orignal repopath> <new repopath> <subfolder> <new remote (optional)>

# clone repository
git clone --no-hardlinks $1 $2

# extract subproject
cd $2
git filter-branch --subdirectory-filter $3 HEAD
git reset --hard
git remote rm origin
rm -r .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive
git prune

# Add optional remote and push
if [ "$4" != "" ]; then
git remote add origin $4
  git push origin master
fi

Her­un­ter­ge­la­den wer­den kann sich das Skript auch unter https://github.com/seeseekey/archive/blob/master/Bash/Git/extractSubproject.sh.

Bei mir auf der Fest­platte lie­gen einige Quell­text in Form von Sub­ver­sion und Git Repo­si­to­ries. Da es müh­sam wäre jedes ein­zelne Repo­sitory zu aktua­li­sie­ren, habe ich mir ein klei­nes Skript geschrie­ben, wel­ches diese Auf­gabe abnimmt:

#bash

#Update repositories script
#Copyright (c) 2012 by seeseekey <seeseekey@gmail.com>
#
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program.  If not, see <http://www.gnu.org/licenses/>.

SCRIPTPATH=$(pwd);

#Git
for directory in `find $SCRIPTPATH -name ".git" -type d`;
do
  echo $directory;
  cd $directory/..;
  git pull;
done

#Subversion
for directory in `find $SCRIPTPATH -name ".svn" -type d`;
do
  echo $directory;
  cd $directory/..;
  svn update;
done

#Pfad zurücksetzen
cd $SCRIPTPATH;

Das Skript selbst steht dabei unter GPLv3 und kann auch direkt auf Git­hub unter https://github.com/seeseekey/archive/blob/master/Bash/Git/updateRepositories.sh gefun­den werden.

In mei­ner Drop­box fin­det sich ein mit­tels „EncFS“ ver­schlüs­sel­ter Ord­ner. Die­ser soll natür­lich auch unter Mac OS X funk­tio­nie­ren. Im Netz gibt es einige Anlei­tun­gen um das ganze zum lau­fen zu bekom­men, aller­dings war dar­un­ter keine die bei mir funk­tio­nierte. Um den EncFS Ord­ner zu ent­schlüs­seln muss man sich fol­gende Soft­ware herunterladen:

Nach dem Down­load muss man das ganze instal­lie­ren und dann benö­tigt man nur noch ein klei­nes Skript zum moun­ten des gan­zen. In die­ser Skript trägt man fol­gen­des ein:

echo ultrageheimespasswort | encfs --stdinpass ~/Dropbox/Private ~/DropboxEncrypted

Damit kann man das ganze moun­ten, ohne jedes mal das Pass­wort ein­ge­ben zu müs­sen. In Ver­bin­dung mit dem gemoun­te­ten Ord­ner gibt es lei­der ein Pro­blem, so igno­riert Spot­light sämt­li­che Inhalte des ent­spre­chen­den Orders.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://www.lisanet.de/?p=128
http://seeseekey.net/blog/6102
http://sohleeatsworld.de/?x=entry:entry120505-190714

Und da ist sie mal wie­der: Eine neue Ver­sion mei­nes Skrip­tes „Digi­ta­les Fil­men und Film­pro­duk­tion“ wel­che auf der Web­seite in der Sek­tion Scripte und Co. zu fin­den ist. In dem Skript geht es ums Fil­men und alles was damit zusam­men­hängt. Das Skript ist dabei nicht voll­stän­dig, aber ich arbeite immer daran wenn es die Zeit denn zulässt. So wur­den auch dies­mal wie­der viele Feh­ler kor­ri­giert, eini­ges an der Typo­gra­fie geschraubt und der eine oder andere Bereich erwei­tert. Wer es sich in sei­ner jet­zi­gen Form anschauen möchte klickt ein­fach hier. Viel Spaß beim Lesen. Feh­ler, Anre­gun­gen et cetera sind gerne gese­hen :)

Ab heute gibt es eine neue Ver­sion des Skrip­tes „Digi­ta­les Fil­men und Film­pro­duk­tion“ auf der Web­seite in der Sek­tion Scripte und Co. wel­che hier zu fin­den ist. Es ist wie­der eini­ges dazu gekom­men und auch vie­les ver­bes­sert wor­den und es wur­den hof­fent­lich nicht all zu viele Feh­ler ein­ge­baut ;) Viel Spaß beim lesen.