Mysql UDF ( os command »ç¿ë )
mysql¿¡¼ OS command¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¹æ¹ý
Ãâó : https://github.com/mysqludf/lib_mysqludf_sys
: lib_mysqludf_sys.c ¸¸ ¹ÞÀ¸¸é µÊ
: ÇØ´ç ÆÄÀÏÀº ÆÄÀÏ Ã·ºÎ µÊ
¼Ò½º º¹»ç>
cp lib_mysqludf_sys.c /usr/local/mysql/include/
cd /usr/local/mysql/include
ÄÄÆÄÀÏ>
gcc -m64 -fPIC -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o /usr/local/mysql/lib/plugin/lib_mysqludf_sys.so
Á¢¼Ó>
mysql -uroot -p
use mysql
function »ý¼º>
CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
DROP FUNCTION IF EXISTS sys_get;
DROP FUNCTION IF EXISTS sys_set;
DROP FUNCTION IF EXISTS sys_exec;
DROP FUNCTION IF EXISTS sys_eval;
function È®ÀÎ>
select * from mysql.func;
½ÇÇà Å×½ºÆ®>
select sys_eval('df -h') from dual;
load average
uptime | awk '{print $8}' | sed '$s/.$//'
memory »ç¿ë·®
free | grep Mem | awk '{print $3}'
memory Àüü
free | grep Mem | awk '{print $2}'
cpu »ç¿ëÀ²
mpstat | tail -1 | awk '{print 100-$11}'
-------------
insert into kim_test
select sys_eval("uptime | awk '{print $8}' | sed '$s/.$//'") ;
insert into kim_test
select sys_eval("free | grep Mem | awk '{print $3}'") ;
insert into kim_test
select sys_eval("mpstat | tail -1 | awk '{print 100-$11}'") ;