Пытаюсь переписать с bash скрипта:
#/bin/bash . "/etc/CFG_FULL.cfg" #nmap --excludefile $pwd/db_ip_exclude.txt -sn 192.168.212.0/22 | egrep -v "Host|nmap" | awk '{print $5}' > $pwd/db_ip_test.txt cd $pwd/port_up_down #ip=192.168.213.50 while read ip do cat /dev/null > $pwd/port_up_down/tmp/tmp_$ip.log #/home/user/test/port_up_down/port_status.sh $ip cat /var/log/remote/switches.log | grep -w $ip | grep Port | awk '{ print $7 }' | sort -n | uniq >> $pwd/port_up_down/tmp/tmp_$ip.log cat /var/log/remote/switches.log.1 | grep -w $ip | grep Port | awk '{ print $7 }' | sort -n | uniq >> $pwd/port_up_down/tmp/tmp_$ip.log zcat /var/log/remote/switches.log.2.gz | grep " $ip " | grep Port | awk '{ print $7 }' | sort -n | uniq >> $pwd/port_up_down/tmp/tmp_$ip.log cat $pwd/port_up_down/tmp/tmp_$ip.log | sort -n | uniq > $pwd/port_up_down/log/$ip.log done < $pwd/db_ip_test.txt
#!/usr/bin/env python from string import * import MySQLdb import operator import array fIP = open("db_ip_test.txt") xString = fIP.readlines() fIP.close() nambers = len(xString) xString = [xString.replace("\n","") for xString in xString] for cntr in range(0,nambers): fOut = open("log/" + xString[cntr] + ".log", "w") print (xString[cntr]) select_sql = "SELECT `msg` FROM `logs` WHERE host = '{0}' and msg LIKE '{1}' ORDER BY `logs`.`msg` ASC;" db = MySQLdb.connect(host="127.0.0.1",user="root",passwd="121788",db="syslog") cursor = db.cursor() cursor.execute(select_sql.format(xString[cntr],'Port% link%')) for k in cursor.fetchall(): k = str(k) k = k.split() k = k[1] fOut.write(k + '\n') print (k) fOut.close()
То чего мне не хватает в python скрипте:
Сортировки данных не mysql и python.
Удаление дублей.
Мне не хватает sort -n | uniq
И выборки данных из базы только за 3 последних месяца, пойдет и 90 последних дней.
Пытался сделать мускульный запрос вот таким:
SELECT `msg` FROM `logs` WHERE host = '192.168.213.92' and msg LIKE 'Port%link%' and `datetime` between '2013-07-04 00:00:00' and '2013-08-04 23:59:59'
Хотя по отдельности запросы работают:
SELECT `msg` FROM `logs` WHERE host = '192.168.213.92' and msg LIKE 'Port%link%'
SELECT `msg` FROM `logs` WHERE `datetime` between '2013-05-04 00:00:00' and '2013-08-04 23:59:59'