Archiv

Artikel getaggt mit ‘groovy’

TrueCrypt mit Groovy automatisieren

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 Schlagworte: , , ,
Follow

Bekomme jeden neuen Artikel in deinen Posteingang.