<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          拿來就用的腳本案例!(三)

          共 4855字,需瀏覽 10分鐘

           ·

          2021-11-26 18:14

          作者:JackTian
          來源:公眾號(hào)「杰哥的IT之旅」
          ID:Jake_Internet
          轉(zhuǎn)載請(qǐng)聯(lián)系授權(quán)(微信ID:Hc220088)

          大家好,我是杰哥(鴿)。

          之前給大家分享了《7 個(gè)非常實(shí)用的 Shell 拿來就用腳本實(shí)例!》和《超硬核!11 個(gè)非常實(shí)用的 Python 和 Shell 拿來就用腳本實(shí)例!》兩篇文章。

          得到了多位讀者朋友的留言說:簡直太實(shí)用了。

          最近工作中,又碰到了幾個(gè)實(shí)際場景并運(yùn)用了腳本,大致包括:Zabbix 自動(dòng)發(fā)現(xiàn)監(jiān)控 URL、阿里云短信接口、每周刪除 Elasticsearch X 個(gè)月前的索引,具體如下:

          1

          Zabbix自動(dòng)發(fā)現(xiàn)監(jiān)控URL

          此腳本用于監(jiān)控 URL,自動(dòng)發(fā)現(xiàn)文件或其他存儲(chǔ)的 URL。

          1.1 URL自動(dòng)發(fā)現(xiàn)腳本

          from?os.path?import?abspath,?dirname,?join
          import?json
          import?sys


          reload(sys)
          sys.setdefaultencoding('utf-8')

          #?URL存儲(chǔ)文件
          #?每一行格式為(可寫多行):應(yīng)用名稱 URL地址?注釋
          URL_FILE_PATH?=?join(dirname(abspath(__file__)),?'web_url_list')

          #?輸出結(jié)果,zabbix官方定義的格式
          data?=?{'data':?[]}

          with?open(URL_FILE_PATH,?'r')?as?read_f:
          ????#?讀取URL文件,并進(jìn)行分割,組成官網(wǎng)定義數(shù)據(jù)
          ????for?line?in?read_f:
          ????????if?line:
          ???????????name?=?line.split()[0]
          ???????????url?=?line.split()[1]
          ???????????description?=?line.split()[2]
          ???????????data['data'].append({"{#NAME}":?name,?"{#URL}":?url,?"{#DESCRIPTION}":?description})

          print?json.dumps(data)

          1.2 URL測(cè)試腳本

          from?sys?import?argv
          import?requests

          #?獲取URL狀態(tài)
          def?get_url(url,?timeout=5):
          ????#?多數(shù)情況下返回200即為訪問成功,提前測(cè)試好自己的URL訪問返回狀態(tài)碼
          ????try:
          ????????request_obj?=?requests.get(url,?timeout=timeout)
          ????????status_code?=?request_obj.status_code
          ????except?Exception?as?e:
          ????????status_code?=?99999

          ????print(status_code)


          url?=?argv[1]
          get_url(url)

          1.3 zabbix 配置自定義 key

          UserParameter=discovery_web_url,?/bin/python?/opt/zabbix_scripts/web_url/url_discovery.py?
          UserParameter=url_get[*],?/bin/python?/opt/zabbix_scripts/web_url/url_get_status.py?$1

          1.4 zabbix WEB 端配置

          • 配置自動(dòng)發(fā)現(xiàn)


          • 添加監(jiān)控項(xiàng)、觸發(fā)器原型


          2

          阿里云短信接口

          根據(jù)官網(wǎng)樣例配置短信發(fā)送

          2.1 阿里云配置

          • 簽名配置:控制臺(tái)-短信服務(wù)-國內(nèi)消息-簽名配置

          • 模板配置:控制臺(tái)-短信服務(wù)-國內(nèi)消息-模板配置

          自己定義好變量,如果告警信息過長(默認(rèn)是35個(gè)字符),提交工單解除限制。

          • AccessKey配置:頭像-AccessKey管理

          2.2 發(fā)送腳本

          #coding=utf-8

          ???from?aliyunsdkcore.client?import?AcsClient
          ???from?aliyunsdkcore.request?import?CommonRequest
          ???from?sys?import?argv


          ???LOG_FILE_PATH?=?'/tmp/zabbix-sms.log'


          ???def?sendSms(phone_numbers,?subject,?alert_message):
          ???????#?AccessKet
          ???????client?=?AcsClient('AccessKey?ID',?'Secret')
          ???????alert_message?=?subject?+?alert_message

          ???????#?官方定義的格式,具體含義沒有研究
          ???????request?=?CommonRequest()
          ???????request.set_accept_format('json')
          ???????request.set_domain('dysmsapi.aliyuncs.com')
          ???????request.set_method('POST')
          ???????request.set_protocol_type('https')?#?https?|?http
          ???????request.set_version('2017-05-25')
          ???????request.set_action_name('SendSms')

          ???????request.add_query_param('PhoneNumbers',?phone_numbers)
          ???????#?簽名名稱
          ???????request.add_query_param('SignName',?"XXXX")
          ???????#?模板code
          ???????request.add_query_param('TemplateCode',?"XXXX")
          ???????#?傳遞的參數(shù)
          ???????request.add_query_param('TemplateParam',?"{\"alert_message\":\"%s\"}"?%?alert_message)

          ???????response?=?client.do_action(request)
          ???????return?response

          ???def?writeLog(message,?response,?log_file_path):
          ???????with?open(log_file_path,?'a')?as?a_file:
          ???????????a_file.write(message?+?'?|?'?+?response)

          ???if?__name__?==?'__main__':
          ???????phone_numbers?=?argv[1]
          ???????subject?=?argv[2]
          ???????alert_message?=?argv[3]
          ???????#?手機(jī)號(hào)、主題、告警信息
          ???????#?由zabbix端傳遞過來的
          ???????res?=?sendSms('130XXXXXXXX',?subject,?alert_message)
          ???????writeLog(subject?+?alert_message,?res,?LOG_FILE_PATH)

          2.3 zabbix WEB 端配置

          • 報(bào)警媒介

          • 用戶配置報(bào)警媒介

          • 動(dòng)作中應(yīng)用即可

          3

          每周刪除Elasticsearch X個(gè)月前的索引

          索引格式示例:index-2021.11.21

          #!/bin/bash
          #?Filename???:??delete_es_indices.sh
          #?Date???????:??2021/11/21
          #?Author?????:??xxx?
          #?Email??????:??xxx
          #?Crontab????:??10?00?*?*?6?/bin/bash?$BASE_PATH/delete_es_indices.sh?>/dev/null?2>&1
          #?Notes??????:??將腳本加入crontab中,每周六0點(diǎn)10分執(zhí)行
          # Description:??每周刪除Elasticsearch X個(gè)月前的索引,索引格式示例:index-2021.04.11


          check_args(){
          ????if?[?"$#"?-ne?2?];then
          ????????echo?"Usage:?$0?[ES_URL]?[DEL?DAYS]"
          ????????echo?"ES_URL示例:http://1.1.1.1:9200,DEL DAYS:表示要?jiǎng)h除多少天前的索引。"
          ????????exit?1
          ????fi
          }


          #?刪除索引函數(shù)
          DeleteIndices(){
          ????indices="$1"
          ????time="$(echo?$indices?|?awk?-F'-'?'{print?$NF}')"
          ????delete_time="$(date?-d?"-${DELETE_DAYS_AGO}?day"?+'%Y-%m-%d')"

          ????#?過濾時(shí)間是不是?2021.04.11?格式的,如果不是就退出函數(shù)
          ????if?!?echo?"$time"?|?egrep?-o?"[0-9]{4}\.[0-9]{2}\.[0-9]{2}"?&>/dev/null;then
          ????????return???
          ????fi

          ????#?轉(zhuǎn)換為unix好時(shí)間,date識(shí)別不了2021.11.21日志,所以轉(zhuǎn)換為2021-11-21
          ????format_time=$(date?-d?"$(echo?$time?|?tr?'.'?'-')"?+'%s')
          ????format_delete_time=$(date?-d?"$delete_time"?+'%s')

          ????#?如果索引時(shí)間小于要?jiǎng)h除的時(shí)間并且索引名字不是monitor開頭的,則刪除
          ????if?[[?"$format_time"?-lt?"$format_delete_time"?&&?!?"$indices"?=~?^monitor.*?]];then
          ????????curl?-XDELETE?"$ES_IP/$indices"
          ????fi
          }

          main(){
          ????check_args?$@
          ????#?ES?URL
          ????ES_IP="$1"
          ????#?刪除多少天前的索引
          ????DELETE_DAYS_AGO="$2"

          ????curl?$ES_IP/_cat/indices?|?awk?'{print?$3}'?|?while?read?line
          ????do
          ????????DeleteIndices?$line
          ????done
          }

          main?$@

          以上,就是今天分享的全部內(nèi)容了。

          希望大家通過這些案例能夠?qū)W以致用,結(jié)合自身的實(shí)際場景進(jìn)行運(yùn)用,從而提高自己的工作效率。

          如果你有更多腳本實(shí)例,也歡迎大家留言分享或通過本文進(jìn)行留言說說你具體的腳本實(shí)例需求,如果實(shí)例過多的話,下次杰哥在整一篇合集腳本文章實(shí)例來跟大家分享。

          推薦閱讀

          Shell編程-條件測(cè)試 | 基礎(chǔ)篇


          Shell編程-控制結(jié)構(gòu) | 基礎(chǔ)篇


          Shell編程 | 腳本參數(shù)與交互及常見問題


          Shell 腳本中 '$' 符號(hào)的多種用法


          7 個(gè)非常實(shí)用的 Shell 拿來就用腳本實(shí)例!


          超硬核!11 個(gè)非常實(shí)用的 Python 和 Shell 拿來就用腳本實(shí)例!

          瀏覽 72
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91九色丨国产丨爆乳 | 啊啊啊啊啊www. | 50路人妻 | 台湾长腿美人ladyyuan | 欧美综合在线视频 |