Перейти до

Need HELP скрипт Stargazer onChange


Рекомендованные сообщения

Народ вот сталкнулся с проблемой... как посоветуете реализовать функцию.

При срабатываении файла OnChange чтоб сбрасывались данне в MySQL БД ? ваши предложения... ;)

Ссылка на сообщение
Поделиться на других сайтах
Народ вот сталкнулся с проблемой... как посоветуете реализовать функцию.

При срабатываении файла OnChange чтоб сбрасывались данне в MySQL БД ? ваши предложения... ;)

perl dbi

c++ mysql API

ну или PHP =)

Что знаешь, на том и пиши

Ссылка на сообщение
Поделиться на других сайтах

Для примера написал скрипт на 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;

Коментарии, думаю не нужны, ибо код прост. Кому нужно, тот с легкостью модифицирует его.

Ссылка на сообщение
Поделиться на других сайтах

вариант 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\");"

Ссылка на сообщение
Поделиться на других сайтах

вот!! именно мне не хотелось писать скрипт на ПХП мне нужен был скрипт на BASH или SH

что ты и привел пример и большое тебе спасибо HASH.

Все тему можно закрывать ;)

Ссылка на сообщение
Поделиться на других сайтах

стоп. почему то при добавлений денег клиенту в лог пишутся 2 записи! парам=Cash и парам=FreeMb

мне FreeMb не нужен...

пробовал втавить

if (param=="Cash") {

mysql -ulogin -ppass db <<< "insert into bla bla bla"

}

не прокатывает ;)

вот

Ссылка на сообщение
Поделиться на других сайтах
стоп. почему то при добавлений денег клиенту в лог пишутся 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:

Исправил ошибку =)

Відредаговано Hash
Ссылка на сообщение
Поделиться на других сайтах
попробовал твой правильный вариант так и не получилось ;) вообще теперь не кидает в БД

конечно не будет кидать, я когда писАл, наверное не проснулся толком =) нужно

if [[ $login == "Cash" ]]

заменить на

if [[ $parametr == "Cash" ]]

я поправил предыдущий пост

Ссылка на сообщение
Поделиться на других сайтах
  • 8 months later...

Hash спасибо за скрипт%).

 

Есть один вопрос по теме:

В скрипте OnChange из пакета Stargazer-2.08.6.4-beta.rpm есть такое: admin_name=$5

но в скрипт $5 не передается :((, это только у меня или у всех?

 

хотелось бы в базу складывать еще и имя кто деньги добавил, наверное прийдется из лога СТГ выуживать?

 

PS

Борису ОГРОМНОЕ Спасибо за его продукт%), организация наша FREENET так, что пока денег пока нет на модуль статистики, как только появятся - обязательно поощрим АВТОРа.

Ссылка на сообщение
Поделиться на других сайтах

egor2fsys:

спасибо за совет,

но это же прийдется обновлять всем авторизаторы?

А это трудновато:

по пользователям замахаешься бегать.... или я не прав?

Ссылка на сообщение
Поделиться на других сайтах

на сайт выложиш - сами обновят..... советую преднастроить и запаковать раром саморазпак. с преднастройками инсталяции и вынесения ярлычков....

 

Юзер заходит на сайт сети, нажимает на ссылку, жмёт открыть и в течении 2-5 секунд мелькающие окна :( ставят новый авторизатор. После процедура ввода имени и пароля ..... и всё :(

 

сам так сделал - никаких проблем.... тем более всё уже знают - если месага пришла что нужно обновить авторизатор - никто не звонит и не спрашивает.

Ссылка на сообщение
Поделиться на других сайтах

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}'`

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...