Skip to content

Instantly share code, notes, and snippets.

@Ram-Z
Created December 11, 2015 23:48
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ram-Z/534cdd337d87fe822dac to your computer and use it in GitHub Desktop.
Save Ram-Z/534cdd337d87fe822dac to your computer and use it in GitHub Desktop.
#!/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 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...."
binpath=${path:-/usr/bin}
bins=( $(find "$binpath" "${findopts[@]}" -type f -executable) )
checkso ${bins[@]}
echo " "
echo "Searching broken libs...."
libpath=${path:-/usr/lib}
libs=( $(find $libpath "${findopts[@]}" -name '*.so' -type f -executable) )
checkso ${libs[@]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment