TrueCrypt mit Groovy automatisieren
September 19, 2009
Hinterlasse einen Kommentar
Als Benutzer eines Unix-Systems schreibe ich mir gerne mal ein Script, um wiederkehrende Aufgaben zu vereinfachen. Für das automatische Einbinden von virtuellen, verschlüsselten TrueCrypt Laufwerken in mein Home-Verzeichnis habe ich mir ein Script mit Groovy geschrieben.
Bei dem unten aufgeführten Script werden alle in der Variable “mounts” definierten TrueCrypt Dateien in die angegebenen Ordner eingebunden. Die Logik geht davon aus, dass man ein Password bei dem Aufruf des Groovy-Scripts in dem Kommandozeileninterpreter übergibt. Alle virtuellen Laufwerke müssen mit diesem einen Password zu öffnen sein.
$ groovy TCMounter.groovy PASSWORD
Dieses Passwort wird für alle virtuellen Festplatten verwendet.
// List of mounts List<Mount> mounts = [ new Mount("PATH TO SOURCE", "PATH TO DESTINATION"), new Mount("PATH TO SOURCE", "PATH TO DESTINATION") ]; // Invocation of routines TCAutoMounter mounter = new TCAutoMounter(mounts, args[0]); mounter.mount(); // OOP /** * Mounts automatically all defined sources to destinations. **/ class TCAutoMounter { private String TRUE_CRYPT = "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt"; private String OPTIONS = "--non-interactive --mount --password="; private String SHELL = "/bin/bash -c "; private String password; private List<Mount> mounts; public TCAutoMounter(List<Mount> mounts, String password) { this.password = password; this.mounts = mounts; } /** * Mount automatically with password. **/ public void mount() { if (password == null || password.length() == 0) { println "No password was given!"; } else if(mounts == null || mounts.size() == 0) { println "No mounts defined!"; } else { //int size = mounts.size(); //println size + " mounts defined"; for (item in mounts) { execute(item.source, item.destination); } } } /** * Executes the mounts within the command line. * @param source The source file. * @param dest The destination folder of mount. **/ private void execute(String source, String dest) { String command = TRUE_CRYPT + " " + OPTIONS + password + " " + source + " " + dest; //println "Command will be executed: " + command def proc = command.execute(); proc.waitFor(); if (proc.exitValue() == 0) { println "Mount of " + dest + " to " + source + " successful."; } else { println ""; println "Mount of " + dest + " to " + source + " FAILED!"; println ""; println "Error text => ${proc.err.text}"; } } } /** * Bean for definition of mounts. **/ class Mount { String source; String destination public Mount(String source, String destination) { this.source = source; this.destination = destination; } }
Wenn Jemand eine Verbesserung parat hat, immer her damit.
Kategorien:Informatik
bash, groovy, mac, unix



