X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/9dc930f399a7274b4134cb4c2cd63b6fbd536bcf..refs/heads/cadscan:/bin/socheck diff --git a/bin/socheck b/bin/socheck index f85bb21..ab6a411 100755 --- a/bin/socheck +++ b/bin/socheck @@ -1,20 +1,57 @@ #!/bin/bash +version="0.1" + +function usage () +{ + echo "Usage : $0 [options] [PATH] + Checks installed libraries for missing dynamic links. + + Options: + -d,--depth Max depth to search + -h,--help Display this message + -v,--version Display script version" +} + checkso() { for f in ${@}; do - if sudo ldd $f | grep -q "not found"; then + if sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH ldd $f | grep -q "not found"; then echo "$(LC_ALL=C pacman -Qoq $f) $f seems broken!" fi done } +# Parse arguments +declare -a args +while [[ $# > 0 ]]; do + opt="$1" + + case $opt in + -d|--depth) depth=$2; shift 2 ;; + -h|--help) usage; exit 0 ;; + -v|--version) echo "$0 -- Version $version"; exit 0 ;; + -* ) + echo -e "\n Option does not exist : $opt\n" + usage; exit 1 ;; + + *) args+=($opt); shift ;; + esac +done +path="${args[0]}" + +declare -a findopts +[[ $depth ]] && findopts+=(-maxdepth "$depth") + sudo -v +echo "${findopts[@]}" echo "Searching broken binaries...." -bins=( $(find /usr/bin -maxdepth 1 -type f -executable) ) +binpath=${path:-/usr/bin} +bins=( $(find "$binpath" "${findopts[@]}" -type f -executable) ) checkso ${bins[@]} echo " " echo "Searching broken libs...." -libs=( $(find /usr/lib/*.so* -maxdepth 1 -type f -executable) ) +libpath=${path:-/usr/lib} +libs=( $(find $libpath "${findopts[@]}" -name '*.so' -type f -executable) ) checkso ${libs[@]}