iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
佛心分享-我的私藏工具箱

作業系統的專武系列 第 3

請bash找專家幫忙跑迴圈

  • 分享至 

  • xImage
  •  

在商用微服務平台的作業系統有75%用RedHat,RedHat預設Script就是bash。它學起來似乎沒像Perl和PowerShell那麼自由。倒也寫幾個放在客戶用的小工具。

工具一:顯示憑證到期日

#!/bin/bash
for url in cat ./url.txt
	do
		echo "$url check:"
		echo QUIT | openssl s_client $url | openssl X509 -nout -dates | egrep --color=always "not(Before|After)"
		printf "\n"
	done
done
  • url.txt是[IP]:[port],以換行為單位,便能一次檢查多組IP的憑證到期日。
  • echo QUIT:作用相當於Ctrl-C,openssl執行後會hands,openssl s_client $url | openssl X509 -nout -dates這一段是顯示$url的憑證到期日的指令
  • egrep --color=always:用egrep指令會主動highlight符合pattern的字串,但到bash裡就沒這預設值,所以要加--color=always
  • printf "\n":echo無法顯示換行字元,只能用printf "\n"。但只有一個echo也能做到相同效果。

工具二:使用snmpwalk

方法與上例相同,讀檔跑迴圈,只是這次是兩個檔案,一個是要檢查host的清單,一個是要檢查OID的單位。

#!/usr/bin/bash
while :
do 
  for host in `cat ./host.txt`
  do
    echo $host
    for oid in `cat ./oid.txt` 
    do echo "  $oid"  && snmpwalk -v3 -l authPriv -u username -a MD5 -A password -x DES -X password $host $oid # > /dev/stdout
    done
  done
  sleep 1
done
  • host.txt是[IP],以換行為單位,便能一次檢查多組host的SNMP狀態。
  • oid.txt則是用snmpwork來檢查每台主機哪些狀態,在SNMP協定裡,每個OID代碼代表該主機的CPU、記憶體、硬碟、網路IO等使用量,是故oid.txt內容如下:
1.3.6.1.2.1.25.3.3.1.2
1.3.6.1.2.1.25.2.3.1.2
1.3.6.1.2.1.25.2.3.1.3
1.3.6.1.2.1.25.2.3.1.4
1.3.6.1.2.1.25.2.3.1.5
1.3.6.1.2.1.25.2.3.1.6

關於openssl、snmpwalk都是相當專門的領域,這裡是用專武Script組織它們,給IT進行維運更順暢。


上一篇
開關Windows支援TLS版本
下一篇
XML特殊字元交換
系列文
作業系統的專武30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言