1. 추가할 함수 구현
- syslogudf.c 파일에 기능 구현
- 임의로 syslog떨어뜨리기 위한 쿼리 만들어서 실행함
- syslogudf.c 파일에 기능 구현
#include <mysql.h>2. 컴파일
#include <string.h>
#include <syslog.h>
my_bool logger_init(UDF_INIT *initid, UDF_ARGS *args,
char *message) {
initid->maybe_null=0;
return 0;
}
long long logger(UDF_INIT *initid, UDF_ARGS *args,
char *is_null, char *error) {
if (args->arg_count != 1) {
strcpy(error, "LOGGER(): needs message");
return 1;
}
if (args->arg_type[0] != STRING_RESULT) {
strcpy(error, "LOGGER() message
should be string");
return 1;
}
syslog(LOG_INFO,"%s",args->args[0]);
*is_null = 0;
*error = 0;
return 0;
}
gcc -I /usr/include/mysql/ -shared -o syslogudf.so syslogudf.c3. MySQL에 함수 추가를 위한 so로드
mysql> create function logger returns integer soname 'syslogudf.so';4.테스트
Query OK, 0 rows affected (0.00 sec)
- 임의로 syslog떨어뜨리기 위한 쿼리 만들어서 실행함
mysql> select logger(concat(user()," wishes you ",5. syslog 결과
-> if(rand()>0.3,"good","bad")," luck"));
$ tail -1 /var/log/messages
May 12 15:57:09 mimul sshd(pam_unix)[26045]: authentication failure;
logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=202.96.189.83
May 12 15:57:11 mimul mysqld max: root@mimul wishes you bad luck
출처 : http://mimul.com/pebble/
728x90
댓글