设为首页 收藏本站
查看: 772|回复: 0

zabbix批量添加脚本(shell)

[复制链接]

尚未签到

发表于 2018-8-22 10:12:42 | 显示全部楼层 |阅读模式
#!/bin/bash  

  
PROGNAME=$(basename $0)
  

  
##### Helper functions
  

  
function usage
  
{
  
echo "This script adds WEB checks from a file to a zabbix host by inputting the urls directly into the database."
  
echo "USE WITH CARE!!"
  
echo ""
  
echo "usage: ${PROGNAME}"
  
echo ""
  
echo "MySQL connection options:"
  
echo "-u | --dbusermysql username to connect to zabbix database (Required)"
  
echo "-p | --dbpassmysql password to connect to zabbix database (Required)"
  
echo "-H | --dbhosthostname of the mysql server (Default: localhost)"
  
echo "-D | --dbnamedatabasename of the zabbix mysql database (Default: zabbix)"
  
echo ""
  
echo "Webcheck options:"
  
echo "-t | --timeouttimeout in seconds before a http request times out (Default: 15)"
  
echo "-d | --delaynumber of seconds between two WEB checks (Default: 60)"
  
echo "-i | --historynumber of days to keep all values (Default: 90)"
  
echo "-t | --trendsnumber of days to keep trends (Default: 360)"
  
echo ""
  
echo "-o | --hostidthe zabbix hostid of the host these WEB checks will be added to (Required)"
  
echo "-A | --appnamezabbix application the WEB checks will be added to (Required)"
  
echo "-a | --agent    user agent the WEB check will be done as (Default: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)')"
  
echo ""
  
echo "-f | --urlfilefile with urls to monitor. One url per line (Required)"
  
echo ""
  
echo "Help:"
  
echo "-h | --helpthis message"
  
}
  

  
function error_exit
  
{
  

  
#----------------------------------------------------------------
  
#Function for exit due to fatal program error
  
#Accepts 1 argument:
  
#string containing descriptive error message
  
# Example call of the error_exit function.  Note the inclusion
  
# of the LINENO environment variable.  It contains the current
  
# line number.
  
#
  
#error_exit "$LINENO: An error has occurred."
  
#
  
#----------------------------------------------------------------
  echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
  exit 1
  
}
  

  
function log
  
{
  echo "${PROGNAME}: $1"
  
}
  

  
##### Parameter processing
  

  
# 定义你zabbix主机的hostid,这个可以在数据库hosts字段里查看,我这里直接传入$1变量,让他自动查看hostid.
  
#HOSTID=
  
HOSTID=`/usr/local/mysql/bin/mysql -u root -p'www.netbank.cn' -D zabbix --batch --skip-column-name -e "SELECT hostid from hosts where ip ='$1';"`
  
# 定义添加在哪个程序里查看.
  
APPLNAME=Services
  
USERAGENT='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)'
  
##定义你监控的路径比如:http://abc.test.com/test.index
  
HOSTFILE=/root/test
  
# timeout in seconds before a http request times out
  
TIMEOUT=33
  
# number of seconds between two checks
  
DELAY=60
  
# number of days to keep all values
  
HISTORY=90
  
# number of days to keep trends
  
TRENDS=360
  

  
MYSQLUSER=
  
MYSQLPASS=
  
MYSQLHOST=
  
MYSQLDB=
  

  
while [ "$1" != "" ]; do
  
    case $1 in
  
        -u | --dbuser )         shift
  
                                MYSQLUSER=$1
  
                                ;;
  
        -p | --dbpass )    shift
  
        MYSQLPASS=$1
  
                                ;;
  
        -H | --dbhost )    shift
  
        MYSQLHOST=$1
  
                                ;;
  
        -D | --dbname )    shift
  
        MYSQLDB=$1
  
                                ;;
  
        -t | --timeout )    shift
  
        TIMEOUT=$1
  
                                ;;
  
        -d | --delay )    shift
  
        DELAY=$1
  
                                ;;
  
        -i | --history )    shift
  
        HISTORY=$1
  
                                ;;
  
        -t | --trends )    shift
  
        TRENDS=$1
  
                                ;;
  
        -o | --hostid )    shift
  
        HOSTID=$1
  
                                ;;
  
    -f | --urlfile )    shift
  
        HOSTFILE=$1
  
                                ;;
  
        -a | --agent )    shift
  
        USERAGENT=$1
  
                                ;;
  
        -A | --appname )    shift
  
        APPLNAME=$1
  
                                ;;
  
        -h | --help )           usage
  
                                exit
  
#                                ;;
  
#        * )                     usage
  
#                                exit 1
  
    esac
  
    shift
  
done
  

  
if [ -z "$MYSQLUSER" ]
  
then
  error_exit "$LINENO: Required parameter not found: -u | --dbuser. See -h | --help for more information"
  
fi
  

  
if [ -z "$MYSQLPASS" ]
  
then
  error_exit "$LINENO: Required parameter not found: -p | --dbpass. See -h | --help for more information"
  
fi
  

  
if [ -z "$HOSTID" ]
  
then
  error_exit "$LINENO: Required parameter not found: -o | --hostid. See -h | --help for more information"
  
fi
  

  
if [ -z "$HOSTFILE" ]
  
then
  error_exit "$LINENO: Required parameter not found: -f | --urlfile. See -h | --help for more information"
  
fi
  

  
if [ -z "$APPLNAME" ]
  
then
  error_exit "$LINENO: Required parameter not found: -A | --appname. See -h | --help for more information"
  
fi
  

  
##### Functions
  

  
# Executes an sql command, call like so:
  
#   mysql_cmd "select * from zabbix.items where hostid = ${HOSTID}"
  
mysql_cmd () {
  if [ -z "$1" ]                           # Is parameter #1 zero length?
  then
  error_exit "-Parameter #1 is zero length in mysql_cmd.-\n"  # Or no parameter passed.
  fi
  

  # --skip-columna-names for parseable output assumes we don't use select *
  # so you already know which column names are in which order
  # --batch output results in record-per-line tab-delimited way
  #log "mysql -u${MYSQLUSER} -p${MYSQLPASS} -D${MYSQLDB} -h${MYSQLHOST} --batch --skip-column-name -e\"$1\""
  result=`mysql -u${MYSQLUSER} -p${MYSQLPASS} -D${MYSQLDB} -h${MYSQLHOST} --batch --skip-column-name -e"$1"`
  if [ "$?" = "0" ]; then
  # in bash you cannot return a value so we echo it, the calling function can
  # then just capture that using `` or $()
  echo $result
  else
  error_exit "MySQL command failed: $1 (-u${MYSQLUSER} -p${MYSQLPASS} -D${MYSQLDB} -h${MYSQLHOST})"
  fi
  
}
  

  
zabbix_get_next_id () {
  table="$1"
  field="$2"
  

  # Get the current id and the next id and compare them. If the difference is 1, use it.
  curr_id=`mysql_cmd "SELECT nextid FROM ids WHERE table_name='${table}' AND field_name='${field}';"`
  next_id=`mysql_cmd "UPDATE ids SET nextid=nextid+1 WHERE nodeid=0 AND table_name='${table}' AND field_name='${field}';SELECT nextid FROM ids WHERE table_name='${table}' AND field_name='${field}';"`
  if [ `expr $curr_id - $next_id` -eq -1 ] ;
  then
  echo $next_id
  return 1
  else
  return 0
  fi
  
}
  

  
##### Main
  

  
log "== Starting run"
  
log "== Starting run"
  
log "== Starting run"
  

  
# Add an application if it doesn't exist and get it's appid returned
  
app_id=`mysql_cmd "select applicationid from applications where hostid = '${HOSTID}' and name = '${APPLNAME}'"`
  
if [ -z "$app_id" ]
  
then
  app_id=`zabbix_get_next_id 'applications' 'applicationid'`
  mysql_cmd "insert into applications(applicationid, hostid, name) values (${app_id}, ${HOSTID}, '${APPLNAME}')"
  
fi
  

  
# Loop through all sites to be added
  
while read line; do
  log "== Starting ${line}"
  
        test_name=`echo ${line} |cut -f 3 -d/ |awk -F: '{print $1}'`
  
        step_name=`echo ${line} |cut -f 3 -d/ |awk -F: '{print $1}'`
  

  

  
        #  这些打#号的不用管,只是为了让我们了解,构造一个监控,需要些什么字段。
  # create a {httptest}
  # mysql> select * from httptest\G
  # *************************** 1. row ***************************
  #     httptestid: 1
  #           name: blah scenario name
  #  applicationid: 364
  #      lastcheck: 0
  #      nextcheck: 0
  #       curstate: 3
  #        curstep: 0
  # lastfailedstep: 0
  #          delay: 60
  #         status: 0
  #         macros:
  #          agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
  #           time: 0.0000
  #          error:
  # authentication: 0
  #      http_user:
  #  http_password:
  # 1 row in set (0.00 sec)
  httptest_id=`zabbix_get_next_id 'httptest' 'httptestid'`
  mysql_cmd "insert into httptest(httptestid, name, applicationid, curstate, delay, status, agent, authentication) values (${httptest_id}, '${test_name}', ${app_id}, 3, 60, 0, '${USERAGENT}', 0)"
  

  # create a {httpstep}
  # mysql> select * from httpstep\G
  # *************************** 1. row ***************************
  #   httpstepid: 1
  #   httptestid: 1
  #         name: scenario step 1
  #           no: 1
  #          url: http://localhost:8888
  #      timeout: 15
  #        posts:
  #     required:
  # status_codes:
  # 1 row in set (0.00 sec)
  httpstep_id=`zabbix_get_next_id 'httpstep' 'httpstepid'`
  mysql_cmd "insert into httpstep(httpstepid, httptestid, name, no, url, timeout, posts, required, status_codes) values (${httpstep_id}, ${httptest_id}, '${step_name}', 1, '${line}', ${TIMEOUT}, '', '', '')"
  # create {items} for {httpstep}
  # mysql> select * from items where itemid in (23731,23732,23733)\G
  # *************************** 1. row ***************************
  #                itemid: 23731
  #                  type: 9
  #        snmp_community:
  #              snmp_oid:
  #             snmp_port: 161
  #                hostid: 10092
  #           description: Download speed for step '$2' of scenario '$1'
  #                  key_: web.test.in[blah scenario name,scenario step 1,bps]
  #                 delay: 60
  #               history: 30
  #                trends: 90
  #             lastvalue: NULL
  #             lastclock: NULL
  #             prevvalue: NULL
  #                status: 0
  #            value_type: 0
  #         trapper_hosts: localhost
  #                 units: Bps
  #            multiplier: 0
  #                 delta: 0
  #          prevorgvalue: NULL
  #   snmpv3_securityname:
  #  snmpv3_securitylevel: 0
  # snmpv3_authpassphrase:
  # snmpv3_privpassphrase:
  #               formula: 0
  #                 error:
  #           lastlogsize: 0
  #            logtimefmt:
  #            templateid: 0
  #            valuemapid: 0
  #            delay_flex:
  #                params:
  #           ipmi_sensor:
  #             data_type: 0
  #              authtype: 0
  #              username:
  #              password:
  #             publickey:
  #            privatekey:
  #                 mtime: 0
  # *************************** 2. row ***************************
  #                itemid: 23732
  #                  type: 9
  #        snmp_community:
  #              snmp_oid:
  #             snmp_port: 161
  #                hostid: 10092
  #           description: Response time for step '$2' of scenario '$1'
  #                  key_: web.test.time[blah scenario name,scenario step 1,resp]
  #                 delay: 60
  #               history: 30
  #                trends: 90
  #             lastvalue: NULL
  #             lastclock: NULL
  #             prevvalue: NULL
  #                status: 0
  #            value_type: 0
  #         trapper_hosts: localhost
  #                 units: s
  #            multiplier: 0
  #                 delta: 0
  #          prevorgvalue: NULL
  #   snmpv3_securityname:
  #  snmpv3_securitylevel: 0
  # snmpv3_authpassphrase:
  # snmpv3_privpassphrase:
  #               formula: 0
  #                 error:
  #           lastlogsize: 0
  #            logtimefmt:
  #            templateid: 0
  #            valuemapid: 0
  #            delay_flex:
  #                params:
  #           ipmi_sensor:
  #             data_type: 0
  #              authtype: 0
  #              username:
  #              password:
  #             publickey:
  #            privatekey:
  #                 mtime: 0
  # *************************** 3. row ***************************
  #                itemid: 23733
  #                  type: 9
  #        snmp_community:
  #              snmp_oid:
  #             snmp_port: 161
  #                hostid: 10092
  #           description: Response code for step '$2' of scenario '$1'
  #                  key_: web.test.rspcode[blah scenario name,scenario step 1]
  #                 delay: 60
  #               history: 30
  #                trends: 90
  #             lastvalue: NULL
  #             lastclock: NULL
  #             prevvalue: NULL
  #                status: 0
  #            value_type: 3
  #         trapper_hosts: localhost
  #                 units:
  #            multiplier: 0
  #                 delta: 0
  #          prevorgvalue: NULL
  #   snmpv3_securityname:
  #  snmpv3_securitylevel: 0
  # snmpv3_authpassphrase:
  # snmpv3_privpassphrase:
  #               formula: 0
  #                 error:
  #           lastlogsize: 0
  #            logtimefmt:
  #            templateid: 0
  #            valuemapid: 0
  #            delay_flex:
  #                params:
  #           ipmi_sensor:
  #             data_type: 0
  #              authtype: 0
  #              username:
  #              password:
  #             publickey:
  #            privatekey:
  #                 mtime: 0
  # 3 rows in set (0.00 sec)
  # create a {httpstepitem} (connects {httptest} and {items})
  # mysql> select * from httpstepitem\G
  # *************************** 1. row ***************************
  # httpstepitemid: 1
  #     httpstepid: 1
  #         itemid: 23731
  #           type: 2
  # *************************** 2. row ***************************
  # httpstepitemid: 2
  #     httpstepid: 1
  #         itemid: 23732
  #           type: 1
  # *************************** 3. row ***************************
  # httpstepitemid: 3
  #     httpstepid: 1
  #         itemid: 23733
  #           type: 0
  # 3 rows in set (0.00 sec)
  # Create 3 items for response time, response code and download speed
  log "Create 3 items for response time, response code and download speed"
  # download speed
  item_id=`zabbix_get_next_id 'items' 'itemid'`
  mysql_cmd "insert into items(itemid, type, hostid, description, key_, delay, history, trends, status, value_type, trapper_hosts, units, multiplier, delta, prevorgvalue, formula, error, lastlogsize, logtimefmt, templateid, valuemapid, delay_flex, params, data_type, mtime) values (${item_id}, 9, ${HOSTID}, 'Download speed for step \'\$2\' of scenario \'\$1\'', 'web.test.in[${test_name},${step_name},bps]', ${DELAY}, ${HISTORY}, ${TRENDS}, 0, 0, 'localhost', 'Bps', 0, 0, NULL, 0, '', 0, '', 0, 0, '', '', 0, 0)"
  httpstepitem_id=`zabbix_get_next_id 'httpstepitem' 'httpstepitemid'`
  mysql_cmd "insert into httpstepitem(httpstepitemid, httpstepid, itemid, type) values (${httpstepitem_id}, ${httpstep_id}, ${item_id}, 2)"
  # response time
  item_id=`zabbix_get_next_id 'items' 'itemid'`
  mysql_cmd "insert into items(itemid, type, hostid, description, key_, delay, history, trends, status, value_type, trapper_hosts, units, multiplier, delta, prevorgvalue, formula, error, lastlogsize, logtimefmt, templateid, valuemapid, delay_flex, params, data_type, mtime) values (${item_id}, 9, ${HOSTID}, 'Response time for step \'\$2\' of scenario \'\$1\'', 'web.test.time[${test_name},${step_name},resp]', ${DELAY}, ${HISTORY}, ${TRENDS}, 0, 0, 'localhost', 's', 0, 0, NULL, 0, '', 0, '', 0, 0, '', '', 0, 0)"
  httpstepitem_id=`zabbix_get_next_id 'httpstepitem' 'httpstepitemid'`
  mysql_cmd "insert into httpstepitem(httpstepitemid, httpstepid, itemid, type) values (${httpstepitem_id}, ${httpstep_id}, ${item_id}, 1)"
  

  # response code
  item_id=`zabbix_get_next_id 'items' 'itemid'`
  mysql_cmd "insert into items(itemid, type, hostid, description, key_, delay, history, trends, status, value_type, trapper_hosts, units, multiplier, delta, prevorgvalue, formula, error, lastlogsize, logtimefmt, templateid, valuemapid, delay_flex, params, data_type, mtime) values (${item_id}, 9, ${HOSTID}, 'Response code for step \'\$2\' of scenario \'\$1\'', 'web.test.rspcode[${test_name},${step_name}]', ${DELAY}, ${HISTORY}, ${TRENDS}, 0, 3, 'localhost', '', 0, 0, NULL, 0, '', 0, '', 0, 0, '', '', 0, 0)"
  httpstepitem_id=`zabbix_get_next_id 'httpstepitem' 'httpstepitemid'`
  mysql_cmd "insert into httpstepitem(httpstepitemid, httpstepid, itemid, type) values (${httpstepitem_id}, ${httpstep_id}, ${item_id}, 0)"
  # create {items} for {httptest}
  # mysql> select * from items where itemid in (23734,23735)\G
  # *************************** 1. row ***************************
  #                itemid: 23734
  #                  type: 9
  #        snmp_community:
  #              snmp_oid:
  #             snmp_port: 161
  #                hostid: 10092
  #           description: Download speed for scenario '$1'
  #                  key_: web.test.in[blah scenario name,,bps]
  #                 delay: 60
  #               history: 30
  #                trends: 90
  #             lastvalue: NULL
  #             lastclock: NULL
  #             prevvalue: NULL
  #                status: 0
  #            value_type: 0
  #         trapper_hosts: localhost
  #                 units: Bps
  #            multiplier: 0
  #                 delta: 0
  #          prevorgvalue: NULL
  #   snmpv3_securityname:
  #  snmpv3_securitylevel: 0
  # snmpv3_authpassphrase:
  # snmpv3_privpassphrase:
  #               formula: 0
  #                 error:
  #           lastlogsize: 0
  #            logtimefmt:
  #            templateid: 0
  #            valuemapid: 0
  #            delay_flex:
  #                params:
  #           ipmi_sensor:
  #             data_type: 0
  #              authtype: 0
  #              username:
  #              password:
  #             publickey:
  #            privatekey:
  #                 mtime: 0
  # *************************** 2. row ***************************
  #                itemid: 23735
  #                  type: 9
  #        snmp_community:
  #              snmp_oid:
  #             snmp_port: 161
  #                hostid: 10092
  #           description: Failed step of scenario '$1'
  #                  key_: web.test.fail[blah scenario name]
  #                 delay: 60
  #               history: 30
  #                trends: 90
  #             lastvalue: NULL
  #             lastclock: NULL
  #             prevvalue: NULL
  #                status: 0
  #            value_type: 3
  #         trapper_hosts: localhost
  #                 units:
  #            multiplier: 0
  #                 delta: 0
  #          prevorgvalue: NULL
  #   snmpv3_securityname:
  #  snmpv3_securitylevel: 0
  # snmpv3_authpassphrase:
  # snmpv3_privpassphrase:
  #               formula: 0
  #                 error:
  #           lastlogsize: 0
  #            logtimefmt:
  #            templateid: 0
  #            valuemapid: 0
  #            delay_flex:
  #                params:
  #           ipmi_sensor:
  #             data_type: 0
  #              authtype: 0
  #              username:
  #              password:
  #             publickey:
  #            privatekey:
  #                 mtime: 0
  # 2 rows in set (0.00 sec)
  # create {httptestitem} (connects {httptest} and {items})
  # mysql> select * from httptestitem\G
  # *************************** 1. row ***************************
  # httptestitemid: 1
  #     httptestid: 1
  #         itemid: 23734
  #           type: 2
  # *************************** 2. row ***************************
  # httptestitemid: 2
  #     httptestid: 1
  #         itemid: 23735
  #           type: 3
  # 2 rows in set (0.00 sec)
  # Create 2 items for download speed and fail test of the whole scenario
  log "Create 2 items for download speed and fail test of the whole scenario"
  # download speed
  item_id=`zabbix_get_next_id 'items' 'itemid'`
  mysql_cmd "insert into items(itemid, type, hostid, description, key_, delay, history, trends, status, value_type, trapper_hosts, units, multiplier, delta, prevorgvalue, formula, error, lastlogsize, logtimefmt, templateid, valuemapid, delay_flex, params, data_type, mtime) values (${item_id}, 9, ${HOSTID}, 'Download speed for scenario \'\$1\'', 'web.test.in[${test_name},,bps]', ${DELAY}, ${HISTORY}, ${TRENDS}, 0, 0, 'localhost', 'Bps', 0, 0, NULL, 0, '', 0, '', 0, 0, '', '', 0, 0)"
  httptestitem_id=`zabbix_get_next_id 'httptestitem' 'httptestitemid'`
  mysql_cmd "insert into httptestitem(httptestitemid, httptestid, itemid, type) values (${httptestitem_id}, ${httptest_id}, ${item_id}, 2)"
  # fail test
  item_id=`zabbix_get_next_id 'items' 'itemid'`
  mysql_cmd "insert into items(itemid, type, hostid, description, key_, delay, history, trends, status, value_type, trapper_hosts, units, multiplier, delta, prevorgvalue, formula, error, lastlogsize, logtimefmt, templateid, valuemapid, delay_flex, params, data_type, mtime) values (${item_id}, 9, ${HOSTID}, 'Failed step of scenario \'\$1\'', 'web.test.fail[${test_name}]', ${DELAY}, ${HISTORY}, ${TRENDS}, 0, 3, 'localhost', '', 0, 0, NULL, 0, '', 0, '', 0, 0, '', '', 0, 0)"
  httptestitem_id=`zabbix_get_next_id 'httptestitem' 'httptestitemid'`
  mysql_cmd "insert into httptestitem(httptestitemid, httptestid, itemid, type) values (${httptestitem_id}, ${httptest_id}, ${item_id}, 3)"
  
done < ${HOSTFILE}



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-554993-1-1.html 上篇帖子: Shell脚本自动部署(编译)LAMP平台 下篇帖子: shell监控脚本-准备工作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表