#!/bin/bash # PATH_INITGEN="/tmp/initgen_path.log" SUM_INITGEN="/tmp/initgen_sum.log" printf 'lib\nusr/lib\nbin\nsbin\n' > $PATH_INITGEN # Starting loop of path directory while IFS= read READPATH; do ls $READPATH > $SUM_INITGEN # Starting ELF loop while IFS= read FILENAME; do # Checking if the ELF is not a symlink if [[ $(file -b $READPATH/$FILENAME -e soft) == "data" ]]; then INITMD5=$(md5sum $READPATH/$FILENAME | cut -c -32) FILEMD5=$(md5sum /$READPATH/$FILENAME | cut -c -32) # if ELF system does not match init, update required if [[ "$INITMD5" != "$FILEMD5" ]]; then # Clean everything after .so (if any) FILESTRIP=$(echo $FILENAME | cut -f -2 -d .) # Delete previous ELF matching the name rm $READPATH/$FILESTRIP* cp -P /$READPATH/$FILESTRIP* $READPATH/ echo "/$READPATH/$FILENAME has been updated" # If ELF system match with init, nothing to do else echo "/$READPATH/$FILENAME does not need update" fi fi # End of the ELF loop done < $SUM_INITGEN rm $SUM_INITGEN # End loop of path directory done < $PATH_INITGEN rm $PATH_INITGEN