summaryrefslogtreecommitdiff
path: root/mount-crypts
blob: e434adc0a6ebcac71144f199b7264716353ac90f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash

i=1
maxWait=60

while [ $i -le $(sed "s/#.*$//" /etc/crypttab | grep -vc '^ *$') ]
do
  s="$(sed "s/#.*$//" /etc/crypttab | grep -v '^ *$' | tail -n$i | head -n1 | sed "s/  */ /g")"
  name=$(echo $s | awk '{print $1}')
  device=$(echo $s | awk '{print $2}')
  key=$(echo $s | awk '{print $3}')
  while [ ${maxWait} -gt 0 ] && [ ! -b "${device}" ]
  do
    sleep 1
    maxWait=$[${maxWait}-1]
  done
  if [ "$1" == "-u" ]
  then
    if ! /usr/sbin/cryptsetup luksClose $name
    then
      >&2 echo "FEHLER: cryptsetup luksClose $name"
      exit 1
    fi
  else
    if ! /usr/sbin/cryptsetup luksOpen $device $name --key-file $key
    then
      >&2 echo "FEHLER: cryptsetup luksOpen $device $name --key-file $key"
      exit 1
    fi
  fi
  i=$[$i+1]
done