apt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/sh
  2. TARGETS='updates security backports'
  3. TARGET=
  4. usage() {
  5. cat <<EOH
  6. USAGE: $(basename "$0") [OPTIONS]
  7. Get updates for packages managed by apt
  8. Options:
  9. -h Shows this help
  10. -t Target ($(echo "${TARGETS}" | sed 's/ / or /g'))
  11. EOH
  12. }
  13. while getopts "ht:" OPT ; do
  14. case "$OPT" in
  15. h)
  16. usage
  17. exit 0
  18. ;;
  19. t)
  20. TARGET="$OPTARG"
  21. ;;
  22. esac
  23. done
  24. if [ -z "${TARGET}" ]; then
  25. printf "[ERR] Target is missing\n"
  26. usage
  27. exit 1
  28. fi
  29. if ! echo "${TARGET}" | egrep -q "^($(echo "${TARGETS}" | sed 's/ /|/g'))$"; then
  30. printf "[ERR] info '${TARGET}' not available in [$(echo "${TARGETS}" | sed 's/ /, /g')]\n"
  31. usage
  32. exit 1
  33. fi
  34. DISTRO=$(lsb_release -c -s)
  35. case "${TARGET}" in
  36. updates)
  37. apt-get -s -o Debug::NoLocking=true upgrade | grep -c '^Inst'
  38. ;;
  39. security)
  40. apt-get -s -o Debug::NoLocking=true upgrade | egrep -c "^Inst [^ ]+ \[[^]]+\] \([^ ]+ .*(Debian-Security|${DISTRO}-security)"
  41. ;;
  42. backports)
  43. apt-get -s -o Debug::NoLocking=true upgrade | egrep -c "^Inst [^ ]+ \[[^]]+\] \([^ ]+ .*(Debian Backports|${DISTRO}-backports)"
  44. ;;
  45. esac
  46. exit 0