fbpx

C bash на python

268 просмотра
0
0 Комментариев

Hi %user%!
Я только начинаю учить python и хочу переписать свой bash скрипт на python.
Не могли бы вы мне помочь, а то я даже не знаю с какой стороны подойти к вопросу.

Код моего скрипта:

#/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
f1 = open("/var/log/remote/switches.log")
xString = f1.readlines()
nambers = len(xString)
xString = [xString.replace("\n","") for xString in xString]
for cntr in range(0,nambers):
    print (xString[cntr])
f1.close()

Буду благодарен за любую помощь!!!

UPD 0.1
Данные из файлов которые я парсю есть mysql, у меня данные syslog дублируются в базу, может будет проще брать данные от туда?
Но мне надо чтоб брались данные только за 3 месяца.
Так как в bash не очень удобно работать с базой я не рассматривал такой вариант.
UPD 0.2

#!/usr/bin/env python
 
import MySQLdb
import string
 
select_sql = "SELECT `datetime`, `host`, `msg` FROM `logs` WHERE host = '{0}' and msg                           LIKE '{1}';"
 
db = MySQLdb.connect(host="127.0.0.1",user="root",passwd="121788",db="syslog")
cursor = db.cursor()
cursor.execute(select_sql.format('192.168.212.60','Port 22 link%'))
for k in cursor.fetchall():
    print (k[2])

вывод

как мне теперь вывести только в столбец в этой строке
пробовал:

aa = k.split()
print (aa[2])

выводит:

Traceback (most recent call last):
  File "./run_port.py", line 12, in <module>
    aa = k.split()
AttributeError: 'tuple' object has no attribute 'split'

Вот так вот заработало:

for k in cursor.fetchall():
bb = str(k[2])
aa = bb.split()
print (aa[1])

UPD 0.3
Не получается реализовать сортировку и удаление дублей из масива.
Мне нужно по аналогии с sort -n | uniq


Добавить комментарий

1 Ответы

Python Опубликовано 19.01.2019
0

"""выборка из mysql"""
 
import MySQLdb
select_sql = "SELECT * FROM table WHERE ip={0} and port={1};"
 
db = MySQLdb.connect(host="127.0.0.1",user="r",passwd="r",db="r")
cursor = db.cursor()
cursor.execute(select_sql.format('192.168.0.1','24'))
for k in cursor.fetchall():
    print k

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up