#!/bin/bash # encrypts or decrypts files or directories with GPG ACTION=""; FILEORDIR=""; FILE=""; OUTPUTFILE="${HOME}/gpgout"; MYOUTFILE=""; RECIPIENT=""; PASSWORD=""; FILEBASE=""; TEMPFILE=""; OUTFILE=""; GPGOUT=""; # ask if this is an encrypt or a decrypt echo "encrypt or decrypt? (encrypt) : "; read ACTION; if [ -z $ACTION ]; then ACTION=encrypt; fi # ask if this is a file or a directory echo "is this a file or directory? (file) : "; read FILEORDIR; if [ -z $FILEORDIR ]; then FILEORDIR=file; fi # ask for full path to the file echo "enter full path to the $FILEORDIR (no trailing slash) : "; read FILE; if [ -z $FILE ]; then echo "no $FILEORDIR entered, exiting."; exit; fi # if directory, check it exists if [ $FILEORDIR = 'directory' ]; then if [ -d $FILE ]; then echo "directory $FILE exists..." else echo "$FILE does not exist, exiting." exit; fi fi # if file, check it exists if [ $FILEORDIR = 'file' ]; then if [ -f $FILE ]; then echo "file $FILE exists..."; FILEBASE=`basename $FILE`; else echo "$FILE does not exist, exiting."; exit; fi fi # ask for output location echo "Enter output directory with no trailing slash ($OUTPUTFILE) :"; read MYOUTFILE; if [ -z $MYOUTFILE ]; then MYOUTFILE=$OUTPUTFILE; fi # check that the output dir exists, if not, create it if [ -d $MYOUTFILE ]; then echo ""; else mkdir $MYOUTFILE; fi # ask for the gpg recipient echo "Enter the GPG recipient :"; read RECIPIENT; if [ -z $RECIPIENT ]; then echo "no GPG recipient entered, exiting."; exit; fi if [ $ACTION = 'decrypt' ] then # Ask for their GPG passphrase silently echo "Enter GPG passphrase : "; stty -echo read PASSWORD; stty echo fi ############# BEGIN MEAT ############### # if it's an encrypt job if [ $ACTION = 'encrypt' ]; then if [ $FILEORDIR = 'file' ]; then # if it's a file gpg --encrypt --recipient "$RECIPIENT" --output "${MYOUTFILE}/${FILEBASE}.gpg" $FILE; else # it's a directory - loop thru it and encrypt each file for file in `ls $FILE | tr : " "` do gpg --encrypt --recipient "$RECIPIENT" --output "${MYOUTFILE}/${file}.gpg" ${FILE}/${file}; done fi # end if for file or directory fi # end action=encrypt # if it's an decrypt job if [ $ACTION = 'decrypt' ]; then if [ $FILEORDIR = 'file' ]; then # if it's a file OUTFILE=`echo $FILEBASE | sed 's/\.gpg//g'`; GPGOUT=`gpg --decrypt --recipient "$RECIPIENT" --output ${MYOUTFILE}/${OUTFILE} --passphrase "$PASSWORD" $FILE &> /dev/null`; else # it's a directory - loop thru it and encrypt each file for file in `ls $FILE | tr : " "` do OUTFILE=`echo $file | sed 's/\.gpg//g'`; GPGOUT=`gpg --decrypt --recipient "$RECIPIENT" --output ${MYOUTFILE}/${OUTFILE} --passphrase "$PASSWORD" ${FILE}/${file} &> /dev/null`; done fi # end if for file or directory echo ""; echo "BE SURE TO DELETE THE DECRYPTED FILES!"; fi # end action=decrypt
Monday, April 16, 2007
Shell script to ecrypt/decrypt files with GPG
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment