跳到主要內容

發表文章

Oracle EBS 11i查詢使用的Port

因為要知道EBS 11i有使用到哪些Port,以便網路的設定,故記錄一下。











Solaris Find指令備忘記錄

為了怕自己又忘了該如何以find指令查詢,所以記錄一下。

查詢365天內有修改(更新)的檔案
find . -name "*.fmb" -mtime -365 -exec ls -lh {} \;

查詢365天內有修改(更新)的檔案,排除檔名有含2019的字串
find . -name "*.fmb" ! -name "*2019*" -type f -mtime -365 -exec ls -lh {} \;

查詢365天內有修改(更新)的檔案,排除檔名有含2019的字串之檔案數量
find . -name "*.fmb" ! -name "*2019*" -type f -mtime -365 |awk '{count++}END{print count}'

查詢365天內有修改(更新)的檔案,排除檔名有含2019,並修改查詢結果每行的「./」改為空值,跳脫字元「/」
find . -name "*.fmb" ! -name "*2019*" -type f -mtime -365 -exec ls -lh {} \; | awk '{print $6 " " $7 " " $8 " " ":" " " $3 "  " $9}'|sed 's/\.\///g'

查詢365天內有修改(更新)的檔案,排除檔名有含2019,並且擁有者為testmgr之檔案數量
find . -name "*.fmb" ! -name "*2019*" -type f -mtime -365 -exec ls -lh {} \;|awk '{if($3=="testmgr") {print $3 ; count++}}END{print count}'

Solaris的效能指令查詢備忘

因為要監控Solaris的效能,所以在網路上找了一些資料,在此記錄下來備忘。

free memory百分比
a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print $3*1024}'); vmstat 1 1 | tail -1 | awk "{print (\$5/$a)*100}"
vmstat 1 1 | tail -1 | awk '{print $5/1024}'

used memory百分比
a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print $3*1024}'); vmstat 1 1 | tail -1 | awk "{print 100-(\$5/$a)*100}"


CPU狀態
sar -u 1 1 |tail -1 |awk '{ print $2 }'
sar -u 1 1 |tail -1 |awk '{ print $2+$3+$4 }'

記憶體使用狀況
echo  ::memstat|mdb  -k

Process記憶體使用加總(rss 單位KB)
ps -eo rss | awk '{sum +=$1}END{print sum}' 

查詢記憶體使用狀況,並將第四行ZFS File Data、第八行Free (cachelist)、第九行Free (freelist)的值相加
echo ::memstat | mdb -k |awk 'NR==4{a=$5};NR==8{a=a+$4};NR==9{print a+$4}'

與上述類似,%.2f指取到小數第二位
echo ::memstat | mdb -k |awk 'NR==10{b=$3};NR==4{a=$5};NR==8{a=a+$4};NR==9{a=a+$4}END{printf("%.2f\n",strtonum((b-a)/b))}'

查詢ZFS ARCS使用量
kstat zfs:0:arcstats:size | grep size | awk '{printf &…

Jenkins版本更新(Docker container)

今天將Jenkins的Docker容器啟動後,發現有新版本的Jenkins可以更新



Jenkins的更新只有一個jenkins.war的檔案,將它下載至Docker容器內。

以root進入Jenkins Container
C:\ docker container exec -u 0 -it jenkins /bin/bash

將新版的 jenkins.war 移動並取代舊版本,路徑為 /usr/share/jenkins
# mv jenkins.war /usr/share/jenkins

修改權限
# chown jenkins:jenkins /usr/share/jenkins/jenkins.war

退出Jenkins Container
# exit

重新啟動 Jenkins Container
C: \docker container restart ebd587cc3763

等待一段時間,讓服務重啟後即完成版本更新。

Python3模組pyModbusTCP抓取設備溫度資料

由於溫控設備的通信協定是Modbus,而python有一個ModbusClient模組可以讓我們方便取得資料。

首先要先安裝模組:pip install pyModbusTCP,程式碼如下,記錄一下,以免日後遺忘。

pypi:https://pypi.org/project/pyModbusTCP/

設備IP:192.168.1.191,port:702

連線Client有兩種方式,一個是持續開啟:
c = ModbusClient(host="192.168.1.191", port=702, auto_open=True)
另一個是TCP open/close for each reques
c = ModbusClient(host="192.168.1.191", port=702, auto_open=True, auto_close=True)

溫度的資料位於Address:31000,read 1x16bit資料,取出之後就可以加以利用

from pyModbusTCP.client import ModbusClient # TCP auto connect on first modbus request c = ModbusClient(host="192.168.1.191", port=702, auto_open=True, auto_close=True) # Address: 31000 , bit: 1x16 bit s = c.read_holding_registers(31000, 1) print(str(s[0]))

Python3建立簡單的http server

因為需要測試Web API,所以利用python 3來建立一個簡單的http server,並傳回字串,程式如下,配合Docker還真的蠻方便的。
from http.server import HTTPServer, BaseHTTPRequestHandler class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): def do_GET(self): if (self.path == "/"): self.send_response(200) self.send_header('Content-type','text/html') self.send_header('Access-Control-Allow-Origin','*') self.end_headers() self.wfile.write("我是首頁".encode()) #轉成二進位 if (self.path == "/get_info"): self.send_response(200) self.send_header('Content-type','application/json') self.send_header('Access-Control-Allow-Origin','*') self.end_headers() self.wfile.write("資訊頁測試.encode()) #轉成二進位 httpd = HTTPServer(('0.0.0.0', 80), SimpleHTTPRequestHandler) httpd.serve_forever()

PRTG自訂Web API

PRTG有提供Web API可以讓我們取得監控資料,也可以自訂Web API來讓我們有更大的彈性來使用。
1、到PRTG的安裝目錄的webroot\api內       例如:C:\Program Files (x86)\PRTG Network Monitor\webroot\api
2、Web API的程式都在這裡,複製一個並更名,      例如:getstatus.htm -> getstatus_customer.htm
3、格式可參考其他Web API的內容來自訂格式       例如:{ "Status": "<#objectstatus name="status" show="text">" }       可回傳object的status狀態,回傳格式為JSON
4、不用開機即可使用,使用方式與Web API一樣,例如: http://192.168.1.131:9090/api/getstatus_custom.htm?id=3322&name=status&show=text