Browse Source

netflow fix

devel
Dmitry Novikov 7 years ago
parent
commit
5863ea1730
  1. 17
      abonapp/views.py
  2. BIN
      agent/netflow/djing_flow.tar.gz
  3. 10
      agent/netflow/netflow_collect.sh
  4. 13
      agent/netflow/netflow_handler.sh
  5. 4
      agent/netflow/start_netflow.sh

17
abonapp/views.py

@ -9,8 +9,8 @@ from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from django.core.exceptions import PermissionDenied, ValidationError
from django.db import IntegrityError, ProgrammingError, transaction
from django.db.models import Count, Q
from django.db import IntegrityError, transaction
from django.db.models import Count
from django.http import (
HttpResponse, HttpResponseBadRequest,
HttpResponseRedirect
@ -255,7 +255,8 @@ class DebtsListView(LoginAdminPermissionMixin, OrderedFilteredList):
def get_queryset(self):
if not hasattr(self, 'abon'):
abon = get_object_or_404(models.Abon, username=self.kwargs.get('uname'))
self.abon = abonself.abon = abon
if not hasattr(self, 'abon'):
self.abon = abon
return models.InvoiceForPayment.objects.filter(abon=self.abon)
def get_context_data(self, **kwargs):
@ -694,7 +695,7 @@ def clear_dev(request, gid: int, uname):
@json_view
def abon_ping(request, gid: int, uname):
ip = request.GET.get('cmd_param')
status = False
status = 1
text = '<span class="glyphicon glyphicon-exclamation-sign"></span> %s' % _('no ping')
abon = get_object_or_404(models.Abon, username=uname)
try:
@ -711,7 +712,7 @@ def abon_ping(request, gid: int, uname):
ping_result = mngr.ping(ip)
if ping_result is None:
return {
'status': False,
'status': 1,
'dat': text
}
if isinstance(ping_result, tuple):
@ -723,7 +724,7 @@ def abon_ping(request, gid: int, uname):
received, sent = ping_result
else:
return {
'status': False,
'status': 1,
'dat': text
}
loses_percent = (
@ -738,7 +739,7 @@ def abon_ping(request, gid: int, uname):
text = '<span class="glyphicon glyphicon-ok"></span> %s' % _(
'ok ping, %(return)d/%(all)d loses'
) % ping_result
status = True
status = 0
else:
text = '<span class="glyphicon glyphicon-exclamation-sign"></span> %s' % _(
'no ping, %(return)d/%(all)d loses'
@ -750,7 +751,7 @@ def abon_ping(request, gid: int, uname):
text = str(e)
return {
'status': 0 if status else 1,
'status': status,
'dat': text
}

BIN
agent/netflow/djing_flow.tar.gz

10
agent/netflow/netflow_collect.sh

@ -17,7 +17,6 @@ ldb = db.get('default')
print('%s %s %s %s %d' % (ldb['NAME'], ldb['USER'],
ldb['PASSWORD'], ldb['HOST'], ldb['PORT']))"`
if ! ping -c 1 ${mysql_host} &> /dev/null; then
echo "Host ${mysql_host} is not accessible"
fi
@ -33,19 +32,16 @@ do
echo "${uip}-${uid}" >> ${tmp_ipuser_file}
done
# Сигналим коллекторам чтоб они сбросили дамп в папку /tmp/djing_flow/dump
for fl in /run/flow.pid.*; do
kill -HUP `cat ${fl}`
sleep 1
done
sleep 1
# Экспортируем всё в mysql
export LD_LIBRARY_PATH=.
flow-cat /tmp/djing_flow/dump/*.dmp | ./djing_flow -i ${tmp_ipuser_file} -cl | mysql -u ${mysql_user} -h ${mysql_host} -p -D ${mysql_database} -P ${mysql_port} --password=${mysql_passw}
flow-cat /tmp/djing_flow/dump/*/*.dmp | ./djing_flow -i ${tmp_ipuser_file} -cl | mysql -u ${mysql_user} -h ${mysql_host} -p -D ${mysql_database} -P ${mysql_port} --password=${mysql_passw}
rm -f tmp_ipuser_file
rm -f /tmp/djing_flow/dump/*.dmp
rm -f /tmp/djing_flow/dump/*/*.dmp

13
agent/netflow/netflow_handler.sh

@ -1,13 +1,20 @@
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo "missing port"
exit
fi
if [ -z "$2" ]; then
echo "missing filename"
exit
fi
fname=$1
fname=$2
port=$1
PATH=/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
cd /tmp/djing_flow
mkdir -p dump
mv ${fname} dump/${fname}.dmp
mkdir -p dump/${port}
echo "mv ${port}/${fname} dump/${port}/${fname}.dmp" >> /tmp/mv.log
mv ${port}/${fname} dump/${port}/${fname}.dmp

4
agent/netflow/start_netflow.sh

@ -9,6 +9,6 @@ fi
port=$1
DIRECTORY=`dirname $(readlink -e "$0")`
mkdir -p /tmp/djing_flow
mkdir -p /tmp/djing_flow/${port}
flow-capture -R ${DIRECTORY}/netflow_handler.sh -p /run/flow.pid -w /tmp/djing_flow -n1 -N0 0/0/${port}
flow-capture -R "${DIRECTORY}/netflow_handler.sh ${port}" -p /run/flow.pid -w /tmp/djing_flow/${port} -n1 -N0 0/0/${port}
Loading…
Cancel
Save