Страница 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 не запускается :twisted:

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 не запускается :twisted:

что пишет то?

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 и анализирует кто авторизовывался в течении дня и данные вносятся в БД

пока только так...
я пока в стадии обучения, так что критика и поправки приветствуются :)