<!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">"</span><span class="PreProc">$1</span><span class="Statement">"</span> <span class="Statement">=</span> <span class="Constant">"-h"</span> <span class="Statement">]</span> <span class="Statement">||</span> <span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$1</span><span class="Statement">"</span> <span class="Statement">=</span> <span class="Constant">"--help"</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">"</span><span class="Constant">Lecture : </span><span class="PreProc">$name</span><span class="Constant"> </span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">Ecriture : </span><span class="PreProc">$name</span><span class="Constant"> <iso|repertoire></span><span class="Statement">"</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">"</span><span class="Constant">root</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
su <span class="Statement">-c</span> <span class="Statement">"</span><span class="PreProc">$0</span><span class="Constant"> </span><span class="PreProc">$*</span><span class="Statement">"</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">"</span><span class="PreProc">$mnt</span><span class="Statement">"</span> /etc/mtab <span class="Statement">></span>/dev/null<span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="PreProc">$mnt</span><span class="Constant"> n'est pas utilisable</span><span class="Statement">"</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">"</span><span class="PreProc">$1</span><span class="Statement">"</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">"</span><span class="Constant">dechiffrer ? (o/N) </span><span class="Statement">"</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$ret</span><span class="Statement">"</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">"</span><span class="Constant">todo:</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">umount </span><span class="PreProc">$mnt</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">cryptsetup remove crypted</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">losetup -d </span><span class="PreProc">$loop</span><span class="Statement">"</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">></span>/dev/null <span class="Constant">2</span><span class="Statement">>&1</span> || <span class="Statement">\</span>
<span class="PreProc">(</span><span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">"</span><span class="Constant">installation de wodim: </span><span class="Statement">"</span><span class="Constant"> </span><span class="Statement">&&</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">"</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">"</span> <span class="Statement">=</span> <span class="Constant">".iso"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Identifier">iso</span>=<span class="Statement">"</span><span class="PreProc">$dir</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">iso=</span><span class="PreProc">$iso</span><span class="Statement">"</span>
<span class="Identifier">overwrite</span>=n
<span class="Statement">else</span>
<span class="Identifier">iso</span>=<span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant">.iso</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">iso=</span><span class="PreProc">$iso</span><span class="Statement">"</span>
<span class="Identifier">overwrite</span>=o
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-f</span> <span class="Statement">"</span><span class="PreProc">$iso</span><span class="Statement">"</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">"</span><span class="Constant">ecraser </span><span class="PreProc">$iso</span><span class="Constant"> ? (o/N) </span><span class="Statement">"</span>
<span class="Statement">read</span> overwrite
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">"</span><span class="PreProc">$overwrite</span><span class="Statement">"</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">"</span><span class="PreProc">$iso</span><span class="Statement">"</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">"</span><span class="Constant">chiffrer ? (o/N) </span><span class="Statement">"</span>
<span class="Statement">read</span> crypt
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$crypt</span><span class="Statement">"</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">></span>/dev/null <span class="Constant">2</span><span class="Statement">></span><span class="Statement">&</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">"</span><span class="Constant">installation de aespipe: </span><span class="Statement">"</span><span class="Constant"> </span><span class="Statement">&&</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">"</span><span class="PreProc">$dir</span><span class="Statement">"</span> <span class="Statement">"</span><span class="PreProc">$dir</span><span class="Statement">"</span> <span class="Statement">|</span>\
aespipe <span class="Statement">-e</span> AES256 <span class="Statement">-T</span> <span class="Statement">></span><span class="Statement">"</span><span class="PreProc">$iso</span><span class="Statement">"</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">"</span><span class="PreProc">$dir</span><span class="Statement">"</span> <span class="Statement">"</span><span class="PreProc">$dir</span><span class="Statement">"</span> <span class="Statement">></span><span class="Statement">"</span><span class="PreProc">$iso</span><span class="Statement">"</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">"</span><span class="Constant">Write speed</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">"</span><span class="Constant">vitesse ?x </span><span class="Statement">"</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">"</span><span class="PreProc">$iso</span><span class="Statement">"</span><span class="Special">`</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">taille du fichier iso : </span><span class="PreProc">$size</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> -n </span><span class="Statement">"</span><span class="Constant">graver ? (O/n) </span><span class="Statement">"</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$ret</span><span class="Statement">"</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">"</span><span class="Constant">vider le disque ? (O/n) </span><span class="Statement">"</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$ret</span><span class="Statement">"</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">"</span><span class="PreProc">$iso</span><span class="Statement">"</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">"</span><span class="Constant">verifier ? (O/n) </span><span class="Statement">"</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$ret</span><span class="Statement">"</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">"</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">"</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">"</span><span class="PreProc">$ret</span><span class="Statement">"</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">"</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">"</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">"</span><span class="Constant">creer </span><span class="PreProc">$iso</span><span class="Constant">.md5 ? (O/n) </span><span class="Statement">"</span>
<span class="Statement">read</span> ret
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$ret</span><span class="Statement">"</span> <span class="Statement">!=</span> n <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
md5sum <span class="Statement">"</span><span class="PreProc">$iso</span><span class="Statement">"</span> <span class="Statement">></span><span class="Statement">"</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">"</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">"</span><span class="Constant">^Logical block size</span><span class="Statement">"</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">"</span><span class="PreProc">$bs</span><span class="Statement">"</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">"</span><span class="Constant">error: blank block size</span><span class="Statement">"</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">"</span><span class="Constant">bs = </span><span class="PreProc">$bs</span><span class="Statement">"</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">"</span><span class="Constant">^Volume size</span><span class="Statement">"</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">"</span><span class="PreProc">$bc</span><span class="Statement">"</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">"</span><span class="Constant">%s</span><span class="Statement">"</span><span class="Special"> </span><span class="Statement">"</span><span class="PreProc">$iso</span><span class="Statement">"</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">></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">"</span><span class="Constant">bc = </span><span class="PreProc">$bc</span><span class="Statement">"</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">"</span><span class="Constant">warning: data size = </span><span class="PreProc">$sz</span><span class="Statement">"</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">warning: file size = </span><span class="PreProc">$fsz</span><span class="Statement">"</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">></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">></span>md5sum.tmp
cat md5sum.tmp
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-f</span> <span class="Statement">"</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">if </span>cat <span class="Statement">"</span><span class="PreProc">$iso</span><span class="Constant">.md5</span><span class="Statement">"</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">"</span><span class="Constant">OK</span><span class="Statement">"</span>
<span class="Statement">else</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">KO</span><span class="Statement">"</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">"</span><span class="Constant">/mnt/removable</span><span class="Statement">"</span> /etc/mtab <span class="Statement">></span>/dev/null<span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">/mnt/removable n'est pas utilisable</span><span class="Statement">"</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">"</span><span class="Constant">dechiffrer ? (o/N) </span><span class="Statement">"</span>
<span class="Statement">read</span> crypt
<span class="Statement">fi</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$crypt</span><span class="Statement">"</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">"</span><span class="PreProc">$iso</span><span class="Statement">"</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">"</span><span class="PreProc">$iso</span><span class="Statement">"</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 : -->