diff --git a/bash/ethlnkchk b/bash/ethlnkchk new file mode 100755 index 0000000..808d170 --- /dev/null +++ b/bash/ethlnkchk @@ -0,0 +1,26 @@ +#!/bin/bash + +if [ "$( /usr/bin/id --user )" -ne 0 ] ; then + printf "U have to be root\\!" + exit 1 +fi + +if [ ! -x "/sbin/ethtool" ] ; then + printf "U have to install ethtool first\\!" + exit 2 +fi + +ETH="eth0" +CNT=0 + +while true ; do + if ! /sbin/ethtool "${ETH}" 2>/dev/null | /bin/grep "Link detected: yes" 1>/dev/null ; then + (( CNT++ )) + else + CNT=0 + fi + if [ "${CNT}" -gt 6 ] ; then /home/pi/bin/sesame close ; fi + sleep 6 +done + +exit 0 \ No newline at end of file diff --git a/bash/sesame b/bash/sesame new file mode 100644 index 0000000..73bfd82 --- /dev/null +++ b/bash/sesame @@ -0,0 +1,101 @@ +#!/bin/bash + +# DESCRIPTION: +# +# Open and mount dm_crypt container the easy way. + + +# USAGE: +# +# sesame open +# or +# sesame close + + +# PREPARATIONS: +# +# cd +# dd if=/dev/urandom of=./secrets.dd bs=4096 count=65536 +# sudo aptitude install cryptsetup +# sudo losetup /dev/loop0 ./secrets.dd +# sudo cryptsetup luksFormat /dev/loop0 +# sudo cryptsetup luksOpen /dev/loop0 ./secrets +# sudo mkfs.ext4 -L secrets /dev/mapper/secrets +# mkdir secrets +# sudo mount /dev/mapper/secrets ./secrets +# sudo chown -R pi:pi ./secrets +# touch ./secrets/test +# sudo umount /dev/mapper/secrets +# sudo cryptsetup luksClose secrets +# sudo losetup -d /dev/loop0 + + +readonly NAME="secrets" +readonly CONTAINER="/home/pi/${NAME}.dd" +readonly MOUNTPOINT="/home/pi/${NAME}" + +case "${1}" in + open) + if [ ! -f "${CONTAINER}" ] ; then + printf "ERROR: container file is missing - EXIT!\n" + exit 1 + fi + + if ! losetup -a | grep -F "${CONTAINER}" > /dev/null 2>&1 ; then + sudo losetup $( losetup -f ) "${CONTAINER}" + else + printf "NOTICE: the container has already been looped.\n" + fi + + readonly LOOPDEVICE="$( losetup -a | grep -F "${CONTAINER}" | cut -d ":" -f 1 )" + + if ! sudo cryptsetup status "${NAME}" | grep -F "/dev/mapper/${NAME} is active" > /dev/null 2>&1 ; then + sudo cryptsetup luksOpen "${LOOPDEVICE}" "${NAME}" + else + printf "NOTICE: ${CONTAINER} has already been opened.\n" + fi + + if [ ! -d "${MOUNTPOINT}" ] ; then + mkdir "${MOUNTPOINT}" + printf "NOTICE: I have created the mountpoint for you.\n" + fi + + if ! grep "/dev/mapper/${NAME}" /proc/mounts > /dev/null 2>&1 ; then + sudo mount "/dev/mapper/${NAME}" "${NAME}" + else + printf "NOTICE: open container has already been mounted.\n" + fi + ;; + close) + if grep "/dev/mapper/${NAME}" /proc/mounts > /dev/null 2>&1 ; then + sudo umount "/dev/mapper/${NAME}" 2> /dev/null + if [ "${?}" -ne 0 ] ; then + printf "ERROR: container could not be unmounted - EXIT!\n" + exit 1 + fi + else + printf "NOTICE: open container has not been mounted.\n" + fi + + if sudo cryptsetup status "${NAME}" | grep -F "/dev/mapper/${NAME} is active" > /dev/null 2>&1 ; then + sudo cryptsetup luksClose "${NAME}" + else + printf "NOTICE: ${CONTAINER} has not been opened.\n" + fi + + readonly LOOPDEVICE="$( losetup -a | grep -F "${CONTAINER}" | cut -d ":" -f 1 )" + + if [ -n "${LOOPDEVICE}" ] ; then + sudo losetup -d "${LOOPDEVICE}" + else + printf "NOTICE: the container has not been looped.\n" + fi + + ;; + *) + printf "ERROR: I do not understand you - EXIT!\n" + exit 1 + +esac + +exit 0