Linux ./graph_rules.sh:line 86:2:unbound变量-Can';我做不到这一点
我是一个彻头彻尾的乞丐当它与bash脚本一起出现时,我仍然在学习第一步 现在尝试用这个脚本导出cacti的图形规则,但出于某种原因,它给了我 可变错误 以下是代码源: !/宾/巴什-欧盟Linux ./graph_rules.sh:line 86:2:unbound变量-Can';我做不到这一点,linux,bash,scripting,rrdtool,cacti,Linux,Bash,Scripting,Rrdtool,Cacti,我是一个彻头彻尾的乞丐当它与bash脚本一起出现时,我仍然在学习第一步 现在尝试用这个脚本导出cacti的图形规则,但出于某种原因,它给了我 可变错误 以下是代码源: !/宾/巴什-欧盟 正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是$2,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是$2,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)
正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是
$2
,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)正如消息所说,在第86行中,您试图使用一个没有赋值的变量。我打赌变量是$2
,因此您可能没有传递两个参数,代码也没有检查有效的输入。谢谢,我怎么会错过这个;)
cmd_export="mysql -N --batch -h ORIGIN_DBSERVER -uORIGIN_DBUSER -pORIGIN_DBPASS ORIGIN_DB"
cmd_import="mysql -h DEST_DBSERVER -uDEST_DBUSER -pDEST_DBPASS DEST_DB"
export _snmp_query_name='Disk_Space'
export _graph_type_name='Disk_Space'
export_rule_items() {
$cmd_export -e "SELECT
sequence,
operation,
field,
operator,
pattern
FROM plugin_autom8_graph_rule_items
WHERE rule_id = (
SELECT id
FROM plugin_autom8_graph_rules
WHERE name = '${Disk_Space}'
);" > rule_items.txt
}
export_rule_match() {
$cmd_export -e "SELECT sequence,operation,field,operator,
pattern
FROM plugin_autom8_match_rule_items
WHERE rule_id = (
SELECT id
FROM plugin_autom8_graph_rules
WHERE name = '${Disk_Space}'
)
AND rule_type=1;" > rule_match_items.txt
}
export_rule() {
x="$($cmd_export -e "SELECT q.name,g.name
FROM plugin_autom8_graph_rules as rule
JOIN (snmp_query as q,snmp_query_graph as g)
ON (rule.snmp_query_id=q.id
AND rule.graph_type_id=g.id)
WHERE rule.name = '${Disk_Space}'")"
IFS=$'\t' read -r _snmp_query_name _graph_type_name <<<"${x}"
}
create_rule() {
if [[ -z "${_snmp_query_name:-}" || -z "${_graph_type_name:-}" ]]; then
echo "missing snmp query name or graph type name, abort"
exit 1
fi
$cmd_import -e "INSERT INTO automation_graph_rules(
name,
snmp_query_id,
graph_type_id)
VALUES (
'${Disk_Space}',
(SELECT id
FROM snmp_query
WHERE name = '${_snmp_query_name}'),
(SELECT id
FROM snmp_query_graph
WHERE name = '${_graph_type_name}')
);" || exit 1
}
import_rule_items() {
$cmd_import -e "LOAD DATA LOCAL INFILE 'rule_items.txt'
INTO TABLE automation_graph_rule_items
(sequence,
operation,
field,
operator,
pattern)
SET rule_id=(SELECT id from automation_graph_rules WHERE name='${Disk_Space}');"
}
import_rule_match() {
$cmd_import -e "LOAD DATA LOCAL INFILE 'rule_match_items.txt'
INTO TABLE automation_match_rule_items (sequence,operation,field,operator,pattern)
SET rule_id=(SELECT id from automation_graph_rules WHERE name='${Disk_Space}'),
rule_type=1;"
}
rewrite_rule_matches() {
sed -e 's/host\./h./' -e 's/host_template\./ht./' rule_match_items.txt
}
echo -e "\nWarning: Read the code, understand the code, have backups, know how to fix."
echo -e "If this blows up, you're on your own. Proceed ?\n"
select proceed in \
"Yes, I know what I'm doing." \
"No." ; do
[[ "$proceed" = Yes* ]] && break;
exit 1
done
case $1 in
export)
export_stuff
;;
import)
import_stuff
;;
transit)
export_rule
export_rule_items
export_rule_match
create_rule
rewrite_rule_matches
import_rule_items
import_rule_match
;;
*)
echo "unknown operation $1, abort"
exit 1
;;