Hardware
Hardware
Reputation Top 1%
Hardware
17 Snippets  (43rd place)
Published
1 Channel
Created
1 Channel
Following
368 points  (83rd place)
Reputation
Top 10% Publisher
Senior Code Generator
Serious Popular Coder
Senior Popular Coder
Junior Autobiographer
Serious Autobiographer
Junior Famous Coder
Serious Famous Coder
Junior Wise Coder

Recent Snippets See all snippets by Hardware

public by hardware  1082  1  4  0

Smartd notification

Smartd notification: smartdnotify.sh
#!/bin/sh

TMP_FILE=/tmp/smartd_report

echo "" > $TMP_FILE

# Arguments
echo "Command line argument 1:" >> $TMP_FILE
echo $1 >> $TMP_FILE
echo "Command line argument 2:" >> $TMP_FILE
echo $2 >> $TMP_FILE
echo "Command line argument 3:" >> $TMP_FILE
echo $3 >> $TMP_FILE

# Variables d'environnement
echo "Variables are:"       >> $TMP_FILE
echo "$SMARTD_DEVICE"       >> $TMP_FILE
echo "$SMARTD_DEVICESTRING" >> $TMP_FILE
echo "$SMARTD_DEVICETYPE"   >> $TMP_FILE
echo "$SMARTD_MESSAGE"      >> $TMP_FILE
echo "$SMARTD_FULLMESSAGE"  >> $TMP_FILE
echo "$SMARTD_ADDRESS"      >> $TMP_FILE
echo "$SMARTD_SUBJECT"      >> $TMP_FILE
echo "$SMARTD_TFIRST"       >> $TMP_FILE
echo "$SMARTD_TFIRSTEPOCH"  >> $TMP_FILE

# Génération d'un rapport complet sur le disque concerné
/usr/sbin/smartctl -a -d $SMARTD_DEVICETYPE $SMARTD_DEVICE >> $TMP_FILE

MESSAGE="[SMARTD ALERT] Une erreur est survenue sur le disque ${SMARTD_DEVICE}, veuillez procéder à une sauvegarde immédiate des données !"

# Notification KDE
/usr/bin/kdialog --error "$MESSAGE" --title "Erreur S.M.A.R.T - ${SMARTD_DEVICE}"

# Notification console
wall <<EOF
/!\ [SMARTD ALERT] /!\\
Problem detected with disk: $SMARTD_DEVICESTRING
Warning message from smartd is: $SMARTD_MESSAGE
Report is available here : $TMP_FILE
EOF

exit 0

;

public by hardware  127559  0  3  0

Prewikka.service file

Prewikka.service file: prewikka.service
[Unit]
Description=Prewikka
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/prewikka-httpd

Restart=always
TimeoutStopSec=10s
TimeoutStartSec=5s
StartLimitInterval=120s
StartLimitBurst=5

[Install]
WantedBy=multi-user.target

;

public by hardware  1294  0  3  0

Search mail providers in db

Search mail providers in db: gistfile1.sql
CREATE OR REPLACE FUNCTION CHARINDEX(text, text, integer) RETURNS integer AS $$ 
SELECT CASE WHEN strpos(substr($2, $3+1), $1) = 0 THEN 0 
ELSE strpos(substr($2, $3+1), $1) + $3 END; 
$$ LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;

SELECT DISTINCT substring(mail,charindex('@',mail,1)+1,length(mail)) FROM table;

;

public by Quentin PANISSIER  794  0  3  0

ipban

ipban: ipban.sh
CSI="\033["
CEND="${CSI}0m"
CRED="${CSI}1;31m"
CCYAN="${CSI}1;36m"

ipban() {

  ACTION=$1
  IP=$2

  case $ACTION in
    "add")
      if [[ $IP != "" ]]; then
        iptables -A INPUT -s $IP -j DROP
        iptables-save > /etc/iptables/rules.v4
      fi
      ;;
    "remove")
      if [[ $IP != "" ]]; then
        iptables -D INPUT -s $IP -j DROP
        iptables-save > /etc/iptables/rules.v4
      fi
      ;;
    "list")
      echo -e "${CCYAN}Liste des adresses ip bannies :${CEND}"
      echo -e "${CCYAN}----------------------------------------------------------------${CEND}"
      iptables -L INPUT | grep DROP
      echo -e "${CCYAN}----------------------------------------------------------------${CEND}"
      ;;
    "count")
      CIP=$(iptables -L INPUT | grep DROP | wc -l)
      echo -e "Nombre d'adresses ip bannies : ${CRED}$CIP${CEND}"
      ;;
    *)
      echo "Utilisation: $0 {add|remove|list|count} [IP]"
    esac
}

;

public by Quentin PANISSIER  644  0  3  0

Prelude Correlator - Script init.d

Prelude Correlator - Script init.d: prelude-correlator
#!/bin/sh
#
# init.d script for prelude-correlator with LSB support.
#
# Copyright (c) 2008 Pierre Chifflier <pollux@debian.org>
#
# This is free software; you may redistribute it and/or modify
# it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2,
# or (at your option) any later version.
#
# This is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License with
# the Debian operating system, in /usr/share/common-licenses/GPL;  if
# not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
#
### BEGIN INIT INFO
# Provides:          prelude-correlator
# Required-Start:    $network $local_fs $remote_fs $syslog
# Required-Stop:     $remote_fs
# Should-Start:      $named
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Correlation engine for Prelude IDS
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON=/usr/local/bin/prelude-correlator  # Introduce the server's location here
NAME=prelude-correlator                   # Introduce the short server's name here
DESC=prelude-correlator                   # Introduce a short description here
LOGDIR=/var/log/prelude-correlator        # Log directory to use

PIDFILE=/var/run/$NAME.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

# Default options, these can be overriden by the information
# at /etc/default/$NAME
DAEMON_OPTS="-d -P $PIDFILE"          # Additional options given to the server

DIETIME=3               # Time to wait for the server to die, in seconds
                        # If this value is set too low you might not
                        # let some servers to die gracefully and
                        # 'restart' will not work

#STARTTIME=2             # Time to wait for the server to start, in seconds
                        # If this value is set each time the server is
                        # started (on start or restart) the script will
                        # stall to try to determine if it is running
                        # If it is not set and the server takes time
                        # to setup a pid file the log message might 
                        # be a false positive (says it did not start
                        # when it actually did)
                        
LOGFILE=$LOGDIR/$NAME.log  # Server logfile
#DAEMONUSER=prelude-correlator   # Users to run the daemons as. If this value
                        # is set start-stop-daemon will chuid the server

# Include defaults if available
if [ -f /etc/default/$NAME ] ; then
        . /etc/default/$NAME
fi

# Check that the user exists (if we set a user)
# Does the user exist?
if [ -n "$DAEMONUSER" ] ; then
    if getent passwd | grep -q "^$DAEMONUSER:"; then
        # Obtain the uid and gid
        DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
        DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
    else
        log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
        exit 1
    fi
fi


set -e

running_pid() {
# Check if a given process pid's cmdline matches a given name
    pid=$1
    name=$2
    [ -z "$pid" ] && return 1
    [ ! -d /proc/$pid ] &&  return 1
    #cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
    ## Is this the expected server
    #[ "$cmd" != "$name" ] &&  return 1
    cat /proc/$pid/cmdline | grep -q -s $name
    result=$?
    if [ "x$result" != "x0" ]; then return 1; fi
    return 0
}

running() {
# Check if the process is running looking at /proc
# (works for all users)

    # No pidfile, probably no daemon present
    [ ! -f "$PIDFILE" ] && return 1
    pid=`cat $PIDFILE`
    running_pid $pid $DAEMON || return 1
    return 0
}

start_server() {
# Start the process using the wrapper
        if [ -z "$DAEMONUSER" ] ; then
            start_daemon -p $PIDFILE $DAEMON $DAEMON_OPTS
            errcode=$?
        else
# if we are using a daemonuser then change the user id
            touch $PIDFILE
            chown $DAEMONUSER $PIDFILE
            start-stop-daemon --start --quiet --pidfile $PIDFILE \
                        --chuid $DAEMONUSER \
                        --exec $DAEMON -- $DAEMON_OPTS
            errcode=$?
        fi
        # give it 1 second to start
        sleep 1
        return $errcode
}

stop_server() {
# Stop the process using the wrapper
        if [ -z "$DAEMONUSER" ] ; then
            killproc -p $PIDFILE $DAEMON
            errcode=$?
        else
# if we are using a daemonuser then look for process that match
            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
                        --user $DAEMONUSER
            errcode=$?
        fi

        return $errcode
}

reload_server() {
    [ ! -f "$PIDFILE" ] && return 1
    pid=pidofproc $PIDFILE # This is the daemon's pid
    # Send a SIGHUP
    kill -1 $pid
    return $?
}

force_stop() {
# Force the process to die killing it manually
        [ ! -e "$PIDFILE" ] && return
        if running ; then
                kill -15 $pid
        # Is it really dead?
                sleep "$DIETIME"s
                if running ; then
                        kill -9 $pid
                        sleep "$DIETIME"s
                        if running ; then
                                echo "Cannot kill $NAME (pid=$pid)!"
                                exit 1
                        fi
                fi
        fi
        rm -f $PIDFILE
}


case "$1" in
  start)
        log_daemon_msg "Starting $DESC " "$NAME"
        # Check if it's running first
        if running ;  then
            log_progress_msg "apparently already running"
            log_end_msg 0
            exit 0
        fi
        if start_server ; then
            # NOTE: Some servers might die some time after they start,
            # this code will detect this issue if STARTTIME is set
            # to a reasonable value
            [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time 
            if  running ;  then
                # It's ok, the server started and is running
                log_end_msg 0
            else
                # It is not running after we did start
                log_end_msg 1
            fi
        else
            # Either we could not start it
            log_end_msg 1
        fi
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        if running ; then
            # Only stop the server if we see it running
                        errcode=0
            stop_server || errcode=$?
            log_end_msg $errcode
        else
            # If it's not running don't do anything
            log_progress_msg "apparently not running"
            log_end_msg 0
            exit 0
        fi
        ;;
  force-stop)
        # First try to stop gracefully the program
        $0 stop
        if running; then
            # If it's still running try to kill it more forcefully
            log_daemon_msg "Stopping (force) $DESC" "$NAME"
                        errcode=0
            force_stop || errcode=$?
            log_end_msg $errcode
        fi
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
                errcode=0
        stop_server || errcode=$?
        # Wait some sensible amount, some server need this
        [ -n "$DIETIME" ] && sleep $DIETIME
        start_server || errcode=$?
        [ -n "$STARTTIME" ] && sleep $STARTTIME
        running || errcode=$?
        log_end_msg $errcode
        ;;
  status)

        log_daemon_msg "Checking status of $DESC" "$NAME"
        if running ;  then
            log_progress_msg "running"
            log_end_msg 0
        else
            log_progress_msg "apparently not running"
            log_end_msg 1
            exit 1
        fi
        ;;
  # Use this if the daemon cannot reload
  reload)
        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
        log_warning_msg "cannot re-read the config file (use restart)."
        ;;
  # And this if it cann
  #reload)
          #
          # If the daemon can reload its config files on the fly
          # for example by sending it SIGHUP, do it here.
          #
          # If the daemon responds to changes in its config file
          # directly anyway, make this a do-nothing entry.
          #
          # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
          # if running ; then
          #    reload_server
          #    if ! running ;  then
          # Process died after we tried to reload
          #       log_progress_msg "died on reload"
          #       log_end_msg 1
          #       exit 1
          #    fi
          # else
          #    log_progress_msg "server is not running"
          #    log_end_msg 1
          #    exit 1
          # fi
                                                                                    #;;

  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0

;