aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenedikt Böhm <bb@xnull.de>2009-08-06 09:47:26 +0200
committerBenedikt Böhm <bb@xnull.de>2009-08-06 09:47:26 +0200
commit808964088ffe3a8982a44ae02af8d701531a3154 (patch)
tree183eb09bc55e83ac81e07d929845a84484b567fe
parentrelease 0.4 (diff)
downloadporticron-808964088ffe3a8982a44ae02af8d701531a3154.tar.gz
porticron-808964088ffe3a8982a44ae02af8d701531a3154.tar.bz2
porticron-808964088ffe3a8982a44ae02af8d701531a3154.zip
implement command line arguments for verbose, nomail and config filev0.5
-rw-r--r--LICENSE2
-rw-r--r--README.rst18
-rwxr-xr-xbin/porticron137
3 files changed, 114 insertions, 43 deletions
diff --git a/LICENSE b/LICENSE
index 766f87b..9fad5a0 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2008 Benedikt Böhm <bb@xnull.de>
+Copyright (c) 2008-2009 Benedikt Böhm <bb@xnull.de>
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/README.rst b/README.rst
index c8233ec..4a94fc2 100644
--- a/README.rst
+++ b/README.rst
@@ -3,7 +3,7 @@ porticron
=========
:Author: `Benedikt Böhm <bb@xnull.de>`_
-:Version: 0.4
+:Version: 0.5
:Web: http://bb.xnull.de/projects/porticron/
:Source: http://git.xnull.de/gitweb/?p=porticron.git (also on `github <http://github.com/hollow/porticron>`_)
:Download: http://bb.xnull.de/projects/porticron/dist/
@@ -21,6 +21,22 @@ porticron is available via portage:
emerge porticron
+Usage
+=====
+
+Since version 0.5 porticron supports various command line arguments to change
+operating modes:
+::
+
+ Usage: porticron [-hvVn] [-c <file>]
+
+ -h print this help text
+ -v enable verbose output
+ -V print version number
+ -n do not send upgrade mails
+ -c <file> use configuration in <file>
+
+
Configuration
=============
diff --git a/bin/porticron b/bin/porticron
index 3761e30..3e85e6c 100755
--- a/bin/porticron
+++ b/bin/porticron
@@ -1,10 +1,64 @@
#!/bin/bash
# vim: set fileencoding=utf-8 ts=4 sw=4 noexpandtab
-# load config
+PORTICRON_VERSION="0.5"
+
+version() {
+ echo "porticron ${PORTICRON_VERSION}"
+ echo "Copyright (c) 2008-2009 Benedikt Böhm <bb@xnull.de>"
+ exit 0
+}
+
+usage() {
+ echo "Usage: porticron [-hvn] [-c <file>]"
+ echo
+ echo " -h print this help text"
+ echo " -v enable verbose output"
+ echo " -V print version number"
+ echo " -n do not send upgrade mails"
+ echo " -c <file> use configuration in <file>"
+ echo
+ exit 0
+}
+
+log() {
+ [[ ${VERBOSE} -eq 1 ]] && echo "$@" >&2
+}
+
+send_mail() {
+ if [[ ${NOMAIL} -eq 1 ]]; then
+ cat
+ else
+ ${SENDMAIL:-/usr/sbin/sendmail} -t
+ fi
+}
+
+
+# parse command line
+while getopts "hvVnc:" opt; do
+ case $opt in
+ h) usage;;
+ v) VERBOSE=1;;
+ V) version;;
+ n) NOMAIL=1;;
+ c) PORTICRON_CONF=${OPTARG};;
+ ?) exit 1;;
+ esac
+done
+
+
+# defaults
+: ${VERBOSE:=0}
+: ${NOMAIL:=0}
: ${PORTICRON_CONF:=/etc/porticron.conf}
+log "using PORTICRON_CONF=${PORTICRON_CONF}, NOMAIL=${NOMAIL}, VERBOSE=${VERBOSE}"
+
-if [[ -r ${PORTICRON_CONF} ]]; then
+# load config
+if [[ ! -r ${PORTICRON_CONF} ]]; then
+ echo "could not open configuration file ${PORTICRON_CONF}"
+ exit 1
+else
source ${PORTICRON_CONF}
fi
@@ -18,12 +72,49 @@ PORTDIR=$(portageq portdir)
# sync if desired
+log "running SYNC_CMD: ${SYNC_CMD:-/usr/bin/emerge --sync}"
${SYNC_CMD:-/usr/bin/emerge --sync} &>/dev/null
+log "running SYNC_OVERLAY_CMD: ${SYNC_OVERLAYS_CMD:-/bin/true}"
${SYNC_OVERLAYS_CMD:-/bin/true} &>/dev/null
+# GLSA check
+log "running GLSA_AFFECTED: /usr/bin/glsa-check --test --verbose affected"
+GLSA_AFFECTED=$(/usr/bin/glsa-check --test --verbose affected 2>/dev/null)
+log "running GLSA_UPGRADES: /usr/bin/glsa-check --pretend affected"
+GLSA_UPGRADES=$(/usr/bin/glsa-check --pretend affected | grep '^ ')
+
+if [[ -n ${GLSA_AFFECTED} ]]; then
+ GLSA_MSG="
+${SCRIPT_NAME} has detected that this system is affected by the following GLSAs:
+
+$(echo "${GLSA_AFFECTED}" | sed 's/^20/ 20/')
+
+========================================================================
+
+The following updates should be performed for these GLSAs:
+
+${GLSA_UPGRADES}
+"
+
+ cat <<EOF | send_mail
+To: ${RCPT:-root@${FQDN}}
+From: root@${FQDN}
+Subject: WARNING: Gentoo security updates on ${FQDN} [ ${IP} ]
+Date: ${DATE}
+
+porticron report [${DATE}]
+========================================================================
+${GLSA_MSG}
+--
+${SCRIPT_NAME}
+EOF
+fi
+
+
# build a list of changed ebuilds
if [[ -n ${DIFF_CMD} ]]; then
+ log "running DIFF_CMD: ${DIFF_CMD}"
DIFF=$(${DIFF_CMD} 2>/dev/null)
fi
@@ -39,6 +130,7 @@ fi
# build list of upgrades
: ${UPGRADE_OPTS:=--deep --update}
+log "running UPGRADE_CMD: /usr/bin/emerge ${UPGRADE_OPTS} --quiet --pretend world"
UPGRADE=$(/usr/bin/emerge ${UPGRADE_OPTS} --quiet --pretend world 2>/dev/null)
if [[ -n ${UPGRADE} ]]; then
@@ -67,10 +159,11 @@ fi
# send mail
if [[ -z ${UPGRADE_MSG} && -z ${DIFF_MSG} ]]; then
+ log "no upgrades found, exiting."
exit 0
fi
-cat <<EOF | ${SENDMAIL:-/usr/sbin/sendmail} -t
+cat <<EOF | send_mail
To: ${RCPT:-root@${FQDN}}
From: root@${FQDN}
Subject: Gentoo package updates on ${FQDN} [ ${IP} ]
@@ -82,41 +175,3 @@ ${DIFF_MSG}${UPGRADE_MSG}
--
${SCRIPT_NAME}
EOF
-
-
-# GLSA check
-GLSA_AFFECTED=$(/usr/bin/glsa-check --test --verbose affected 2>/dev/null)
-GLSA_UPGRADES=$(/usr/bin/glsa-check --pretend affected | grep '^ ')
-
-if [[ -n ${GLSA_AFFECTED} ]]; then
- GLSA_MSG="
-${SCRIPT_NAME} has detected that this system is affected by the following GLSAs:
-
-$(echo "${GLSA_AFFECTED}" | sed 's/^20/ 20/')
-
-========================================================================
-
-The following updates should be performed for these GLSAs:
-
-${GLSA_UPGRADES}
-"
-fi
-
-
-# send mail
-if [[ -z ${GLSA_MSG} ]]; then
- exit 0
-fi
-
-cat <<EOF | ${SENDMAIL:-/usr/sbin/sendmail} -t
-To: ${RCPT:-root@${FQDN}}
-From: root@${FQDN}
-Subject: WARNING: Gentoo security updates on ${FQDN} [ ${IP} ]
-Date: ${DATE}
-
-porticron report [${DATE}]
-========================================================================
-${GLSA_MSG}
---
-${SCRIPT_NAME}
-EOF