LINUX.ORG.RU

История изменений

Исправление futurama, (текущая версия) :

вот что у меня сейчас работает

#!/bin/sh
LANG=C
PATH=/bin:/usr/bin:/usr/lib/nagios/plugins

if [ $# -lt 1 ]; then
        echo "Usage: $0 <cam number [1|2|3]>"
        exit 1
fi
CAMNUM="$1"
if   [ "$CAMNUM" -eq 1 ]; then
        IP='10.0.0.202'
elif [ "$CAMNUM" -eq 2 ]; then
        IP='10.0.0.201'
elif [ "$CAMNUM" -eq 3 ]; then
        IP='10.0.0.203'
else
        echo "Unknown cam number: \"$CAMNUM\""
        exit 1
fi

echo "Start on cam N${CAMNUM}, IP=$IP"
while :; do
        if check_ping -H "$IP" -w 10,25% -c 20,50% -t 10 >/dev/null 2>/dev/null; then
                # 2016-07-29
                 DATE=$(date '+%F')
                START=$(date '+%H-%M-%S')

                mkdir -p /Cams/cam0$CAMNUM/$DATE

                timeout -k 5 305 ffmpeg -rtsp_transport tcp -i 'rtsp://'"$IP"'/user=admin&password=&channel=1&stream=0' -r 30 -vcodec copy -an -t 300 "/Cams/cam0$CAMNUM/$DATE/hms_${START}.mp4" </dev/null >/dev/null 2>/dev/null
                sleep 1
        else
                echo "$DATE $START : No ping to camera N${CAMNUM}, \"${IP}\""
                sleep 60
        fi
done

$ df -h /Cams/
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg2-cam01  2.0T  1.8T  205G  91% /Cams

$ ls /Cams/
cam01  cam02  cam03

$ ls /Cams/cam02
2017-10-26  2017-10-28  2017-10-30  2017-11-01  2017-11-03  2017-11-05  2017-11-07
2017-10-27  2017-10-29  2017-10-31  2017-11-02  2017-11-04  2017-11-06  2017-11-08

$ crontab -l | grep capture
10   0 * * * /home/user/bin/remove_old_capture.sh

$ cat /home/user/bin/remove_old_capture.sh

#!/bin/sh

BASEDIR='/Cams'

set -e
exec  >> /var/tmp/remove_old_capture.log
exec 2>> /var/tmp/remove_old_capture.err
while :; do
/usr/lib/nagios/plugins/check_disk -w 5% -c 3% "$BASEDIR" && exit 0
        for d1 in $BASEDIR/cam*; do
                d2=`ls -1tr "$d1" | head -1`
                if [ -d "$d1/$d2" ]; then
                        rm -rf "$d1/$d2"
                fi
        done
done
exit 0

Исправление futurama, :

вот что у меня сейчас работает

#!/bin/sh
LANG=C
PATH=/bin:/usr/bin:/usr/lib/nagios/plugins

if [ $# -lt 1 ]; then
        echo "Usage: $0 <cam number [1|2|3]>"
        exit 1
fi
CAMNUM="$1"
if   [ "$CAMNUM" -eq 1 ]; then
        IP='10.0.0.202'
elif [ "$CAMNUM" -eq 2 ]; then
        IP='10.0.0.201'
elif [ "$CAMNUM" -eq 3 ]; then
        IP='10.0.0.203'
else
        echo "Unknown cam number: \"$CAMNUM\""
        exit 1
fi

echo "Start on cam N${CAMNUM}, IP=$IP"
while :; do
        if check_ping -H "$IP" -w 10,25% -c 20,50% -t 10 >/dev/null 2>/dev/null; then
                # 2016-07-29
                 DATE=$(date '+%F')
                START=$(date '+%H-%M-%S')

                mkdir -p /Cams/cam0$CAMNUM/$DATE

                timeout -k 5 305 ffmpeg -rtsp_transport tcp -i 'rtsp://'"$IP"'/user=admin&password=&channel=1&stream=0' -r 30 -vcodec copy -an -t 300 "/Cams/cam0$CAMNUM/$DATE/hms_${START}.mp4" </dev/null >/dev/null 2>/dev/null
                sleep 1
        else
                echo "$DATE $START : No ping to camera N${CAMNUM}, \"${IP}\""
                sleep 60
        fi
done

$ df -h /Cams/
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg2-cam01  2.0T  1.8T  205G  91% /Cams

$ ls /Cams/
cam01  cam02  cam03

$ ls /Cams/cam02
2017-10-26  2017-10-28  2017-10-30  2017-11-01  2017-11-03  2017-11-05  2017-11-07
2017-10-27  2017-10-29  2017-10-31  2017-11-02  2017-11-04  2017-11-06  2017-11-08

$ crontab -l | grep capture
10   0 * * * /home/user/bin/remove_old_capture.sh

$ cat /home/sergey/bin/remove_old_capture.sh

#!/bin/sh

BASEDIR='/Cams'

set -e
exec  >> /var/tmp/remove_old_capture.log
exec 2>> /var/tmp/remove_old_capture.err
while :; do
/usr/lib/nagios/plugins/check_disk -w 5% -c 3% "$BASEDIR" && exit 0
        for d1 in $BASEDIR/cam*; do
                d2=`ls -1tr "$d1" | head -1`
                if [ -d "$d1/$d2" ]; then
                        rm -rf "$d1/$d2"
                fi
        done
done
exit 0

Исходная версия futurama, :

вот что у меня сейчас работает

#!/bin/sh
LANG=C
PATH=/bin:/usr/bin:/usr/lib/nagios/plugins

if [ $# -lt 1 ]; then
        echo "Usage: $0 <cam number [1|2]>"
        exit 1
fi
CAMNUM="$1"
if   [ "$CAMNUM" -eq 1 ]; then
        IP='10.0.0.202'
elif [ "$CAMNUM" -eq 2 ]; then
        IP='10.0.0.201'
elif [ "$CAMNUM" -eq 3 ]; then
        IP='10.0.0.203'
else
        echo "Unknown cam number: \"$CAMNUM\""
        exit 1
fi

echo "Start on cam N${CAMNUM}, IP=$IP"
while :; do
        if check_ping -H "$IP" -w 10,25% -c 20,50% -t 10 >/dev/null 2>/dev/null; then
                # 2016-07-29
                 DATE=$(date '+%F')
                START=$(date '+%H-%M-%S')

                mkdir -p /Cams/cam0$CAMNUM/$DATE

                timeout -k 5 305 ffmpeg -rtsp_transport tcp -i 'rtsp://'"$IP"'/user=admin&password=&channel=1&stream=0' -r 30 -vcodec copy -an -t 300 "/Cams/cam0$CAMNUM/$DATE/hms_${START}.mp4" </dev/null >/dev/null 2>/dev/null
                sleep 1
        else
                echo "$DATE $START : No ping to camera N${CAMNUM}, \"${IP}\""
                sleep 60
        fi
done

$ df -h /Cams/
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vg2-cam01  2.0T  1.8T  205G  91% /Cams

$ ls /Cams/
cam01  cam02  cam03

$ ls /Cams/cam02
2017-10-26  2017-10-28  2017-10-30  2017-11-01  2017-11-03  2017-11-05  2017-11-07
2017-10-27  2017-10-29  2017-10-31  2017-11-02  2017-11-04  2017-11-06  2017-11-08

$ crontab -l | grep capture
10   0 * * * /home/user/bin/remove_old_capture.sh

$ cat /home/sergey/bin/remove_old_capture.sh

#!/bin/sh

BASEDIR='/Cams'

set -e
exec  >> /var/tmp/remove_old_capture.log
exec 2>> /var/tmp/remove_old_capture.err
while :; do
/usr/lib/nagios/plugins/check_disk -w 5% -c 3% "$BASEDIR" && exit 0
        for d1 in $BASEDIR/cam*; do
                d2=`ls -1tr "$d1" | head -1`
                if [ -d "$d1/$d2" ]; then
                        rm -rf "$d1/$d2"
                fi
        done
done
exit 0