- 论坛徽章:
- 33
|
一堆的 反引号 (``), 但结果没有存入任何变量.
超过5层的管道.
超过70个字符的单行代码.
看来, 楼主不是 码农 出身.
良好的代码格式化, 不是给机器看的, 是给人(自己)看的.
我一直很佩服那些可以写出超过300个字符单行命令的人.
因为我没有这个能力. 我只能写成多行, 必要时, 写成脚本.
我太笨了, 如果 有多组括号, 我就不知道差几个, 所以,一定要有缩进.
我喜欢 python的语法, 不是它有多优秀, 而是它强制缩进, 这样, 至少我能看明白一点别人写的代码.
perl就完了, 默认变量, 加上复杂的表达式, 基本上, 写过人才能维护了.
简单改了几个地方. 主要是上面那两串长的改了. 下面的 没改. 希望楼主能看明白我改的原因, 自己也可以搞定.- proxy_group ()
- {
- cat /dev/null > data1
- cat /dev/null > data2
- cat /dev/null > repeat.tmp
- cat /dev/null > data_proxy.tmp
- cat /dev/null > not_group.tmp
- cat /dev/null > disaffinity.tmp
- cat /dev/null > file
- cat /dev/null > data_proxy.data
- DB_CONNECT="mysql -uz_admin -p123 -P3306 -h0.0.0.0"
- OPTS_1="SET names utf8;"
- OPTS_1="${OPTS_1} select distinct a.host,c.name"
- OPTS_1="${OPTS_1} from hosts as a, hosts_groups as b, groups as c "
- OPTS_1="${OPTS_1} where a.hostid = b.hostid "
- OPTS_1="${OPTS_1} and b.groupid = c.groupid "
- OPTS_1="${OPTS_1} and c.name like 'zabbix proxy%' "
- OPTS_1="${OPTS_1} and a.status = 0;"
- $DB_CONNECT zabbix -Ne "${OPTS_1}" >> data1
- OPTS_2="SET names utf8;"
- OPTS_2="${OPTS_2} select distinct yuan.host as yuan_host, proxy.ip as proxy_ip"
- OPTS_2="${OPTS_2} from hosts as yuan, hosts as proxy "
- OPTS_2="${OPTS_2} where yuan.proxy_hostid = proxy.hostid "
- OPTS_2="${OPTS_2} and yuan.status = 0;"
- #$DB_CONNECT zabbix -Ne "SET names utf8;select distinct yuan.host yuan_host, proxy.ip proxy_ip from hosts yuan,hosts proxy where yuan.proxy_hostid = proxy.hostid and yuan.status=0;" >> data2
- $DB_CONNECT zabbix -Ne "${OPTS_2}" >> data2
- awk 'NR==FNR{
- a[$1]=$NF;
- next}
- {if($1 in a)
- {if(a[$1]==$NF)
- print "same";
- else print "disaffinity",$1,$2,$3,$4}
- else print "not proxy_group",$1}' data1 data2 | \
- sort | \
- grep -v "same" >>data_proxy.tmp
- echo -e "服务器Proxy与Group不相同的IP" >> disaffinity.tmp
- awk '/^disaffinity/{print $2}' data_proxy.tmp>> disaffinity.tmp
- echo -e "\n服务器无Proxy组的IP" >>not_group.tmp
- awk '/^not proxy_group/{print $3}' data_proxy.tmp>>not_group.tmp
- echo -e "\n服务器非1个Proxy组的IP:" >> repeat.tmp
- awk '{print $1}' data1 |\
- sort|\
- uniq -c|\
- awk '{if($1 != 1){print $1,$2}else {print "OK"}}'|\
- grep -v OK>> repeat.tmp
- cat disaffinity.tmp not_group.tmp repeat.tmp >> data_proxy.data
- echo -e "\n"
- }
- proxy_group
复制代码 |
|