DarkNight 0 Posted 2004-08-06 21:55:47 Share Posted 2004-08-06 21:55:47 Народ вот сталкнулся с проблемой... как посоветуете реализовать функцию. При срабатываении файла OnChange чтоб сбрасывались данне в MySQL БД ? ваши предложения... Link to post Share on other sites
Hash 0 Posted 2004-08-07 09:25:41 Share Posted 2004-08-07 09:25:41 Народ вот сталкнулся с проблемой... как посоветуете реализовать функцию.При срабатываении файла OnChange чтоб сбрасывались данне в MySQL БД ? ваши предложения... perl dbi c++ mysql API ну или PHP =) Что знаешь, на том и пиши Link to post Share on other sites
Hash 0 Posted 2004-08-07 22:25:49 Share Posted 2004-08-07 22:25:49 Для примера написал скрипт на 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; Коментарии, думаю не нужны, ибо код прост. Кому нужно, тот с легкостью модифицирует его. Link to post Share on other sites
Hash 0 Posted 2004-08-07 23:27:08 Share Posted 2004-08-07 23:27:08 вариант 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\");" Link to post Share on other sites
DarkNight 0 Posted 2004-08-08 13:28:50 Author Share Posted 2004-08-08 13:28:50 вот!! именно мне не хотелось писать скрипт на ПХП мне нужен был скрипт на BASH или SH что ты и привел пример и большое тебе спасибо HASH. Все тему можно закрывать Link to post Share on other sites
DarkNight 0 Posted 2004-08-08 13:32:23 Author Share Posted 2004-08-08 13:32:23 стоп. почему то при добавлений денег клиенту в лог пишутся 2 записи! парам=Cash и парам=FreeMb мне FreeMb не нужен... пробовал втавить if (param=="Cash") { mysql -ulogin -ppass db <<< "insert into bla bla bla" } не прокатывает вот Link to post Share on other sites
Hash 0 Posted 2004-08-08 15:52:28 Share Posted 2004-08-08 15:52:28 (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 2004-08-08 20:23:58 by Hash Link to post Share on other sites
Hash 0 Posted 2004-08-08 15:54:31 Share Posted 2004-08-08 15:54:31 кстати, рекомендую к прочтению Advanced Bash-Scripting Guide Link to post Share on other sites
DarkNight 0 Posted 2004-08-08 20:08:17 Author Share Posted 2004-08-08 20:08:17 попробовал твой правильный вариант так и не получилось вообще теперь не кидает в БД Link to post Share on other sites
Hash 0 Posted 2004-08-08 20:22:04 Share Posted 2004-08-08 20:22:04 попробовал твой правильный вариант так и не получилось вообще теперь не кидает в БД конечно не будет кидать, я когда писАл, наверное не проснулся толком =) нужно if [[ $login == "Cash" ]] заменить на if [[ $parametr == "Cash" ]] я поправил предыдущий пост Link to post Share on other sites
keshaLG 5 Posted 2005-04-09 13:12:26 Share Posted 2005-04-09 13:12:26 Hash спасибо за скрипт%). Есть один вопрос по теме: В скрипте OnChange из пакета Stargazer-2.08.6.4-beta.rpm есть такое: admin_name=$5 но в скрипт $5 не передается (, это только у меня или у всех? хотелось бы в базу складывать еще и имя кто деньги добавил, наверное прийдется из лога СТГ выуживать? PS Борису ОГРОМНОЕ Спасибо за его продукт%), организация наша FREENET так, что пока денег пока нет на модуль статистики, как только появятся - обязательно поощрим АВТОРа. Link to post Share on other sites
egor2fsys 5 Posted 2005-04-09 16:27:24 Share Posted 2005-04-09 16:27:24 поставь СТГ поновее ...... возможно твоя проблема решится .... Link to post Share on other sites
keshaLG 5 Posted 2005-04-09 19:05:26 Share Posted 2005-04-09 19:05:26 egor2fsys: спасибо за совет, но это же прийдется обновлять всем авторизаторы? А это трудновато: по пользователям замахаешься бегать.... или я не прав? Link to post Share on other sites
Den_LocalNet 1,474 Posted 2005-04-09 21:30:43 Share Posted 2005-04-09 21:30:43 на сайт выложиш - сами обновят..... советую преднастроить и запаковать раром саморазпак. с преднастройками инсталяции и вынесения ярлычков.... Юзер заходит на сайт сети, нажимает на ссылку, жмёт открыть и в течении 2-5 секунд мелькающие окна ставят новый авторизатор. После процедура ввода имени и пароля ..... и всё сам так сделал - никаких проблем.... тем более всё уже знают - если месага пришла что нужно обновить авторизатор - никто не звонит и не спрашивает. Link to post Share on other sites
keshaLG 5 Posted 2005-04-10 00:02:40 Share Posted 2005-04-10 00:02:40 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}'` Link to post Share on other sites
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