Ergebnis 1 bis 3 von 3

Thema: USB stick automounter

  1. #1
    Erfahrener Benutzer Avatar von V10lator
    Registriert seit
    14.06.2004
    Beiträge
    124

    USB stick automounter

    So, ich hab hier ein kleines script das einen USB stick automautsch mounet / unmoutet
    1. udev muss vorhanden sein; schreibt bitte ein regel, welche beim einstecken des sticks /dev/usbstick erstellt, dies kann auch nur ein link zu /dev/sdxX sein, beispiel:
    BUS="usb", SYSFS{product}="USB Flash Memory", SYSFS{serial}="4564567845778465", NAME="%k", SYMLINK="usbstick"
    2. das script ist in PHP geschrieben, da ich dort ein wenig besser bin als in shell scripten, sicher kann man es anders oder "eleganter" lösen, aber mir gefällts so :P
    3. das script benötigt irgend etwas das es in intervallen aufruft, dies kann bei xfce4 z.B. das generic-monitor panel plug-in sein, bei KDE möglicherweise ein selbsteschriebenes (super)karamba script usw.
    5. das script benötigt keine root rechte, solange der user /dev/usbstick mounten darf (in der /etc/fstab durch "user" anzugeben, beispiel:
    /dev/usbstick /mnt/usb auto noauto,user,exec 0 0
    ) und folgends kommando muss durch sudo erlaubt sein:
    /bin/umount
    so, also erst mal los... die erste zeile solltet ihr an eure PHP installation anpassen
    Code:
    #!/opt/lampp/bin/php
    <?
    if(file_exists("/dev/usbstick")) {
    if(file_exists("/tmp/usbmount")) {
    $free = exec("df -m /dev/`cat /tmp/usbmount` | grep /dev");
    $array = explode(" 489",$free);
    $array1 = explode("%",$array[1]);
    $array2 = explode(" ",$array1[0]);
    $status=ltrim(substr($array2[2],3))."% voll";
    } else {
    exec("mount /dev/usbstick");
    /* -- Hier können eventzuelle sachen rein die nach dem mounten ausgeführt werden sollen, so kann z.B. eine verschlüsselte partition welche einen schlüssel auf dem USB stick benötigt eingebunden werden, beispiel:
    if(!file_exists("/dev/mapper/backup")) {
    exec("/scripts/automount.sh");
    }
    */
    $status="mounting";
    }
    $minus=bcsub($time,$stamp,0);
    
    $datei=fopen("/tmp/usbmount","w+");
    fwrite($datei,readlink("/dev/usbstick"));
    fclose($datei);
    
    } else {
    if(file_exists("/tmp/usbmount")) {
    $l = file("/tmp/usbmount");
    $link = $l[0];
    exec("sudo /bin/umount /dev/$link");
    unlink("/tmp/usbmount");
    $status="unounting";
    } else $status="N/A";
    }
    echo $status;
    ?>
    P.S. wie immer dürft ihr das script ändern so viel ihr wollt
    [align=center]Back to the roots
    http://counter.li.org/cgi-bin/certificate.cgi/506718[/align]

  2. #2
    Administrator
    Registriert seit
    11.06.2003
    Beiträge
    1.499
    jo wunderbar habe es end ma getestet funxt auch soweit ..

  3. #3
    Benutzer
    Registriert seit
    12.08.2004
    Beiträge
    73
    Ich empfehle bei USB-Sticks noch die Option "noatime", damit die Anzahl der Schreibzugriffe verringert werden, da Flash Speicher nur eine relativ geringe Lebensdauer haben (auf der anderen Seite kosten sie ja jetzt auch nicht mehr so viel). "noatim" verhindert, dass die Zeit des letzten Zugriffes auf die Datei ins Dateisystem geschrieben wird.
    Die Option "sync" fand ich noch ganz praktisch, da werden die Daten nicht gecacht vorm Schreiben, was einem dann eventuell lange Wartezeiten beim Unmounten erspart.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •