DarkNight Posted August 6, 2004 at 09:55 PM Posted August 6, 2004 at 09:55 PM Народ вот сталкнулся с проблемой... как посоветуете реализовать функцию. При срабатываении файла OnChange чтоб сбрасывались данне в MySQL БД ? ваши предложения...
Hash Posted August 7, 2004 at 09:25 AM Posted August 7, 2004 at 09:25 AM Народ вот сталкнулся с проблемой... как посоветуете реализовать функцию.При срабатываении файла OnChange чтоб сбрасывались данне в MySQL БД ? ваши предложения... perl dbi c++ mysql API ну или PHP =) Что знаешь, на том и пиши
Hash Posted August 7, 2004 at 10:25 PM Posted August 7, 2004 at 10:25 PM Для примера написал скрипт на Perl+DBI: структура таблицы: CREATE TABLE `changes` ( `datetime` datetime default NULL, `login` varchar(255) NOT NULL default '', `parametr` varchar(255) NOT NULL default '', `old_value` varchar(255) NOT NULL default '', `new_value` varchar(255) NOT NULL default '' ) TYPE=MyISAM; код OnChange: #!/usr/bin/perl use DBI; $user = "username"; $password = "mypassword"; $database = "database"; $login = $ARGV[0]; $parametr = $ARGV[1]; $old_value = $ARGV[2]; $new_value = $ARGV[3]; $dbh = DBI->connect("DBI:mysql:$database", $user, $password); $sth = $dbh->prepare("INSERT INTO changes (datetime, login, parametr, old_value, new_value) VALUES ( NOW(), \"$login\", \"$parametr\", \"$old_value\", \"$new_value\")"); $sth->execute; $dbh->disconnect; Коментарии, думаю не нужны, ибо код прост. Кому нужно, тот с легкостью модифицирует его.
Hash Posted August 7, 2004 at 11:27 PM Posted August 7, 2004 at 11:27 PM вариант OnChange на bash: #!/bin/bash db_user="login" db_pass="pass" db_name="database" datetime=`date "+ %Y-%m-%d %H:%M:%S"` login=$1 parametr=$2 old_value=$3 new_value=$4 mysql -u $db_user --password=$db_pass -s -e "use $db_name; insert into changes (datetime, login, parametr, old_value, new_value) values (\"$datetime\", \"$login\", \"$parametr\", \"$old_value\", \"$new_value\");"
DarkNight Posted August 8, 2004 at 01:28 PM Author Posted August 8, 2004 at 01:28 PM вот!! именно мне не хотелось писать скрипт на ПХП мне нужен был скрипт на BASH или SH что ты и привел пример и большое тебе спасибо HASH. Все тему можно закрывать
DarkNight Posted August 8, 2004 at 01:32 PM Author Posted August 8, 2004 at 01:32 PM стоп. почему то при добавлений денег клиенту в лог пишутся 2 записи! парам=Cash и парам=FreeMb мне FreeMb не нужен... пробовал втавить if (param=="Cash") { mysql -ulogin -ppass db <<< "insert into bla bla bla" } не прокатывает вот
Hash Posted August 8, 2004 at 03:52 PM Posted August 8, 2004 at 03:52 PM (edited) стоп. почему то при добавлений денег клиенту в лог пишутся 2 записи! парам=Cash и парам=FreeMb потому что OnChange передаются данные об изменениях любых параметров, будь то деньги, или пароль админа. Подробнее, какими бывают параметры, можно поглядеть в user.cpp. мне FreeMb не нужен... пробовал втавить if (param=="Cash") { mysql -ulogin -ppass db <<< "insert into bla bla bla" } не прокатывает вот не прокатывает, потому как данная проверка условный больше подходит perl или php, нежели bash =) Вот правильный вариант: #!/bin/bash db_user="login" db_pass="pass" db_name="database" datetime=`date "+ %Y-%m-%d %H:%M:%S"` login=$1 parametr=$2 old_value=$3 new_value=$4 if [[ $parametr == "Cash" ]] then mysql -u $db_user --password=$db_pass -s -e "use $db_name; insert into changes (datetime, login, parametr, old_value, new_value) values (\"$datetime\", \"$login\", \"$parametr\", \"$old_value\", \"$new_value\");" fi upd: Исправил ошибку =) Edited August 8, 2004 at 08:23 PM by Hash
Hash Posted August 8, 2004 at 03:54 PM Posted August 8, 2004 at 03:54 PM кстати, рекомендую к прочтению Advanced Bash-Scripting Guide
DarkNight Posted August 8, 2004 at 08:08 PM Author Posted August 8, 2004 at 08:08 PM попробовал твой правильный вариант так и не получилось вообще теперь не кидает в БД
Hash Posted August 8, 2004 at 08:22 PM Posted August 8, 2004 at 08:22 PM попробовал твой правильный вариант так и не получилось вообще теперь не кидает в БД конечно не будет кидать, я когда писАл, наверное не проснулся толком =) нужно if [[ $login == "Cash" ]] заменить на if [[ $parametr == "Cash" ]] я поправил предыдущий пост
keshaLG Posted April 9, 2005 at 01:12 PM Posted April 9, 2005 at 01:12 PM Hash спасибо за скрипт%). Есть один вопрос по теме: В скрипте OnChange из пакета Stargazer-2.08.6.4-beta.rpm есть такое: admin_name=$5 но в скрипт $5 не передается (, это только у меня или у всех? хотелось бы в базу складывать еще и имя кто деньги добавил, наверное прийдется из лога СТГ выуживать? PS Борису ОГРОМНОЕ Спасибо за его продукт%), организация наша FREENET так, что пока денег пока нет на модуль статистики, как только появятся - обязательно поощрим АВТОРа.
egor2fsys Posted April 9, 2005 at 04:27 PM Posted April 9, 2005 at 04:27 PM поставь СТГ поновее ...... возможно твоя проблема решится ....
keshaLG Posted April 9, 2005 at 07:05 PM Posted April 9, 2005 at 07:05 PM egor2fsys: спасибо за совет, но это же прийдется обновлять всем авторизаторы? А это трудновато: по пользователям замахаешься бегать.... или я не прав?
Den_LocalNet Posted April 9, 2005 at 09:30 PM Posted April 9, 2005 at 09:30 PM на сайт выложиш - сами обновят..... советую преднастроить и запаковать раром саморазпак. с преднастройками инсталяции и вынесения ярлычков.... Юзер заходит на сайт сети, нажимает на ссылку, жмёт открыть и в течении 2-5 секунд мелькающие окна ставят новый авторизатор. После процедура ввода имени и пароля ..... и всё сам так сделал - никаких проблем.... тем более всё уже знают - если месага пришла что нужно обновить авторизатор - никто не звонит и не спрашивает.
keshaLG Posted April 10, 2005 at 12:02 AM Posted April 10, 2005 at 12:02 AM Den_LocalNet: да классно тебе, а у меня в сетке одни "ботаники", ну пару человек обновят сами, а по остальнім прийдет бегать, или по чату утомтельно расказывать, это хорошо, что некоторые из этих "ботаников" РАДМИН могут поставить... Одним словом - жуть а не юзер... PS Спасибо, что откликнулись на мой вопрос. Проблему решил скриптами: admin=`tail -1 /var/log/stargazer.log|awk 'BEGIN {FS=" "}{print $6}'|sed -e 's,:,,g'` и еще может кому-то пригодится - вычисление суммы пополнения: money=`echo "$1 $2 $3 $4"| awk 'BEGIN {FS=" "}{print $4-$3}'`
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now