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