<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>disk.sh</title>
<meta name="Generator" content="Vim/8.1">
<meta name="plugin-version" content="vim8.1_v1">
<meta name="syntax" content="bash">
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
<meta name="colorscheme" content="default">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; }
body { font-family: monospace; color: #ffffff; background-color: #000000; }
* { font-size: 1em; }
.Constant { color: #ff6060; }
.Special { color: #ff40ff; }
.Identifier { color: #00ffff; }
.Statement { color: #ffff00; }
.Comment { color: #8080ff; }
.PreProc { color: #ff40ff; }
-->
</style>
</head>
<body>
<pre id='vimCodeElement'>
<span class="Comment">#!/bin/bash</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment">## \file disk.sh</span>
<span class="Comment">## \author Sebastien Beaugrand</span>
<span class="Comment">## \sa <a href="http://beaugrand.chez.com/">http://beaugrand.chez.com/</a></span>
<span class="Comment">## \copyright CeCILL 2.1 Free Software license</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Identifier">dev</span>=/dev/cdrom
<span class="Identifier">mnt</span>=/media/cdrom

<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># Usage</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$1</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">&quot;-h&quot;</span> <span class="Statement">]</span> <span class="Statement">||</span> <span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$1</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">&quot;--help&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Identifier">name</span>=<span class="Special">`basename </span><span class="PreProc">$0</span><span class="Special">`</span>
    <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">Lecture  :  </span><span class="PreProc">$name</span><span class="Constant"> </span><span class="Statement">&quot;</span>
    <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">Ecriture :  </span><span class="PreProc">$name</span><span class="Constant"> &lt;iso|repertoire&gt;</span><span class="Statement">&quot;</span>
    <span class="Statement">exit</span> <span class="Constant">0</span>
<span class="Statement">fi</span>

<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># User</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Special">`whoami`</span> <span class="Statement">!=</span> <span class="Statement">&quot;</span><span class="Constant">root</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    su <span class="Statement">-c</span> <span class="Statement">&quot;</span><span class="PreProc">$0</span><span class="Constant"> </span><span class="PreProc">$*</span><span class="Statement">&quot;</span>
    <span class="Statement">exit</span> <span class="PreProc">$?</span>
<span class="Statement">fi</span>

<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># Media</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-d</span> <span class="PreProc">$mnt</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Statement">mkdir</span> <span class="PreProc">$mnt</span>
<span class="Statement">fi</span>
<span class="Statement">if </span> <span class="Statement">grep</span> <span class="Statement">&quot;</span><span class="PreProc">$mnt</span><span class="Statement">&quot;</span> /etc/mtab <span class="Statement">&gt;</span>/dev/null<span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="PreProc">$mnt</span><span class="Constant"> n'est pas utilisable</span><span class="Statement">&quot;</span>
    <span class="Statement">exit</span> <span class="Constant">1</span>
<span class="Statement">fi</span>

<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># Lecture</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">&quot;</span><span class="PreProc">$1</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">dechiffrer ? (o/N) </span><span class="Statement">&quot;</span>
    <span class="Statement">read</span> ret
    <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$ret</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">o</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
        modprobe dm-crypt
        <span class="Identifier">loop</span>=<span class="Special">`losetup </span><span class="Special">-f</span><span class="Special">`</span>
        losetup <span class="PreProc">$loop</span> <span class="PreProc">$dev</span>
        cryptsetup <span class="Statement">-v</span> <span class="Statement">-c</span> aes-cbc-plain <span class="Statement">-h</span> sha512 create crypted <span class="PreProc">$loop</span>
        <span class="Statement">if </span><span class="Statement">[</span> <span class="PreProc">$?</span> <span class="Statement">!=</span> <span class="Constant">0</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            losetup <span class="Statement">-d</span> <span class="PreProc">$loop</span>
            <span class="Statement">exit</span> <span class="Constant">1</span>
        <span class="Statement">fi</span>
        mount <span class="Statement">-t</span> iso9660 /dev/mapper/crypted <span class="PreProc">$mnt</span>
        <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">todo:</span><span class="Statement">&quot;</span>
        <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">umount </span><span class="PreProc">$mnt</span><span class="Statement">&quot;</span>
        <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">cryptsetup remove crypted</span><span class="Statement">&quot;</span>
        <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">losetup -d </span><span class="PreProc">$loop</span><span class="Statement">&quot;</span>
    <span class="Statement">else</span>
        mount <span class="Statement">-t</span> iso9660 <span class="PreProc">$dev</span> <span class="PreProc">$mnt</span>
    <span class="Statement">fi</span>
    <span class="Statement">exit</span> <span class="Constant">0</span>
<span class="Statement">fi</span>

<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># wodim</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
which wodim <span class="Statement">&gt;</span>/dev/null <span class="Constant">2</span><span class="Statement">&gt;&amp;1</span> || <span class="Statement">\</span>
<span class="PreProc">(</span><span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">installation de wodim: </span><span class="Statement">&quot;</span><span class="Constant"> </span><span class="Statement">&amp;&amp;</span><span class="Special"> zypper install wodim</span><span class="PreProc">)</span>

<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># Ecriture</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Identifier">dir</span>=<span class="PreProc">${</span><span class="PreProc">1</span><span class="Statement">%%</span>/<span class="PreProc">}</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">${</span><span class="PreProc">dir</span><span class="Statement">:0-4</span><span class="Statement">:4</span><span class="PreProc">}</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">&quot;.iso&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Identifier">iso</span>=<span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Statement">&quot;</span>
    <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">iso=</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span>
    <span class="Identifier">overwrite</span>=n
<span class="Statement">else</span>
    <span class="Identifier">iso</span>=<span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Constant">.iso</span><span class="Statement">&quot;</span>
    <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">iso=</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span>
    <span class="Identifier">overwrite</span>=o
    <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-f</span> <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
        <span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">ecraser </span><span class="PreProc">$iso</span><span class="Constant"> ? (o/N) </span><span class="Statement">&quot;</span>
        <span class="Statement">read</span> overwrite
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">&quot;</span><span class="PreProc">$overwrite</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Identifier">overwrite</span>=n
        <span class="Statement">fi</span>
    <span class="Statement">fi</span>
    <span class="Statement">if </span><span class="Statement">[</span> <span class="PreProc">$overwrite</span> <span class="Statement">=</span> <span class="Constant">o</span> <span class="Statement">]</span> <span class="Statement">||</span> <span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-f</span> <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
        <span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">chiffrer ? (o/N) </span><span class="Statement">&quot;</span>
        <span class="Statement">read</span> crypt
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$crypt</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">o</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            which aespipe <span class="Statement">&gt;</span>/dev/null <span class="Constant">2</span><span class="Statement">&gt;</span><span class="Statement">&amp;</span><span class="Constant">1</span> <span class="Statement">||</span>\
                <span class="PreProc">(</span><span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">installation de aespipe: </span><span class="Statement">&quot;</span><span class="Constant"> </span><span class="Statement">&amp;&amp;</span>\
                 zypper install aespipe<span class="PreProc">)</span>
            genisoimage <span class="Statement">-f</span> <span class="Statement">-J</span> <span class="Statement">-l</span> <span class="Statement">-R</span> <span class="Statement">-V</span> <span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Statement">&quot;</span> <span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Statement">&quot;</span> <span class="Statement">|</span>\
                aespipe <span class="Statement">-e</span> AES256 <span class="Statement">-T</span> <span class="Statement">&gt;</span><span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span>
        <span class="Statement">else</span>
            genisoimage <span class="Statement">-f</span> <span class="Statement">-J</span> <span class="Statement">-l</span> <span class="Statement">-R</span> <span class="Statement">-V</span> <span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Statement">&quot;</span> <span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Statement">&quot;</span> <span class="Statement">&gt;</span><span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span>
        <span class="Statement">fi</span>
    <span class="Statement">fi</span>
<span class="Statement">fi</span>
wodim <span class="Special">-prcap</span> <span class="Identifier">dev</span>=<span class="PreProc">$dev</span> | <span class="Statement">grep</span> <span class="Statement">&quot;</span><span class="Constant">Write speed</span><span class="Statement">&quot;</span>
<span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">vitesse ?x </span><span class="Statement">&quot;</span>
<span class="Statement">read</span> speed
<span class="Identifier">size</span>=<span class="Special">`stat </span><span class="Special">-c</span><span class="Special">%s </span><span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span><span class="Special">`</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">taille du fichier iso : </span><span class="PreProc">$size</span><span class="Statement">&quot;</span>
<span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">graver ? (O/n) </span><span class="Statement">&quot;</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$ret</span><span class="Statement">&quot;</span> <span class="Statement">!=</span> n <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">vider le disque ? (O/n) </span><span class="Statement">&quot;</span>
    <span class="Statement">read</span> ret
    <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$ret</span><span class="Statement">&quot;</span> <span class="Statement">!=</span> n <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
        wodim <span class="Statement">-v</span> <span class="Identifier">dev</span>=<span class="PreProc">$dev</span> <span class="Identifier">speed</span>=<span class="PreProc">$speed</span> <span class="Identifier">blank</span>=fast <span class="Special">-force</span>
    <span class="Statement">fi</span>
    wodim <span class="Statement">-v</span> <span class="Special">-dao</span> <span class="Special">-eject</span> <span class="Identifier">dev</span>=<span class="PreProc">$dev</span> <span class="Identifier">speed</span>=<span class="PreProc">$speed</span> <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span>
<span class="Statement">fi</span>

<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># Verification</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">verifier ? (O/n) </span><span class="Statement">&quot;</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$ret</span><span class="Statement">&quot;</span> <span class="Statement">!=</span> n <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Statement">echo</span><span class="Constant"> -ne </span><span class="Statement">&quot;</span><span class="Constant"> (1) md5sum</span><span class="Special">\n</span><span class="Constant"> (2) diff</span><span class="Special">\n</span><span class="Constant"> [1] </span><span class="Statement">&quot;</span>
    <span class="Statement">read</span> ret
    <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">&quot;</span><span class="PreProc">$ret</span><span class="Statement">&quot;</span> <span class="Statement">]</span> <span class="Statement">||</span> <span class="Statement">[</span> <span class="PreProc">$ret</span> <span class="Statement">=</span> <span class="Constant">1</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-f</span> <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">creer </span><span class="PreProc">$iso</span><span class="Constant">.md5 ? (O/n) </span><span class="Statement">&quot;</span>
            <span class="Statement">read</span> ret
            <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$ret</span><span class="Statement">&quot;</span> <span class="Statement">!=</span> n <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
                md5sum <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span> <span class="Statement">&gt;</span><span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">&quot;</span>
            <span class="Statement">fi</span>
        <span class="Statement">fi</span>
        <span class="Identifier">bs</span>=<span class="Special">`isoinfo </span><span class="Special">-d</span><span class="Special"> </span><span class="Special">-i</span><span class="Special"> </span><span class="PreProc">$dev</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">grep</span><span class="Special"> </span><span class="Statement">&quot;</span><span class="Constant">^Logical block size</span><span class="Statement">&quot;</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> cut </span><span class="Special">-d</span><span class="Special"> </span><span class="Statement">'</span><span class="Constant"> </span><span class="Statement">'</span><span class="Special"> </span><span class="Special">-f</span><span class="Special"> </span><span class="Constant">5</span><span class="Special">`</span>
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">&quot;</span><span class="PreProc">$bs</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">error: blank block size</span><span class="Statement">&quot;</span>
            <span class="Statement">exit</span> <span class="Constant">1</span>
        <span class="Statement">fi</span>
        <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">bs = </span><span class="PreProc">$bs</span><span class="Statement">&quot;</span>
        <span class="Identifier">bc</span>=<span class="Special">`isoinfo </span><span class="Special">-d</span><span class="Special"> </span><span class="Special">-i</span><span class="Special"> </span><span class="PreProc">$dev</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">grep</span><span class="Special"> </span><span class="Statement">&quot;</span><span class="Constant">^Volume size</span><span class="Statement">&quot;</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> cut </span><span class="Special">-d</span><span class="Special"> </span><span class="Statement">'</span><span class="Constant"> </span><span class="Statement">'</span><span class="Special"> </span><span class="Special">-f</span><span class="Special"> </span><span class="Constant">4</span><span class="Special">`</span>
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">&quot;</span><span class="PreProc">$bc</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Identifier">bc</span>=<span class="Constant">0</span>
        <span class="Statement">fi</span>
        <span class="Identifier">fsz</span>=<span class="Special">`stat </span><span class="Special">-c</span><span class="Special"> </span><span class="Statement">&quot;</span><span class="Constant">%s</span><span class="Statement">&quot;</span><span class="Special"> </span><span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span><span class="Special">`</span>
        <span class="Special">((</span>fbc <span class="Statement">=</span> <span class="Constant">fsz</span> / bs<span class="Special">))</span>
        <span class="Statement">if </span><span class="Special">((</span>fbc <span class="Statement">&gt;</span> bc<span class="Special">))</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Identifier">bc</span>=<span class="PreProc">$fbc</span>
        <span class="Statement">fi</span>
        <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">bc = </span><span class="PreProc">$bc</span><span class="Statement">&quot;</span>
        <span class="Special">((</span>sz <span class="Statement">=</span> <span class="Constant">bc</span> * bs<span class="Special">))</span>
        <span class="Statement">if </span><span class="Special">((</span>sz <span class="Statement">!=</span> fsz<span class="Special">))</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">warning: data size = </span><span class="PreProc">$sz</span><span class="Statement">&quot;</span>
            <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">warning: file size = </span><span class="PreProc">$fsz</span><span class="Statement">&quot;</span>
        <span class="Statement">fi</span>
        dd <span class="Identifier">if</span>=<span class="PreProc">$dev</span> <span class="Identifier">bs</span>=<span class="PreProc">$bs</span> <span class="Identifier">count</span>=<span class="PreProc">$bc</span> <span class="Identifier">conv</span>=notrunc,noerror \
            <span class="Constant">2</span><span class="Statement">&gt;</span>/tmp/disk.log <span class="Statement">|</span> md5sum <span class="Statement">|</span> cut <span class="Statement">-d</span> <span class="Statement">'</span><span class="Constant"> </span><span class="Statement">'</span> <span class="Statement">-f</span> <span class="Constant">1</span> <span class="Statement">&gt;</span>md5sum.tmp
        cat md5sum.tmp
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-f</span> <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Statement">if </span>cat <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">&quot;</span> <span class="Statement">|</span> cut <span class="Statement">-d</span> <span class="Statement">'</span><span class="Constant"> </span><span class="Statement">'</span> <span class="Statement">-f</span> <span class="Constant">1</span> <span class="Statement">|</span> diff - md5sum.tmp<span class="Statement">;</span> <span class="Statement">then</span>
                <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">OK</span><span class="Statement">&quot;</span>
            <span class="Statement">else</span>
                <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">KO</span><span class="Statement">&quot;</span>
            <span class="Statement">fi</span>
        <span class="Statement">fi</span>
        <span class="Statement">rm</span> md5sum.tmp
    <span class="Statement">else</span>
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-d</span> /mnt/removable <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Statement">mkdir</span> /mnt/removable
        <span class="Statement">fi</span>
        <span class="Statement">if </span> <span class="Statement">grep</span> <span class="Statement">&quot;</span><span class="Constant">/mnt/removable</span><span class="Statement">&quot;</span> /etc/mtab <span class="Statement">&gt;</span>/dev/null<span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">/mnt/removable n'est pas utilisable</span><span class="Statement">&quot;</span>
            <span class="Statement">exit</span> <span class="Constant">1</span>
        <span class="Statement">fi</span>
        <span class="Statement">if </span><span class="Statement">[</span> <span class="PreProc">$overwrite</span> <span class="Statement">=</span> <span class="Constant">n</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            <span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">&quot;</span><span class="Constant">dechiffrer ? (o/N) </span><span class="Statement">&quot;</span>
            <span class="Statement">read</span> crypt
        <span class="Statement">fi</span>
        <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">&quot;</span><span class="PreProc">$crypt</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">o</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
            modprobe dm-crypt
            <span class="Identifier">loop1</span>=<span class="Special">`losetup </span><span class="Special">-f</span><span class="Special">`</span>
            losetup <span class="PreProc">$loop1</span> <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span>
            cryptsetup <span class="Statement">-v</span> <span class="Statement">-c</span> aes-cbc-plain <span class="Statement">-h</span> sha512 create crypted1 <span class="PreProc">$loop1</span>
            <span class="Statement">if </span><span class="Statement">[</span> <span class="PreProc">$?</span> <span class="Statement">!=</span> <span class="Constant">0</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
                losetup <span class="Statement">-d</span> <span class="PreProc">$loop1</span>
                <span class="Statement">exit</span> <span class="Constant">1</span>
            <span class="Statement">fi</span>
            <span class="Identifier">loop2</span>=<span class="Special">`losetup </span><span class="Special">-f</span><span class="Special">`</span>
            losetup <span class="PreProc">$loop2</span> <span class="PreProc">$dev</span>
            cryptsetup <span class="Statement">-v</span> <span class="Statement">-c</span> aes-cbc-plain <span class="Statement">-h</span> sha512 create crypted2 <span class="PreProc">$loop2</span>
            <span class="Statement">if </span><span class="Statement">[</span> <span class="PreProc">$?</span> <span class="Statement">!=</span> <span class="Constant">0</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
                cryptsetup remove crypted1
                losetup <span class="Statement">-d</span> <span class="PreProc">$loop1</span>
                losetup <span class="Statement">-d</span> <span class="PreProc">$loop2</span>
                <span class="Statement">exit</span> <span class="Constant">1</span>
            <span class="Statement">fi</span>
            mount <span class="Statement">-t</span> iso9660 /dev/mapper/crypted1 /mnt/removable
            mount <span class="Statement">-t</span> iso9660 /dev/mapper/crypted2 <span class="PreProc">$mnt</span>

            diff <span class="Special">-rq</span> /mnt/removable <span class="PreProc">$mnt</span>

            umount /mnt/removable
            umount <span class="PreProc">$mnt</span>
            cryptsetup remove crypted1
            cryptsetup remove crypted2
            losetup <span class="Statement">-d</span> <span class="PreProc">$loop1</span>
            losetup <span class="Statement">-d</span> <span class="PreProc">$loop2</span>
        <span class="Statement">else</span>
            mount <span class="Statement">-t</span> iso9660 <span class="Statement">-o</span> loop <span class="Statement">&quot;</span><span class="PreProc">$iso</span><span class="Statement">&quot;</span> /mnt/removable
            mount <span class="Statement">-t</span> iso9660 <span class="PreProc">$dev</span> <span class="PreProc">$mnt</span>
            <span class="Statement">cd</span> /mnt/removable
            <span class="Statement">find</span><span class="Statement"> . </span>-type f <span class="Special">-exec</span> <span class="Identifier">cmp {}</span> <span class="PreProc">$mnt</span>/<span class="Special">{}</span> <span class="Special">\;</span>
            umount /mnt/removable
            umount <span class="PreProc">$mnt</span>
        <span class="Statement">fi</span>
    <span class="Statement">fi</span>
<span class="Statement">fi</span>

<span class="Statement">exit</span> <span class="Constant">0</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->