Страница 1 из 1
выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-12 9:28:03
Zedik
Есть некий файл лога, который ведет время и дату авторизации пользователя на почтовике.
хочу сделать чтобы данные (юзер/дата_истечения) из файла писались в БД, чтобы потом уже удалять по этим данным неиспользуемые логины.
пока реализовал запись в файл логинов которые авторизовывались "сегодня".
Код: Выделить всё
#!/bin/sh
awk '{ if ($6 == "LOGIN,") print $7 }' /var/log/maillog | sort -u | cut -c6-60 | sed 's/ru,/ru/g' > /var/lastauth/date/$(date +%Y%m%d)
а вот в мускл не могу даже пробовать записать. не проходить банальная команда mysql
Код: Выделить всё
[root@mx /var/log]# mysql
[root@mx /var/log]#

Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-12 11:31:56
manefesto
то есть мускуль даже не запускается что ли ?
Посмотри сюда, в конце есть перловый скрипт который делает инсерты в мускуль
http://www.obsd.ru/wiki/index.php/Настр ... льной_сети
Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-13 12:46:40
paranoidchaos
как я понял надо из шелл скрипта записать в мускул
Код: Выделить всё
#!/bin/bash // aka /usr/local/bin/bash
query=`/usr/local/bin/mysql -uroot -proot -e"SELECT column_name FROM table"` // выборка но есть маленький косяк выводятся также и имена колонок решается так
query2=${query/column_name/}
/usr/local/bin/mysql - это на тот случай если не указан этот путь в переменной окружения пути
Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-13 13:20:13
Zedik
paranoidchaos писал(а):как я понял надо из шелл скрипта записать в мускул
#!/bin/bash // aka /usr/local/bin/bash
query=`/usr/local/bin/mysql -uroot -proot -e"SELECT column_name FROM table"` // выборка но есть маленький косяк выводятся также и имена колонок решается так
query2=${query/column_name/}
/usr/local/bin/mysql - это на тот случай если не указан этот путь в переменной окружения пути
это все хорошо, спасибо.
но и по полному пути /usr/local/bin/mysql не запускается

Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-13 13:41:12
paranoidchaos
Zedik писал(а):paranoidchaos писал(а):как я понял надо из шелл скрипта записать в мускул
#!/bin/bash // aka /usr/local/bin/bash
query=`/usr/local/bin/mysql -uroot -proot -e"SELECT column_name FROM table"` // выборка но есть маленький косяк выводятся также и имена колонок решается так
query2=${query/column_name/}
/usr/local/bin/mysql - это на тот случай если не указан этот путь в переменной окружения пути
это все хорошо, спасибо.
но и по полному пути /usr/local/bin/mysql не запускается

что пишет то?
Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-13 13:59:38
Zedik
paranoidchaos писал(а):
что пишет то?
тоже что и
[root@mx /var/log]# mysql
[root@mx /var/log]#
Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-13 14:38:07
Alex Keda
Код: Выделить всё
serv# whereis mysql
mysql: /usr/local/bin/mysql /usr/local/man/man1/mysql.1.gz
serv# file /usr/local/bin/mysql
/usr/local/bin/mysql: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), stripped
serv#
повтори
Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-13 15:09:12
Zedik
lissyara писал(а):
serv# file /usr/local/bin/mysql
/usr/local/bin/mysql: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), stripped
serv# [/code]
повтори
проблема запуска mysql:
в /usr/local/bin/mysql был ASCII text
спасибо всем откликнувшимся..Лису отдельное
продолжу работу
я и не подозревал что там фигня будет
Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-13 15:30:14
Alex Keda
где-то в скриптах ошибся,
> вместо
| влепил...
я так с грепом дня два воевал

))
Re: выборка из файла и запись в mysql скриптом
Добавлено: 2007-12-14 10:27:56
Zedik
вот что сделал:
Код: Выделить всё
#!/bin/sh
filename=/tmp/$(date +%Y%m%d)
awk '{ if ($6 == "LOGIN,") print $7 }' /var/log/maillog | sort -u | cut -c6-60 | sed 's/ru,/ru/g' > $filename
while read line
do
#==work
/usr/local/bin/mysql -u exim_username --password=exim_pwd --database=exim_database --execute="UPDATE mailbox SET date_expire=DATE_ADD(now(), INTERVAL 30 DAY) WHERE username = '$line' "
#==end work
done < $filename
rm /tmp/$(date +%Y%m%d)
скриптик запускается по крону в 23-59 и анализирует кто авторизовывался в течении дня и данные вносятся в БД
пока только так...
я пока в стадии обучения, так что критика и поправки приветствуются
