Nitraf трабла с "питоном"

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

vesel
Сообщения: 98

Nitraf трабла с "питоном"

Сообщение vesel »

Решил поставить на шлюз Nitraf....мало того что сам сайт где он разрабатывался "мертв"...nitalaut.sarkor.uz (но это ничего ..нашел на просторах инета)..

На шлюзе Debian6 ...для подсчета траффика используется net-acct...в его составе идут питоновские скрипты...в конфигах все честно но при попытке запуска скриптов
./rawtraf.py
/checkquota.py

пишет
./settings/checkquota.py:5: DeprecationWarning: The popen2 module is deprecated. Use the subprocess module.
import popen2

то есть popen2 устарел и юзайте субпроцессы...в теле скрипта такое

import popen2
x,y=popen2.popen2('date +%Y%m%d')

вот на это видать и ругается ...
Пробовал прописать
import subprocess

в результате конечно каша...Я так думаю что эту строчку нужно переписать соответственно новому правилу...


Посему призываю человека знающего эту "змеюку"
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Nitraf трабла с "питоном"

Сообщение Ленивая Бестолочь »

ну вообще у вас не ошибка, а варнинг. то бишь работать и так будет. а пока, соответственно ищите решение от авторов этого "Nitraf" - наверняка вы не первый пользователь этого продукта (привет, Сашкан).
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Nitraf трабла с "питоном"

Сообщение sash-kan »

Ленивая Бестолоч... писал(а):
15.06.2012 01:38
продукта (привет, Сашкан)
и тебе не болеть·

p.s. ку!
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Encore
Сообщения: 656
Статус: loading..............
ОС: Debian

Re: Nitraf трабла с "питоном"

Сообщение Encore »

По идее это warning-и, которые должны игнорироваться. Можно добавить аргумент -W интерпретатору, например изменить первую строку скрипта (если она такая)

Код: Выделить всё

#!/usr/bin/env python

на

Код: Выделить всё

#!/usr/bin/env python -W ignore::DeprecationWarning


Если хочется переписать, то, наверное, как-то так:

Код: Выделить всё

import subprocess
.....
p=subprocess.Popen('date +%Y%m%d', stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
x, y = p.stdout, p.stdin
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Nitraf трабла с "питоном"

Сообщение sgfault »

Encore писал(а):
24.07.2012 18:11

Код: Выделить всё

#!/usr/bin/env python -W ignore::DeprecationWarning

Вы уверены, что это сработает? Я имею в виду два аргумента в sha-bang.
Те, насколько мне известно, все это "python -W ignore::DeprecationWarning" будет просто передано как один аргумент и, соотвественно, ничего не заработает. С питоном я проверить не могу, тк не знаю его, но с вызовом, например, баша все именно так (а разницы ведь бы не должно,не так ли?).

Upd. Вот подтверждение.
execve(2):
<..>
Interpreter scripts
An interpreter script is a text file that has execute permission enabled and whose first line is of the form:

#! interpreter [optional-arg]
<..>
The semantics of the optional-arg argument of an interpreter script vary across implementations. On Linux, the entire string following the interpreter name is passed as a single argument to the
interpreter, and this string can include white space. However, behavior differs on some other systems. Some systems use the first white space to terminate optional-arg. On some systems, an
interpreter script can have multiple arguments, and white spaces in optional-arg are used to delimit the arguments.
<..>
Спасибо сказали:
Аватара пользователя
Encore
Сообщения: 656
Статус: loading..............
ОС: Debian

Re: Nitraf трабла с "питоном"

Сообщение Encore »

Да, простите, погорячился...

Код: Выделить всё

#!/usr/bin/python -W ignore::DeprecationWarning

(без env, только путь к интерпретатору)
Спасибо сказали:
sawka88
Сообщения: 2
ОС: Debian

Re: Nitraf трабла с "питоном"

Сообщение sawka88 »

Уважаемый, vesel
У Вас в итоге получилось заставить работать Nitraf?
Решил тоже поэсперементировать с сием чудом...
И тоже натолкнулся на такие же ошибки.
В итоге на сайте со статистикой виду следубщее содержимое:

Код: Выделить всё

#! /usr/bin/env python
# -*- coding: cp1251 -*-

import MySQLdb
import cgi
import popen2
from mysql_inc import *

traf_in_sum=0
traf_out_sum=0

form = cgi.FieldStorage()
date = form.getvalue('period', 'today')

x,y=popen2.popen2('date +%Y%m%d')
date_c=x.readline()[0:-1]

if date=='today':
    x,y=popen2.popen2('date +%Y%m%d')
    date_c=x.readline()[0:-1]
elif date=='monthly':
    x,y=popen2.popen2('date +%Y%m%d')
    date_c=str(x.readline()[0:-3])+str("__")
elif date=='yearly':
    x,y=popen2.popen2('date +%Y%m%d')
    date_c=str(x.readline()[0:-5])+str("____")

print "Content-type: text/html"
print

print('''

<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title>Statistics</title>
</head>

<body>\n''')

string=str("<p><b>Traffic Statistics</b><br>")
print(string)

print('''
<table border="1" width="100%">
<tr>
<td width="33%" bgcolor="#C5C6F5">
<p align="center"><b>Ip</b></p>
</td>
<td width="33%" bgcolor="#C5C6F5">
<p align="center"><b>In</b></p>
</td>
<td width="34%" bgcolor="#C5C6F5">
<p align="center"><b>Out</b></p>
</td>
</tr>\n''')

for ip in range(1,255):
    cmd=str("select sum(bytes) from traf_")+str(ip)+str(" where in_out=0 and date like ")+str("'")+str(date_c)+str("'")
    cursor.execute(cmd)
    result_in = cursor.fetchone()
    cmd=str("select alias from aliases where ip=")+str(ip)
    cursor.execute(cmd)
    alias=cursor.fetchone()[0]

    if result_in[0]==None:traf_in=0
    else:traf_in=round(result_in[0]/1048576,2)

    cmd=str("select sum(bytes) from traf_")+str(ip)+str(" where in_out=1 and date like ")+str("'")+str(date_c)+str("'")
    cursor.execute(cmd)
    result_out = cursor.fetchone()
    if result_out[0]==None:traf_out=0
    else:traf_out=round(result_out[0]/1048576,2)

    if result_in[0]==None and result_out[0]==None:pass
    else:
    print('<tr>\n')

    string=str('<td width="33%" bgcolor="#FFE1C4" align="center"><a href="trafreportdetail.cgi?ip=')+str(ip)+str('&date=')+str(date_c)+str('" target="_parent">')+str(alias)+str('</a>')+str('</td>')+str('\n')
    print(string)

    string=str('<td width="33%" bgcolor="#FFE1C4" align="center">')+str(traf_in)+str("</td>")+str('\n')
    print(string)

    string=str('<td width="33%" bgcolor="#FFE1C4" align="center">')+str(traf_out)+str("</td>")+str('\n')
    print(string)

    print('</tr>\n')
    traf_in_sum=traf_in_sum+traf_in
    traf_out_sum=traf_out_sum+traf_out

print('''
<td width="33%" bgcolor="#FFAAAA" align="center">
<p align="center"><b>Summary</p></b>
</td>\n''')

string=str('<td width="33%" bgcolor="#FFAAAA" align="center"><b>')+str(traf_in_sum)+str(' Mb</b></td>')
print(string)

string=str('<td width="34%" bgcolor="#FFAAAA" align="center"><b>')+str(traf_out_sum)+str(' Mb</td></b>')
print(string)

print('''
</table>
</body>
</html>\n''')

db.commit()
db.close()


Явно что то не работает.
Хотел поинтересоваться, может подскажите?

Заранее спасибо :)
Спасибо сказали:
sawka88
Сообщения: 2
ОС: Debian

Re: Nitraf трабла с "питоном"

Сообщение sawka88 »

С этой проблемой разобрался :D
Настраивал NiTraf по статье: Обзор популярных систем учета трафика под *nix
а там есть такие строки : "Чтобы веб-интерфейс функционировал, в конфиге Apache должны быть прописаны две директивы: AddHandler cgi-script .cgi и LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so ИЛИ включены необходимые модули: $ sudo a2enmod mime и $ sudo a2enmod cgi"
Вот я и обратил внимание на слово "ИЛИ", выполнил команды, а на конфиг апачя забил. И как оказалось зря :rolleyes:
Для тех кто постигнет мою учать подскажу.
Нужно выполнить # nano /etc/apache2/apache2.conf
И дописать в низу файла 2-е строчки:
AddHandler cgi-script .cgi
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so


В общем web итерфейс заработал, а трафик нихрена не считается :)
Отпишусь как разберусь хоть чуток с чем это связано :)

P.S. Кстати, для тех кто захочет поэкспериментировать с NiTraf наверняка будет озадачен где его скачать :) т.к. офф. сайт их лежит...
Вот на всякий случай ссылочка, которую я нашел (из рабочих) на последнюю версию 20070320: Скачать NiTraf
Спасибо сказали: