2023年2月16日 星期四

DL380p Gen8 安裝ubuntu 22.04及hpasmcli 及異常log處理方式

之前陸續撿到幾台DL380p Gen8 ,依序裝了RHEL7,RHEL8都沒有問題。
但後來公司不買MA了,只好自力救濟,再加上RHEL8無法直接yum,於是決定棄用RHEL,改用Ubuntu。

要先說明的是在開機後,讀完BIOS後,HP的機器還會執行他們內建的管理介面:ILO,因此有很多的東西都是透過ILO與機器作溝通的。

最近這一台裝的是Ubuntu 22.04,遇到很多問題。記錄一下過程:
1、開機很久才讀安裝碟,看畫面是ILO4有異常log,但還是可以裝OS。最後為了省麻煩把ILO更新了,更新方法很簡單,他的ILO有網路孔,支援DHCP,讓它抓到IP,再透過網頁更新firmware就好了。這邊比較好笑的是,ILO web只支援tls 1.0,但目前(2023) 所有的瀏覽器都不支援tls 1.0了,唯一的只有IE,但IE在2/14不給用了。只好去調firfox的設定(或者也可以用ssh登入做升版,不過這部份我沒有試過。)

2、ubuntu 22.04原生支援DL380p Gen8的raid卡,因此安裝起來沒有什麼問題。但裝了ubuntu後一堆異常log,有兩種:
segfault at 28 ip 0000560378cdaa32 sp 00007fffc04f3420 error 4
另一種我沒有留,不過去查的話也是跟ILO相關。大概可以猜測是因為沒有裝ILO相關的套件造成的,但要找套件也是很麻煩的(因為Ubuntu 22.04之後apt-key使棄用,因此要花點時間研究,但排除後還是不能用apt安裝相關套件,最後直接去讀路徑,把相關的檔案下載後裝一裝就好了,但要裝的時候要小心,有部份套件是適用於gen10之後的機器。花了很多時間,才搞定,檔案是都放在這裡:https://downloads.linux.hpe.com/SDR/repo/mcp/Ubuntu/dists/jammy/12.50/non-free/


但好笑的是最後在解決其它問題的時候,發現檔案也有整合在其它方法,自行取用即可:
https://downloads.linux.hpe.com/SDR/repo/mcp/pool/non-free/
要稱讚HP一下,不需要註冊就大方的給檔案。

裝完相關套件之後,確實log少了很多。剩下的都是這種了:
hpilo Open could not dequeue a packet.
至少看的出來是hp裡的告警判讀問題。
但還是很多,因此我升版了ILO的firmware (其實我是到這個步驟才升的)
升完之後重開機,LOG就少了很一些。
但並非完全沒有。看起來是套件有少裝,所以他有部份的log無法解讀。所以我試著去裝hpasmcli 跟hplog 來查看log細項。它是在hp-health套件中,不算好找也不算難找,花了點時間,終於裝上了(記得要加force強制安裝,不然他會一直吐有少檔案的告警不給你裝),但一執行就....
ERROR: Could not open /dev/cpqhealth/cdt.
Please make sure the Health Monitor is started.

但這個好解決,裝上smartmontools,pciutils,dmidecode,真的不行就再裝ipmitool,就能解決了。

好棒棒,我們處理好了這些毛。但回頭一看RHEL8的機器也偶爾會吐Open could not dequeue a packet,也來處理一下。

RHEL8這邊的問題又不太一樣,因為他不提供hp-health的套件了。所以我們只能裝舊版的,但在尋找的過程中,發現在
https://downloads.linux.hpe.com/sdr/repo/spp-gen9/2021.10.0_supspp_rhel8.5_x86_64/

有新版本,裝了hp-health和他朋友就解決了。最麻煩的是RHEL7,什麼都試了就不行。最後發現裝上新版的hp-health就排除了。

過程如下,做過的蠢事太多了,不再一一說明了:

hpilo 0000:01:00.2: Open could not dequeue a packet


[root@saturn ilo]# hpasmcli

ERROR: Could not open /dev/cpqhealth/cdt.
Please make sure the Health Monitor is started.


yum install dmidecode

dmidecode -t bios

ERROR: Could not open /dev/cpqhealth/cdt.
Please make sure the Health Monitor is started.




more /proc/devices  | grep ipmidev
241 ipmidev


本來就有:
yum -y install smartmontools
yum install pciutils


新裝
yum install ipmitool

ipmitool sensor list

rhel8的機器到這裡就有效了。
ubuntu的機器我忘了,但印象大概也是到這一個步驟。

ERROR: Could not open /dev/cpqhealth/cdt.
Please make sure the Health Monitor is started.

ls -al /dev/cpqhealth/cdt
crw-r--r-- 1 root root 255, 178 Feb 17 14:07 /dev/cpqhealth/cdt



yum install mcelog
no use.

[root@saturn ilo]# rpm -ivh hp-ams-2.10.1-863.1.rhel7.x86_64.rpm
warning: hp-ams-2.10.1-863.1.rhel7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 26c2b797: NOKEY
error: Failed dependencies:
        lsof is needed by hp-ams-2.10.1-863.1.rhel7.x86_64


yum install lsof
rpm -ivh hp-ams-2.10.1-863.1.rhel7.x86_64.rpm
no use

systemctl restart hp-health.service
無效

安裝hponcfg,hp-snmp-agents, ssa-4.21,ssacli-4.21,ssaducli-4.21
也無效


hplog -v

rpm -e hp-health-10.50-1826.40.rhel7.x86_64
rpm -ivh hp-health-10.93-307.7.rhel7.x86_64.rpm

補充說明一下:(2023/02/18)
hp-health在repo沒有,所以你用apt install hp-health 會找不到。
所以我們把檔案下載下來安裝,但如果直接用
apt install ./hp-health_10.80-1874.10_amd64.deb
或用dpkg --install ./hp-health_10.80-1874.10_amd64.deb
會有相依性問題:
hp-health : Depends: libc6-i686 but it is not installable or
lib32gcc1 but it is not installable
E: Unable to correct problems, you have held broken packages.

所以我是這樣裝的:
dpkg --force-all --install ./hp-health_10.80-1874.10_amd64.deb
這樣安裝後,看起來一切都很美好,但在用apt安裝其它軟體時會要求你
apt-get install build-essential
這個指令一下,hp-health又會被移掉。

我本來想要自己找tarball自己編,但找不到。
所以最後是把deb解壓縮:
mkdir -p /tmp/hp-health
dpkg -x  hp-health_10.80-1874.10_amd64.deb /tmp/hp-health
再進到/tmp/hp-health的目錄中,手動把檔案放到定位。
drwxr-xr-x  4 root root 4096 Nov  2  2018 etc
drwxr-xr-x  3 root root 4096 Nov  2  2018 opt
drwxr-xr-x  2 root root 4096 Nov  2  2018 sbin
drwxr-xr-x  4 root root 4096 Nov  2  2018 usr
drwxr-xr-x  4 root root 4096 Nov  2  2018 var
其實他也很單純,手動移一移就好了。









2023年2月2日 星期四

Install Percona Monitoring Plugins for Cacti

話說最近apache常常自己死掉,然後mysql常常不理我。所以打算在另一台server上用cacti監控它們。我選用的是percona,它在cacti上有開發相關的監控套件。

環境:rhel 8, apache 2.4.52, mysql 5.5.60-MariaDB

percona的部份,可以參考以下說明:

https://www.percona.com/doc/percona-monitoring-plugins/LATEST/cacti/index.html

percona的說明算是詳細,但照說明書做的話一定搞不定,我自己都搞了快兩天。所以我還是自己弄了一份教學,希望可以幫上其它人的忙。

由於我們要抓apache的資料,因此要幫他開新功能,請參考下列網頁。難度不高照作即可。

https://httpd.apache.org/docs/2.4/mod/mod_status.html

裝完之後要試一下能不能跑:(網址記得代換為自己的IP或網址)

wget wget -U Cacti/1.0 -q -O - -T 5 "http://www.omg.com/server-status?auto"

如果你apache裝對了,應該會有下面的回應:(我只節錄部份)

www.omg.com

ServerVersion: Apache/2.4.52 (codeit) OpenSSL/1.1.1m PHP/5.6.40 SVN/1.7.14 mod_wsgi/3.4 Python/2.7.5

ServerMPM: event

Server Built: Dec 20 2021 11:29:54

CurrentTime: Thursday, 02-Feb-2023 16:24:36 CST

我這一台server裝的是rhel8,所以我用yum來裝percona。

yum install percona-cacti-templates

這樣裝起來是1.1.8版,也是最後一版,以後也不會有新的版本了。

接著我們要先修改一下它的設定檔。

vi /usr/share/cacti/scripts/ss_get_by_ssh.php
vi /usr/share/cacti/scripts/ss_get_mysql_stats.php
MySQL的部份要修改帳號及密碼,ssh的部份你要設定一個可以免密碼登入要監控主機的帳號。 不過我只打算透過網頁抓Apache的資料,因此我就不設定ssh的部份。

修改完成後,我們也來測試一下,先試一下apache:

php /usr/share/cacti/scripts/ss_get_by_ssh.php --type apache --host www.omg.com --items gg,gh
有正常輸出的話,再試一下mysql:
/usr/bin/php -q /usr/share/cacti/scripts/ss_get_mysql_stats.php --host www.omg.com --items kx,ky --user omg --pass ohmygod --port 3306

再來就是麻煩的部份:

cd /usr/share/cacti/resource/percona/bin

讓自己產生符合你需要的template:
perl pmp-cacti-template --script ../../../scripts/ss_get_by_ssh.php ../definitions/apache.def > apache.xml

正常狀況下,你會得到以下的錯誤訊息:
Redundant argument in sprintf

這個不難解決,有人幫忙做了patch,我們將之下載,但在下載前,先把舊的檔案刪掉。
rm pmp-cacti-template
wget https://raw.githubusercontent.com/percona/percona-monitoring-plugins/master/cacti/bin/pmp-cacti-template

然後稍微修一下:
vi pmp-cacti-template

找到這一段:
my %hash_version_codes = (
把"0.8.6j" => "0013"的最後補上一個逗號,,
再新增add   "1.2.2"  => "0103"
我用的Cacti是1.2.2,因此我加上對應的0103。

接著我們要讓它產生新的hash,以配合Cacti的版本:
先做mysql的部份:
./pmp-cacti-make-hashes --refresh /usr/share/cacti/resource/percona/definitions/mysql.def > /usr/share/cacti/resource/percona/definitions/mysql_now.def

再來做Apache的部份:
./pmp-cacti-make-hashes --refresh /usr/share/cacti/resource/percona/definitions/apache.def > /usr/share/cacti/resource/percona/definitions/apache_now.def

再來要產出給Cacti import的XML檔。
perl pmp-cacti-template --script ../../../scripts/ss_get_by_ssh.php ../definitions/apache_nowdef > apache.xml
然後我們失敗了,得到一串字:
Both the meta file and the script file must have a version at pmp-cacti-template line 641.

好吧,回頭修一下,既然他說沒有版本資訊,我們就塞給他:
vi /usr/share/cacti/scripts/ss_get_by_ssh.php 
找到
$version = '$VERSION$';
改成
$version = '1.2.2';

接著再試試看有沒有正常產出:
perl pmp-cacti-template --script ../../../scripts/ss_get_by_ssh.php ../definitions/apache_nowdef > apache.xml

然後是mysql:
perl pmp-cacti-template --script ../../../scripts/ss_get_mysql_stats.php ../definitions/mysql_now.def > mysql.xml

接著你可以把檔案傳出來,再用cacti的介面上傳。
或者也可以用cli,然後你會遇到另一個問題,原因是你的filename後面要加上等號= (之前Cacti 1.2.15好像不需要加=號,這個問題我花了一段時間,最後去trace source code才發現...)

cd /usr/share/cacti
產出apache的xml:
php cli/import_template.php --filename=resource/percona/bin/apache.xml
產出mysql的xml:
php cli/import_template.php --filename=resource/percona/bin/mysql.xml
這樣就大功告成了,最後回到你的Cacti 在既有的device或者新增一個device,在Add Graph Template,可以找到像這種的東西,就真的是大功告成了。






2023年1月15日 星期日

CE (Cheat Engine)指標 (pointer) 遊戲修改應用教學

用Cheat Engine (以下簡稱CE) 改遊戲的人應該會遇到一個問題,在重開遊戲後需要重新找要修改

的東西所在的記憶體位址。其實CE有提供指標的功能,簡單說就是找出記憶體的相對位址,

這樣每次重開遊戲就不需要重新找一次了。


這邊做一個簡單的教學(其實是我常忘,寫個備忘錄)。

在此我們用snes9x64及ce7.4 64做驗證,如果用32位元的程式就用ce7.4 (32),我們在此使用

64 bit的版本做示範。


開啟snes9x,然後開啟三國志3,接著選擇第一時期(189年),我們選擇劉備,他目前住在平原。

目前黃金是2300,先用模擬器的功能做隨機存檔。接著我們用簡單的搜尋功能,找到其目前記

憶體位址 (長度是2 byte)。這邊的操作不再細述。


接著我們再讀存檔,取回黃金2300的狀態。


我們將這筆記錄按兩下左鍵,丟到下面的修改區。接著對這一筆記錄按右鍵,點選

『Find out what writes to this address』


會有確認視窗,按Yes即可。

一張含有 文字 的圖片

自動產生的描述

然後會跳出一個監控視窗,它目前是空的。


跟著我們再花100元。再回頭看這個監控視窗,在Instruction的部份已經有東西了。

接著點選『More information』



再來就是關鍵了,CE建議的位址是:『04E0ECF0』在這頁是RDX的位址,我們儲存備用

(對它點右鍵就會提示自動複製)。但我們看一上面的組合語言:它是『rcx+rdx』,

RCX是它的偏移位址,它是『000028C0』同樣存下來備用。(另外開一個文字檔來存它)

一張含有 文字 的圖片

自動產生的描述


回到CE的搜尋視窗,開始一個新搜尋,勾選Hex,長度改為4 Bytes,輸入04E0ECF0,

找出誰的值是它。我們找到一堆,通常是第一個,如果不是就一直往下試。我們這個例子

剛好是第一個。



對第一筆按兩下左鍵,讓它跑到下方的修改區。接著對它的位址『1408D8BE8』點兩下左鍵。

它的Address是『”snes9x-x64.exe”+8D8BE8』,把它複製起來。

一張含有 文字 的圖片

自動產生的描述



快要完成了,我們點選右下角『Add Address Manually』,先點選『Pointer』,再來要輸入

offset,我們把之前備份的『000028C0』貼上去,接著來指標的位址,我們貼上剛剛複製的

:『”snes9x-x64.exe”+8D8BE8』,記得Type要改成『2 Bytes』因為我們的原始搜尋就是2 bytes。

最後我們看一下Address下方欄右邊的數字,已經變成2200塊了。看來我們大功告成了 ,

我們點選『OK』讓它跑到下方的編輯區。


最後我們對這一筆點選『Active』,滑鼠對『No description』點選兩下左鍵改成『189-平原金』

以茲識別。最後再點選Value將它改成5000做測試。


有趣的是,你改完指標資料之後,第一次找到記憶體位址也一併修改了。因為它本來就是結果,

是記憶體互相指來指去的結果,但我們找到的是最原始的指標,是用來找到這些記憶體存放位

址的方式(相對於snex9x的位址)。即使我們下次開遊戲前電腦已做過各項操作,但它永遠會是正

確的。

一張含有 文字 的圖片

自動產生的描述


我們回到遊戲,也可以看到它變成5000塊了。記得要刷新一下畫面,開啟幾個指令再取消。

一張含有 地圖 的圖片

自動產生的描述


我們將作弊碼碼存檔,點選左上角File,點選Save as ,再隨意取個檔名存檔。在此我用san3j。

一張含有 文字 的圖片

自動產生的描述


最後我們關掉模擬器跟CE,然後隨便做一些操作。看重新載入遊戲及修改器時,這個作弊碼

能不能正常運作。我們依序開啟模擬器載入遊戲,讀入剛剛的隨機記憶。這個時候還是2300元

一張含有 地圖 的圖片

自動產生的描述

接著開啟CE,然後讀取模擬器的程式,再讀取剛剛儲存的CT檔。

(你也可以直接對CT檔按兩下左鍵,它會自己呼叫CE,你再從CE讀取模擬器的主程式)


接著將189-平原金Actvie,再修改其數值為5000。這邊可以觀察一下,之前一開始找到的

04E115B0已經變成跟2300元無關的16068了。

一張含有 文字 的圖片

自動產生的描述


接著我們回到遊戲,再切換一下視窗。變回5000元囉。真方便,不需要每次都搜尋一次。

一張含有 地圖 的圖片

自動產生的描述


在此說明一下,這個範例比較簡單,只有一次偏移(offset),實務上有可能會遇到偏移兩次、

三次、甚至四次的CASE。就再麻煩讀者自行評估哪種方便了。



2022年12月13日 星期二

wkhtmltopdf (wkhtmltoimage) 與openssl (libssl-dev)的衝突問題

 早上突然發現有一個報表很久沒有發了。它的作法是去查某網頁,若有更新就截圖寄給我。

看了一下是wkhtmltoimage在https的環境不能跑了。看了一下錯誤訊息,有一連串的這個:

QSslSocket: cannot resolve CRYPTO_num_locks

查了一下關鍵字,應該是我之前手動升版openssl造成的libssl-dev的路徑對不上的關係 (當時是為了玩ftps)

試著把libssl-dev重裝,無效。

找第三方的libssl來裝,也沒有效。

好吧,反正ftps沒有在用了,把openssl降版,也沒有效。

既然openssl的部份沒有解,就來解wkhtmltoimage的部份好了。

裝了新版的wkhtmltoimage,再執行它,它說glibcxx_3.4.21' not found。

看了libstdc++.so.6檔案的內容:strings libstdc++.so.6 | grep GLIBC

它確實沒有3.4.21這個版本。

原本已經打算手動更新gcc了。但在找相關檔案時發現,我之前在這機器上有裝docker。它有libstdc++.so.6.25,看了它的字串,它有GLIBC_3.4.21。

於是我就用libstdc++.so.6.25取代本來的libstdc++.so.6.19 (當然19版的我有保留下來,說不定又會有其它問題)。

接著再跑wkhtmltoimage。

OK,問題解決了。

2022年12月8日 星期四

一些ESP-01, ESP8266, ESP32 的使用及燒錄方式

前些日子因緣際會,剛好拿到ESP-01, ESP8266,  ESP32。常常會忘記使用方式。因此做個簡單的筆記。

實際接線:

ESP-01比較麻煩,除了vcc(3.3v),gnd,tx,rx要接到對應的線之外, enable也要接上3.3v (有一些是標註CH_PD,縮寫是chip power-down)。如果要更新firmware的話。他的GPIO0要接地,這邊指的是送電時就要接地,等它開機後要不要接地都沒有影響。

更新firmware可以用官方工具ESP8266 flash download tool或ESP8266一键烧录工具來燒錄,我兩者都有成功跟失敗過,失敗的這幾次似乎是因為ESP-01之前已經被我玩壞了。

記得,要測試的時候,記得把GPIO0的接地拿掉。我的作法是先斷電,拿掉它的接地再送電。再使用realteam或putty進行測試(baud rate要設對,預設是115200)。

接線的部份如下:

來源網頁:

 https://sites.google.com/mail3.hwsh.tc.edu.tw/earth/arduino/%E5%8F%83%E8%80%83%E8%B3%87%E6%96%99/%E5%85%B6%E4%BB%96esp8266-01%E6%9B%B4%E6%96%B0%E9%9F%8C%E9%AB%94%E8%88%87%E8%A8%AD%E5%AE%9A


記得這個圖是從正面看的,因此接腳的位置會是左右相反。不過正常人應該一看就知道才對。

如果是接usb-rs232-console的話,接線如下:
來源網頁:
https://iot-playground.com/blog/2-uncategorised/35-esp8266-firmware-update


更新firmware後,就可以使用arduino-ide來開發了。
記得在『額外的開發版管理員』,新增網址:http://arduino.esp8266.com/stable/package_esp8266com_index.json
之後在ESP32時會有其它需要新增的網址。
另外要提醒的是,要上傳程式時,GPIO0還是要接地,因此可以裝一個簡單的開關,在arduino ide出現connect時再按鈕即可。

再講ESP32,我買的是ESP32-WROOM-32D,它的型號就有規格資訊:多協議模組 SMD Module, ESP32-D0WD, 32Mbits SPI flash, UART mode, PCB antenna。

它有內建MCU, 意思是不用再透過Arduino或其它MCU做設定。
這種東西用起來都差不多,它的serial port已經內建了,所以不需要再用USB轉RS232的線材,就看他是用micro usb或usb type c 。另外要注意的是, 有一些線只有充電功能不能傳檔,使用時一定要小心,不要像我弄了一個下午才發現是線材的問題。


記得在『額外的開發版管理員』,新增網址:
https://dl.espressif.com/dl/package_esp32_index.json
在Aruduino IDE要選擇ESP32 Dev Module


同樣的,在上傳程式的時候(按下upload,出現connect時),要記得按IO0的按扭 (我認為是GPIO0的縮寫,在某些板本上可能是flash的按鈕)

接著是ESP8266,照片如下:
它的型號是:ESP8266MOD,可惜沒有其它的資訊。但它有內建MCU,可以少做一點功。
這一塊是使用microusb,記得確認用的是傳輸線而非充電線。另外它的按扭是flash,而不是GPIO0。
Arduino IDE的模組要新增:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
我在網路上也有找到其它檔案,但不曉得丟去哪了。說不定是另一個檔案搞定的。

接著要選擇的版是:NodeMCU 1.0 (ESP-12E)。

我另外還買了一片沒有接擴展版的ESP8266-MOD。
但由於沒有附模塊轉接版:
要用的時候還要自己拉線接電組或銲接,因此使用上很麻煩。所以買的時候要小心。

最後再回頭講ESP-01, 我有兩種:
第一種是ESP8266EX 242016 PAGF26 它是ESP-01S

這一片可以正常運作,242016應該就是它的規格,但不曉得到哪邊查,這個在upgrade flash會用到。 (補充說明,旁邊有一顆PN25F08,說明了他是一個8Mbit (1Mbyte)的SPI,如果需要支援不同(或更新)的AT指令集,或者修改它的預設baudrate (預設是115200, 但某版預設是9600,有些人覺得這樣跟arduino 一樣比較好用,不用改來改去)
來源:
https://sites.google.com/mail3.hwsh.tc.edu.tw/earth/arduino/%E5%8F%83%E8%80%83%E8%B3%87%E6%96%99/%E5%85%B6%E4%BB%96esp8266-01%E6%9B%B4%E6%96%B0%E9%9F%8C%E9%AB%94%E8%88%87%E8%A8%AD%E5%AE%9A


接線時要記得圖片是正常,但你的接腳在背面,所以越左右相反。
以此例而已,Arduino的4要接到TX,Arduino的5要接到RX。

由於ESP-01S本身沒有MCU 所以要透過arduino 來控制。
因此在Arduino的板要選擇Arduino UNO (以我的例子而言)
在此也看的出來,為何MCU會受歡迎,光是接線就輕鬆很多。

最後要講的是讓我很頭痛的另一組ESP-01:


它的型號是:ESP8266EX 022021 AB00N3MT21,剛買來的時候應該是好的,但我不曉得怎麼把他弄死了。之後怎麼刷都救不回來,也找不到他相關的規格(flash size/rom size/ram size)之類的,最好笑的是,只找的到AB00N3NT21 的相關資料,看來我手邊的這一塊還是仿造的...說不定賣給我的人也沒有試過,他本來就是壞的。順帶一提,這一片就是我去研究怎麼燒錄的開始...也不算是壞事,至少我學到了很多新知識。

補充說明,最後我覺得esp8266ex旁邊那顆很可疑,它上面寫BY25D80,參考資料倒是滿好找的,它似乎是一顆8Mbit的SPI NOR FLASH ,可惜我照以下網頁再做一次:
https://sites.google.com/mail3.hwsh.tc.edu.tw/earth/arduino/%E5%8F%83%E8%80%83%E8%B3%87%E6%96%99/%E5%85%B6%E4%BB%96esp8266-01%E6%9B%B4%E6%96%B0%E9%9F%8C%E9%AB%94%E8%88%87%E8%A8%AD%E5%AE%9A
但還是失敗。

最後再記錄一下我的想法,官網 有相關的說明 (雖說我這個是仿的ESP8266)
https://www.espressif.com/en/support/documents/technical-documents
它似乎是分成NON-OS (純AT commander)還有 OS version (內建OS) 這兩種。
要燒的東西自然是不同的。有OS的自然需要更大的ROM/RAM。但我連NON-OS都失敗了,就不再試RTOS了。

另外有一種工具是MCU一鍵燒錄,但我這個只是單純的esp8266,看來是不適用的(雖然在燒的時候感覺一切都很好)。一鍵燒錄也有一個版本是可以選擇ROM size的,要用的時候可以去找來試試。(當然也可以燒官方rom)



































2022年10月21日 星期五

BGP redistribute IGP (RIP , OSPF ) redistribute BGP

 


這個架構不難,就iBGP轉進RIP。重點是中間的R2同時要跑iBGP和RIP。
這其實是客戶的架構,在排除問題時想說順便驗證一下。
結果一開始怎麼測試,R2就是不把從iBGP收到的網段轉到RIP。
原先以為是
iBGP裡面要設定:
  address-family ipv4
   bgp redistribute-internal

但想想不對 ,明明R2都有學到R1跟R3的網段了,應該是RIP那邊的問題比較合理。

後來試出來,是要這樣處理,就這一個指令花掉我幾個小時的時間。

router rip

 redistribute bgp 5566 metric transparent


順便測試一下OSPF的部份,重點是在 match external 2 (因為我放的是OSPF external type 2)

router bgp 4780

 address-family ipv4

  bgp redistribute-internal

  redistribute ospf 99 metric 1 match internal external 2


eigrp的部份是最特別的。由於interface ip跟要放的network overlap。所以在R1的部份需要設定其eigrp router-id才能把想放的網段放出去。

例如interface是22.141.187.1要放的是22.141.184.0這樣是放不出去的。要指定router-id才行。

router eigrp 110

 eigrp router-id 1.1.1.1



2022年7月15日 星期五

cacti手動撰寫script建立template

最近在重寫cacti的template,做一個簡單的筆記,不然過幾年我又忘了。

我們針對的是script_server的部份

 1、通常是把scripts找一個適合的出來改。

cp ss_cisco_temperature.php test.php

vi test.php

function ss_cisco_temperature 上面都刪除。

但要載入必要的library,通常我會再加一點料,這樣要測試的時候比較好測試。

 error_reporting(0);

 include_once(dirname(__FILE__) . '/../include/global.php');

 include_once(dirname(__FILE__) . '/../lib/snmp.php');

 $cmd = "get";

 $arg1 = "rbnEntityTempCurrent";

 $arg2 = "104.1";

 $hostname = "1.2.3.4";

 $host_id = "30";

 $result = ssr_temperature($hostname, $host_id, "2:161:5000:1:10:iiiseed:::::: ", $cmd, $arg1 , $arg2 );

 print_r($result);

$cmd有兩種:index, num_indexes, 

$arg1有兩種:query (walk全部) get (get一個值)

如果$arg1是get的話,$arg2要填入你要查的oid。

之後要測試的時候很簡單,

把查詢的查參數改掉就好。

$result = ssr_temperature("139.175.240.150", "52", "2:161:5000:1:10:public:::::: ", $cmd, $arg1 = '', $arg2 = '');

php test.php

就可以驗證測試結果,把index,num_indexes, query arg2,get arg2

都各測一輪就差不多了。稍微看一下輸出的格式是否跟其它檔案或者與你預期的是否相符。

index就要列出所有的index

num_indexes要計算有幾個index 

query arg1(descr) ,通常是列出所有index及其對應的descr

query arg1(value) ,通常是列出所有index及其對應的value

以下兩個如果沒有show出來 (我的範例是沒有的,要自己print_r($result);

get arg1(descr) arg2(oid),先snmpwalk所有的index如果有相符的再秀出其oid對應的descr

get arg1(value) arg2(oid),取出該oid對應的value


之後就是調校data query, data template, graph template,通常我是duplicate其它的template後再進行修改。


在cacit 1.2.x版,有一個我常常忘記的設定,在建立data query時,需要Associated Data Templates,在建立Data Source後,後方的check box記得勾選,不然不會生效。







最後要提醒一下,把test.php還原成ssr_temperature.php時,我們會把前面的檔頭加回去,print call_user_func_array('ssr_temperature', $_SERVER['argv']); 這一行記得要更新成你命名的function 名稱,不然在執行時就無法執行了。