Решил поставить на шлюз 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
в результате конечно каша...Я так думаю что эту строчку нужно переписать соответственно новому правилу...
Посему призываю человека знающего эту "змеюку"
Nitraf трабла с "питоном"
Модераторы: SLEDopit, Модераторы разделов
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Nitraf трабла с "питоном"
ну вообще у вас не ошибка, а варнинг. то бишь работать и так будет. а пока, соответственно ищите решение от авторов этого "Nitraf" - наверняка вы не первый пользователь этого продукта (привет, Сашкан).
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Nitraf трабла с "питоном"
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Encore
- Сообщения: 656
- Статус: loading..............
- ОС: Debian
Re: Nitraf трабла с "питоном"
По идее это 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 трабла с "питоном"
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 трабла с "питоном"
Да, простите, погорячился...
(без env, только путь к интерпретатору)
Код: Выделить всё
#!/usr/bin/python -W ignore::DeprecationWarning(без env, только путь к интерпретатору)
-
sawka88
- Сообщения: 2
- ОС: Debian
Re: Nitraf трабла с "питоном"
Уважаемый, vesel
У Вас в итоге получилось заставить работать Nitraf?
Решил тоже поэсперементировать с сием чудом...
И тоже натолкнулся на такие же ошибки.
В итоге на сайте со статистикой виду следубщее содержимое:
Явно что то не работает.
Хотел поинтересоваться, может подскажите?
Заранее спасибо
У Вас в итоге получилось заставить работать 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 трабла с "питоном"
С этой проблемой разобрался
Настраивал NiTraf по статье: Обзор популярных систем учета трафика под *nix
а там есть такие строки : "Чтобы веб-интерфейс функционировал, в конфиге Apache должны быть прописаны две директивы: AddHandler cgi-script .cgi и LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so ИЛИ включены необходимые модули: $ sudo a2enmod mime и $ sudo a2enmod cgi"
Вот я и обратил внимание на слово "ИЛИ", выполнил команды, а на конфиг апачя забил. И как оказалось зря
Для тех кто постигнет мою учать подскажу.
Нужно выполнить # 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
Настраивал NiTraf по статье: Обзор популярных систем учета трафика под *nix
а там есть такие строки : "Чтобы веб-интерфейс функционировал, в конфиге Apache должны быть прописаны две директивы: AddHandler cgi-script .cgi и LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so ИЛИ включены необходимые модули: $ sudo a2enmod mime и $ sudo a2enmod cgi"
Вот я и обратил внимание на слово "ИЛИ", выполнил команды, а на конфиг апачя забил. И как оказалось зря
Для тех кто постигнет мою учать подскажу.
Нужно выполнить # 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