|
#!/bin/bash |
|
|
|
|
|
# |
|
|
# mysql functions for the bash |
|
|
# Version 0.1 |
|
|
# |
|
|
# Niels Rogalla <niro@magellan-linux.de> |
|
|
# |
|
1 |
# $Id$ |
# $Id$ |
2 |
|
|
3 |
mysql_command() |
mysql_command() |
4 |
{ |
{ |
5 |
|
local sql_user |
6 |
local SQL_USER |
local sql_pass |
7 |
local SQL_PASS |
local sql_host |
8 |
local SQL_HOST |
local sql_db |
9 |
local SQL_DB |
local sql_command |
10 |
local SQL_COMMAND |
|
11 |
|
sql_user=$1 |
12 |
SQL_USER=$1 |
sql_pass=$2 |
13 |
SQL_PASS=$2 |
sql_host=$3 |
14 |
SQL_HOST=$3 |
sql_db=$4 |
15 |
SQL_DB=$4 |
sql_command=$5 |
16 |
SQL_COMMAND=$5 |
|
17 |
|
#fallback (sql_opts not, they are optional ) |
18 |
#fallback (SQL_OPTS not, they are optional ) |
if [ -z "${sql_user}" \ |
19 |
if [ -z "${SQL_USER}" \ |
-o -z "${sql_pass}" \ |
20 |
-o -z "${SQL_PASS}" \ |
-o -z "${sql_host}" \ |
21 |
-o -z "${SQL_HOST}" \ |
-o -z "${sql_db}" \ |
22 |
-o -z "${SQL_DB}" \ |
-o -z "${sql_command}" ] |
|
-o -z "${SQL_COMMAND}" ] |
|
23 |
then |
then |
24 |
echo |
echo |
25 |
echo "Usage:" |
echo "Usage:" |
27 |
echo |
echo |
28 |
return 1 |
return 1 |
29 |
fi |
fi |
30 |
|
|
31 |
mysql \ |
mysql \ |
32 |
--user="${SQL_USER}" \ |
--user="${sql_user}" \ |
33 |
--password="${SQL_PASS}" \ |
--password="${sql_pass}" \ |
34 |
--host="${SQL_HOST}" \ |
--host="${sql_host}" \ |
35 |
--database="${SQL_DB}" \ |
--database="${sql_db}" \ |
36 |
--batch \ |
--batch \ |
37 |
--skip-column-names \ |
--skip-column-names \ |
38 |
--execute="${SQL_COMMAND}" \ |
--execute="${sql_command}" \ |
39 |
|| return 1 |
|| return 1 |
40 |
|
|
41 |
return 0 |
return 0 |
42 |
} |
} |
43 |
|
|
44 |
mysql_enum_colums() |
mysql_enum_colums() |
45 |
{ |
{ |
46 |
local SQL_USER |
local sql_user |
47 |
local SQL_PASS |
local sql_pass |
48 |
local SQL_HOST |
local sql_host |
49 |
local SQL_DB |
local sql_db |
50 |
local SQL_TABLE |
local sql_table |
51 |
|
|
52 |
local SHOWTABLES |
local showtables |
53 |
local i |
local i |
54 |
local read |
local read |
55 |
local field |
local field |
58 |
local key |
local key |
59 |
local default |
local default |
60 |
local extra |
local extra |
61 |
|
|
62 |
SQL_USER=$1 |
sql_user=$1 |
63 |
SQL_PASS=$2 |
sql_pass=$2 |
64 |
SQL_HOST=$3 |
sql_host=$3 |
65 |
SQL_DB=$4 |
sql_db=$4 |
66 |
SQL_TABLE=$5 |
sql_table=$5 |
67 |
|
|
68 |
#show the column names ? |
# show the column names ? |
69 |
if [ -n "${6}" -a "${6}" == "show" ] |
if [ -n "${6}" -a "${6}" == "show" ] |
70 |
then |
then |
71 |
SHOWTABLES=true |
showtables=true |
72 |
else |
else |
73 |
SHOWTABLES=false |
showtables=false |
74 |
fi |
fi |
75 |
|
|
76 |
#fallback (SQL_OPTS not, they are optional ) |
# fallback (sql_opts not, they are optional ) |
77 |
if [ -z "${SQL_USER}" \ |
if [ -z "${sql_user}" \ |
78 |
-o -z "${SQL_PASS}" \ |
-o -z "${sql_pass}" \ |
79 |
-o -z "${SQL_HOST}" \ |
-o -z "${sql_host}" \ |
80 |
-o -z "${SQL_DB}" \ |
-o -z "${sql_db}" \ |
81 |
-o -z "${SQL_TABLE}" ] |
-o -z "${sql_table}" ] |
82 |
then |
then |
83 |
echo |
echo |
84 |
echo "Usage:" |
echo "Usage:" |
91 |
while read field type null key default extra |
while read field type null key default extra |
92 |
do |
do |
93 |
i=${i}+1 |
i=${i}+1 |
94 |
[ "${SHOWTABLES}" == true ] && echo "${field}" |
[ "${showtables}" == true ] && echo "${field}" |
95 |
done << EOF |
done << EOF |
96 |
$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} "show columns from ${SQL_TABLE};") |
$(mysql_command ${sql_user} ${sql_pass} ${sql_host} ${sql_db} "show columns from ${sql_table};") |
97 |
EOF |
EOF |
98 |
[ "${SHOWTABLES}" == true ] || echo "${i}" |
[ "${showtables}" == true ] || echo "${i}" |
99 |
} |
} |
100 |
|
|
101 |
beep3x() |
beep3x() |
111 |
{ |
{ |
112 |
# set connection timeout to 20 secs |
# set connection timeout to 20 secs |
113 |
mysql --connect_timeout=20 \ |
mysql --connect_timeout=20 \ |
114 |
--user="${SQL_USER}" \ |
--user="${MCORE_SQL_USER}" \ |
115 |
--password="${SQL_PASS}" \ |
--password="${MCORE_SQL_PASS}" \ |
116 |
--host="${SQL_HOST}" \ |
--host="${MCORE_SQL_HOST}" \ |
117 |
--database="${SQL_DB}" \ |
--database="${MCORE_SQL_DB}" \ |
118 |
--batch \ |
--batch \ |
119 |
--execute="" &> /dev/null && return 0 || \ |
--execute="" &> /dev/null && return 0 || \ |
120 |
( |
( |
121 |
echo -e ${COLRED} |
echo -e ${COLRED} |
122 |
echo "Cannot reach a mysql-server at '${SQL_HOST}'." |
echo "Cannot reach a mysql-server at '${MCORE_SQL_HOST}'." |
123 |
echo "None of the current settings of this client will be touched." |
echo "None of the current settings of this client will be touched." |
124 |
echo "Please inform your system-administrator." |
echo "Please inform your system-administrator." |
125 |
echo -e ${COLDEFAULT} |
echo -e ${COLDEFAULT} |
132 |
mysqldo() |
mysqldo() |
133 |
{ |
{ |
134 |
mysql_command \ |
mysql_command \ |
135 |
"${SQL_USER}" \ |
"${MCORE_SQL_USER}" \ |
136 |
"${SQL_PASS}" \ |
"${MCORE_SQL_PASS}" \ |
137 |
"${SQL_HOST}" \ |
"${MCORE_SQL_HOST}" \ |
138 |
"${SQL_DB}" \ |
"${MCORE_SQL_DB}" \ |
139 |
"$@" \ |
"$@" \ |
140 |
&& return 0 || return 1 |
&& return 0 || return 1 |
141 |
} |
} |
148 |
local all_vars |
local all_vars |
149 |
local all_items |
local all_items |
150 |
local i |
local i |
151 |
local COUNT |
local count |
152 |
local where_statement |
local where_statement |
153 |
|
|
154 |
local table="$1" |
local table="$1" |
161 |
fi |
fi |
162 |
|
|
163 |
# setup arrays |
# setup arrays |
164 |
all_vars=( $(mysql_enum_colums ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} ${table} show) ) |
all_vars=( $(mysql_enum_colums ${MCORE_SQL_USER} ${MCORE_SQL_PASS} ${MCORE_SQL_HOST} ${MCORE_SQL_DB} ${table} show) ) |
165 |
all_items=( $(mysqldo "select * from ${table} ${where_statement}") ) |
all_items=( $(mysqldo "select * from ${table} ${where_statement}") ) |
166 |
|
|
167 |
# sanity check |
# sanity check |
170 |
echo "error: arrays does not match!" |
echo "error: arrays does not match!" |
171 |
fi |
fi |
172 |
|
|
173 |
COUNT=${#all_vars[*]} |
count=${#all_vars[*]} |
174 |
for ((i=0;i < COUNT; i++)) |
for ((i=0;i < count; i++)) |
175 |
do |
do |
176 |
eval $(echo ${table}_${all_vars[${i}]}=\${all_items[${i}]}) |
eval $(echo ${table}_${all_vars[${i}]}=\${all_items[${i}]}) |
177 |
export ${table}_${all_vars[${i}]} |
export ${table}_${all_vars[${i}]} |
194 |
fi |
fi |
195 |
|
|
196 |
export eval $(mysql \ |
export eval $(mysql \ |
197 |
--user="${SQL_USER}" \ |
--user="${MCORE_SQL_USER}" \ |
198 |
--password="${SQL_PASS}" \ |
--password="${MCORE_SQL_PASS}" \ |
199 |
--host="${SQL_HOST}" \ |
--host="${MCORE_SQL_HOST}" \ |
200 |
--database="${SQL_DB}" \ |
--database="${MCORE_SQL_DB}" \ |
201 |
--xml \ |
--xml \ |
202 |
--execute="select * from ${table} ${where_statement}" \ |
--execute="select * from ${table} ${where_statement}" \ |
203 |
| xml sel -T -t -m //row/field \ |
| xml sel -T -t -m //row/field \ |