Browse Source

удалил утили, они не нужны более

devel
bashmak 9 years ago
parent
commit
603c73cbe4
  1. 32
      djing/utils/load_dot_from_nodeny.py
  2. 92
      djing/utils/load_from_nodeny.py
  3. 45
      djing/utils/push_snmp_passw.py
  4. 29
      djing/utils/save_dot_from_nodeny.py
  5. 280
      djing/utils/save_from_nodeny.py

32
djing/utils/load_dot_from_nodeny.py

@ -1,32 +0,0 @@
#!/bin/env python3
# coding=utf-8
import os
import MySQLdb
from json import dumps
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
db = MySQLdb.connect(host="localhost", user="root", passwd="ps", db="nodeny", charset='utf8')
cursor = db.cursor()
result = dict()
# выбираем абонентов
sql = r"SELECT location, descr FROM places WHERE location LIKE 'Сад_%'"
cursor.execute(sql)
places = list()
res = cursor.fetchone()
while res:
places.append({
'loc': res[0],
'descr': res[1]
})
res = cursor.fetchone()
db.close()
f = open('../../places.json', 'w')
f.write(dumps(places, ensure_ascii=False).encode('utf8'))
f.close()

92
djing/utils/load_from_nodeny.py

@ -1,92 +0,0 @@
#!/bin/env python3
# coding=utf-8
import MySQLdb
from json import dumps, loads
def param_to_python(st):
st = st.replace('$VAR1 = ', '')
st = st.replace("'", '"')
st = st.replace(" =>", ':')
st = st.replace(";", '')
return loads(st)
def load_service(cursor, uid):
sql = "SELECT services.title, services.service_id, services.price, services.description, services.param " \
"FROM services LEFT JOIN users_services ON " \
"(users_services.service_id=services.service_id) WHERE users_services.uid=%d" % uid
cursor.execute(sql)
service_line = cursor.fetchone()
if service_line is not None:
service = {
'title': service_line[0],
'service_id': service_line[1],
'price': service_line[2],
'description': service_line[3],
'param': param_to_python(service_line[4])
}
else:
service = None
return service
def load_users(cursor, grp_id):
# выбираем абонентов
sql = r"SELECT users.name, users.fio, data0._adr_telefon, dictionary.v AS street, data0._adr_house, data0._birthday, " \
"users.grp, INET_NTOA(ip_pool.ip) AS ip, users.balance, AES_DECRYPT(users.passwd, 'Vu6saiZa') as decr_passwd, users.id, " \
"mac_uid.device_mac, mac_uid.device_port, mac_uid.oneconnect " \
"FROM users " \
"LEFT JOIN data0 ON (data0.uid = users.id) LEFT JOIN dictionary ON (dictionary.k = data0._adr_street AND dictionary.type = 'street') " \
"LEFT JOIN mac_uid ON (mac_uid.uid=users.id) " \
"LEFT JOIN ip_pool ON (ip_pool.uid = users.id) WHERE users.grp = %d" % grp_id
cursor.execute(sql)
users = [{
'name': res[0],
'fio': res[1],
'tel': res[2],
'street': str(res[3] or ''),
'house': str(res[4]),
'birth': res[5],
'grp': int(res[6]),
'ip': str(res[7] or ''),
'balance': float(res[8]),
'passw': res[9].decode("utf-8") if res[9] is not None else '',
'service': load_service(cursor, int(res[10])),
'opt82': {
'dev_mac': res[11],
'dev_port': res[12],
'oneconnect': res[13]
}
} for res in cursor.fetchall()]
return users
def load_groups(cursor):
# выбираем группы
sql = r'SELECT grp_id, grp_name FROM user_grp'
cursor.execute(sql)
groups = list()
for res in cursor.fetchall():
users = load_users(cursor=cursor, grp_id=int(res[0]))
groups.append({
'gid': int(res[0]),
'gname': res[1],
'users': users
})
return groups
if __name__ == "__main__":
db = MySQLdb.connect(host="127.0.0.1", user="user", passwd="password", db="db", charset='utf8')
cursor = db.cursor()
result = dict()
result = load_groups(cursor=cursor)
db.close()
f = open('dump.json', 'w')
f.write(dumps(result, ensure_ascii=False))
f.close()

45
djing/utils/push_snmp_passw.py

@ -1,45 +0,0 @@
# -*- coding: utf-8 -*-
import telnetlib
from mydefs import ping
from socket import error
from multiprocessing import Process
# Пробуем настроить свичи через telnet на snmp
def cmd(ip):
tn = telnetlib.Telnet(ip)
tn.read_until("login: ")
tn.write("\n")
tn.read_until("Password: ")
tn.write("\n")
tn.write("create snmp community ertNjuWr ReadWrite\n")
tn.write("save\n")
tn.write("save config\n")
tn.write("save config config_id 1\n")
tn.write("log\n")
print((tn.read_all()))
tn.close()
def prc(ip):
try:
if ping(ip):
cmd(ip)
except error:
print(('Error connect to', ip))
if __name__ == '__main__':
proc_list = list()
with open('swips.txt', 'r') as f:
for ln in f:
ip = ln.strip()
p = Process(target=prc, args=(ip,))
p.start()
proc_list.append(p)
for proc in proc_list:
proc.join()

29
djing/utils/save_dot_from_nodeny.py

@ -1,29 +0,0 @@
#!/bin/env python3
# coding=utf-8
import os
from json import load
import django
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup()
from devapp.models import Device
with open('../../places.json', 'r') as f:
dat = load(f)
for dt in dat:
if dt['descr']:
dt['descr']=dt['descr'].replace('10.15.', '10.115.')
dt['loc']=dt['loc'].encode('utf8')
try:
dev = Device.objects.get(ip_address=dt['descr'])
except Device.DoesNotExist:
dev = Device(
ip_address=dt['descr']
)
dev.comment=dt['loc']
dev.save()
print((dt['descr'], dt['loc'], dev))

280
djing/utils/save_from_nodeny.py

@ -1,280 +0,0 @@
#!/bin/env python3
# coding=utf-8
import os
from json import load
import django
from django.utils import timezone
from django.core.exceptions import ValidationError
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup()
from abonapp.models import Abon, AbonGroup, AbonRawPassword, AbonStreet, AbonTariff, Opt82
from ip_pool.models import IpPoolItem
from tariff_app.models import Tariff
class DumpService(object):
price = 0.0
speedIn = 0.0
speedOut = 0.0
def __init__(self, obj=None):
if obj is None: return
self.title = obj['title']
self.price = obj['price']
self.description = obj['description']
self.speedIn = int(obj['param']['speed_in1']) / 1000000
self.speedOut = int(obj['param']['speed_out1']) / 1000000
@staticmethod
def build_from_db(obj):
self = DumpService()
self.title = obj.title
self.price = obj.amount
self.description = obj.descr
self.speedIn = obj.speedIn
self.speedOut = obj.speedOut
return self
def __eq__(self, other):
assert isinstance(other, DumpService)
print('DBG:', type(other.price), other.price, type(self.price), self.price)
r = self.price == other.price
r = r and self.speedIn == other.speedIn
r = r and self.speedOut == other.speedOut
return r
def __ne__(self, other):
return not self.__eq__(other)
def __str__(self):
return "%s; '%.2f', %f %f" % (self.title, self.price, self.speedIn, self.speedOut)
class DumpAbon(object):
def __init__(self, obj=None):
if obj is None: return
self.name = obj['name']
self.fio = obj['fio']
self.tel = obj['tel']
self.street = obj['street']
self.house = obj['house']
self.birth = obj['birth']
self.grp = obj['grp']
self.ip = obj['ip'] if obj['ip'] != '' else None
self.balance = obj['balance']
self.passw = obj['passw']
if obj['opt82']['dev_mac'] is not None and obj['opt82']['dev_port'] is not None:
self.opt82 = {
'dev_mac': obj['opt82']['dev_mac'],
'dev_port': obj['opt82']['dev_port']
}
if obj['service'] is not None:
self.service = DumpService(obj['service'])
else:
self.service = None
@staticmethod
def build_from_django(obj):
assert isinstance(obj, Abon)
self = DumpAbon()
self.name = obj.username
self.fio = obj.fio
self.tel = obj.telephone
self.street = obj.street
self.house = obj.house
self.birth = obj.birth_day
if obj.group is None:
self.grp = None
else:
self.grp = obj.group.pk
if obj.ip_address is None:
self.ip = None
else:
self.ip = obj.ip_address
self.balance = obj.ballance
try:
raw_passw = AbonRawPassword.objects.get(account=obj)
except AbonRawPassword.DoesNotExist:
raw_passw = ''
self.passw = raw_passw
srv = obj.active_tariff()
if srv is not None:
self.service = DumpService.build_from_db(srv)
else:
self.service = None
if obj.opt82 is not None and obj.opt82.mac is not None and obj.opt82.port is not None:
self.opt82 = {
'dev_mac': obj.opt82.mac,
'dev_port': obj.opt82.port
}
return self
def __eq__(self, other):
assert isinstance(other, DumpAbon)
r = self.name == other.name
r = r and self.name == other.name
r = r and self.fio == other.fio
r = r and self.tel == other.tel
r = r and self.street == other.street
r = r and self.house == other.house
r = r and self.birth == other.birth
r = r and self.grp == other.grp
r = r and self.ip == other.ip
r = r and self.balance == other.ballance
return r
def __ne__(self, other):
return not self.__eq__(other)
def add_service_if_not_exist(service):
assert isinstance(service, DumpService)
try:
obj = Tariff.objects.get(speedIn=service.speedIn, speedOut=service.speedOut, amount=service.price)
except Tariff.DoesNotExist:
obj = Tariff.objects.create(
title=service.title,
descr=service.description,
speedIn=service.speedIn,
speedOut=service.speedOut,
amount=service.price,
calc_type='Dp'
)
return obj
def add_raw_password_if_not_exist(acc, raw_passw):
try:
psw = AbonRawPassword.objects.get(account=acc)
#if psw != raw_passw:
# psw.passw_text = raw_passw
# psw.save(update_fields=['passw_text'])
except AbonRawPassword.DoesNotExist:
psw = AbonRawPassword.objects.create(account=acc, passw_text=raw_passw)
return psw
def add_opt82_if_not_exist(mac, port):
print(mac, port)
try:
opt82 = Opt82.objects.get(mac=mac, port=port)
except Opt82.DoesNotExist:
opt82 = Opt82.objects.create(mac=mac, port=port)
return opt82
def load_users(obj, group):
if len(obj) < 1:
return
for usr in obj:
# абонент из дампа
dump_abon = DumpAbon(usr)
# абонент из биллинга
print('\t', dump_abon.name, dump_abon.fio, dump_abon.ip)
try:
abon = Abon.objects.get(username=dump_abon.name)
bl_abon = DumpAbon.build_from_django(abon)
if bl_abon != dump_abon:
update_user(abon, dump_abon, group)
except Abon.DoesNotExist:
# добавляем абонента
abon = add_user(dump_abon, group)
if abon is None:
raise Exception("Чё за херня!? Не создался абонент")
abon_service_from_dump = dump_abon.service
if abon_service_from_dump is None:
continue
abon_service = add_service_if_not_exist(abon_service_from_dump)
try:
AbonTariff.objects.get(abon=abon, tariff=abon_service)
except AbonTariff.DoesNotExist:
calc_obj = abon_service.get_calc_type()(abon_service)
AbonTariff.objects.create(
abon=abon,
tariff=abon_service,
time_start=timezone.now(),
deadline=calc_obj.calc_deadline()
)
try:
if hasattr(dump_abon, 'opt82'):
abon.opt82 = add_opt82_if_not_exist(dump_abon.opt82['dev_mac'], dump_abon.opt82['dev_port'])
abon.save(update_fields=['opt82'])
except ValidationError as e:
print('\t', e)
def add_user(obj, user_group):
assert isinstance(obj, DumpAbon)
street = None
ip = None
try:
if obj.ip is not None:
ip = IpPoolItem.objects.get(ip=obj.ip)
street = AbonStreet.objects.get(name=obj.street, group=user_group)
except IpPoolItem.DoesNotExist:
if obj.ip is not None:
ip = IpPoolItem.objects.create(ip=obj.ip)
except AbonStreet.DoesNotExist:
street = AbonStreet.objects.create(name=obj.street, group=user_group)
abon = Abon()
abon.username = obj.name
abon.fio = obj.fio
abon.telephone = obj.tel
abon.street = street
abon.house = obj.house
abon.birth_day = obj.birth
abon.group = user_group
abon.ip_address = ip
abon.ballance = obj.balance
abon.set_password(obj.passw)
abon.save()
add_raw_password_if_not_exist(abon, obj.passw)
return abon
def update_user(db_abon, obj, user_group):
assert isinstance(obj, DumpAbon)
assert isinstance(db_abon, Abon)
street = None
ip = None
try:
if obj.ip is not None:
ip = IpPoolItem.objects.get(ip=obj.ip)
street = AbonStreet.objects.get(name=obj.street, group=user_group)
except IpPoolItem.DoesNotExist:
if obj.ip is not None:
ip = IpPoolItem.objects.create(ip=obj.ip)
except AbonStreet.DoesNotExist:
street = AbonStreet.objects.create(name=obj.street, group=user_group)
db_abon.fio = obj.fio
db_abon.telephone = obj.tel
db_abon.street = street
db_abon.house = obj.house
#db_abon.birth_day = datetime(obj.birth)
db_abon.group = user_group
db_abon.ip_address = ip
db_abon.ballance = obj.balance
db_abon.set_password(obj.passw)
db_abon.save()
add_raw_password_if_not_exist(db_abon, obj.passw)
if __name__ == "__main__":
with open('dump.json', 'r') as f:
dat = load(f)
for grp in dat:
try:
abgrp=AbonGroup.objects.get(title=grp['gname'])
except AbonGroup.DoesNotExist:
abgrp = AbonGroup.objects.create(
title=grp['gname']
)
print(grp['gname'])
load_users(grp['users'], abgrp)
Loading…
Cancel
Save