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 名稱,不然在執行時就無法執行了。


2022年7月13日 星期三

cacti Cisco IOSXR ASR temperature and Ericsson(Redback) SmartEdge/SSR temperature

 之前在cacti 0.8.x有寫過Cisco IOSXR ASR temperature and Ericsson(Redback) temperature。自己寫的原因是在網路上找不到。

但換成cacti 1.2.x後就不能用了。找了一陣子看過了幾年有沒有人放出來,但還是找不到。

本來想要修一修舊的就好,但修的不太順,索性寫個新的版本,希望下次cacti大改版時還能用啊。

Cisco的部份主要只有在ASR 9010測試過,理論上ASR 9006應該也可以。

但我沒有寫get的部份,在realtime的部份也許不能用(等要用再來修吧)

https://github.com/tiserle/cacti_asr_temperature

ericsson的部份比較麻煩,有限制版本。在SmardEdge的部份,SEOS6是一定不能用的(snmpd沒有吐資料),SEOS12可以用,SEOS11我手邊沒有得測,所以不知道,我猜可以。

最麻煩的是SSR ,在IPOS 18可以用,但要調cacti的參數,原因是他們的snmpd被snmpwalk爬時忘了設定limit,會一路爬到timeout,此外SSR對於snmpd的priority設定的很低,常常就不回資料,要等一下才行。如果要用的話記得在設備中的snmp timeout盡量拉長。這個是用snmp index寫的,比較簡單,但變化自然就比較少。

https://github.com/tiserle/cacti_ericsson_redback_temperature

後來手癢寫了script-server的版本,但同樣的,在設備中的snmp timeout還是要拉到50000 (50秒)才行。

https://github.com/tiserle/cacti_ericsson_redback_temperature

2022年6月20日 星期一

SoftEther L2 Bridge VPN (2022修正版)

這篇文章是我寫的,2017寫的文章,跟2022年相較,有些部份需要做調整。

https://www.netadmin.com.tw/netadmin/zh-tw/technology/C3797EE717E145199F4694D0C568B0AA

由於VPN Bridge在建立local bridge時,綁定的網路卡一直為offline狀態。因此要改用VPN Server來做相關的設定。但設定方式沒有不同不用擔心。


在Branch的LAN端,我是用一台筆電介接RPI的eth0,但RPI的eth0也會抓到Headquarter的DHCP server給的IP資訊,造成RPI連外斷線。因此要將RPI的eth0設定固定IP,避免其取得DHCP時將default route指向DHCP給的gateway IP。

有很多方法都適用,我的習慣是編輯這個檔案:
/etc/network/interfaces
新增以下設定:
    auto eth0
    iface eth0 inet static
      address 192.168.0.10
      netmask 255.255.255.0
重開之後就會正常,當然你也可以systemctl restart networking
但有趣的是,它還是會自動抓到DHCP給的gateway IP,因此我們要將
default route刪除。
route delete default gw 192.168.0.254

當然,新的Pi OS有很多其它的設定方式,例如編輯
/etc/dhcpcd.conf
新增這一行:
interface eth0
static ip_address=192.168.1.10/24
記得要重啟dhcpd
systemctl restart dhcpcd.service 


2022年6月3日 星期五

windows 10 cli show intrface name and using bridgecreate (bridgedevicelist)

 


VPN Server>bridgedevice list

BridgeDeviceList 命令 - 获取可以在当地的网桥上使用的 LAN 卡一览

Microsoft (ID=1170327442)

Realtek Gaming GbE Family Controller (ID=2635375448)

Supereal network (ID=0934702716)

VMware Virtual Ethernet Adapter (ID=1905419454)

VMware Virtual Ethernet Adapter (2) (ID=0913673047)

命令成功完成。


VPN Server>bridgecreate

BridgeCreate 命令 - 创建本地的网桥连接

网桥虚拟 HUB 名称: vpn


目标网桥的设备名称: Microsoft


发生错误。(错误代码: 29)

找不到对象。

VPN Server>netsh interface show interface

"netsh": 命令未找到。

您可以使用 "HELP" 命令来查看一个可用的命令列表。

VPN Server>exit


C:\Program Files\SoftEther VPN Bridge>netsh interface show interface


管理狀態    狀態          類型             介面名稱

-------------------------------------------------------------------------

已啟用            已中斷連線          固定               乙太網路 3

已啟用            已中斷連線          固定               VPN - VPN Client

已啟用            已連線            固定               VMware Network Adapter VMnet1

已啟用            已連線            固定               VMware Network Adapter VMnet8

已啟用            已中斷連線          固定               乙太網路 4

已啟用            已連線            固定               乙太網路


C:\Program Files\SoftEther VPN Bridge>netsh interface ip show interfaces


Idx     Met         MTU          狀態                 名稱

---  ----------  ----------  ------------  ---------------------------

  1          75  4294967295  connected     Loopback Pseudo-Interface 1

 14          25        1500  connected     乙太網路

 15          35        1500  disconnected  VPN - VPN Client

 11          65        1500  disconnected  藍牙網路連線

  6          35        1500  disconnected  乙太網路 3

 21          35        1500  disconnected  乙太網路 4

 17          35        1500  connected     VMware Network Adapter VMnet1

  4          35        1500  connected     VMware Network Adapter VMnet8

  



C:\Program Files\SoftEther VPN Bridge>powershell

Windows PowerShell

Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。


請嘗試新的跨平台 PowerShell https://aka.ms/pscore6


PS C:\Program Files\SoftEther VPN Bridge> Get-NetAdapter


Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed

----                      --------------------                    ------- ------       ----------             ---------

區域連線                  PPPoP WAN Adapter                            22 Disconnected 00-00-00-00-00-00          0 bps

乙太網路 4                RD9700 USB2.0 To Fast Ethernet Adapter       21 Disconnected 00-06-03-0F-0A-80       100 Mbps

VMware Network Adapte...1 VMware Virtual Ethernet Adapter for ...      17 Up           00-50-56-C0-00-01       100 Mbps

VPN - VPN Client          VPN Client Adapter - VPN                     15 Disconnected 5E-9E-06-F2-3E-98       100 Mbps

乙太網路                  Realtek Gaming GbE Family Controller         14 Up           B4-2E-99-EE-71-78         1 Gbps

藍牙網路連線              Bluetooth Device (Personal Area Netw...      11 Disconnected 00-1A-7D-DA-71-12         3 Mbps

乙太網路 3                Fortinet Virtual Ethernet Adapter (N...       6 Disconnected 00-09-0F-FE-00-01       100 Mbps

VMware Network Adapte...8 VMware Virtual Ethernet Adapter for ...       4 Up           00-50-56-C0-00-08       100 Mbps




PS C:\Program Files\SoftEther VPN Bridge> Get-NetIPInterface


ifIndex InterfaceAlias                  AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore

------- --------------                  ------------- ------------ --------------- ----     --------------- -----------

4       VMware Network Adapter VMnet8   IPv6                  1500              35 Enabled  Connected       ActiveStore

17      VMware Network Adapter VMnet1   IPv6                  1500              35 Enabled  Connected       ActiveStore

21      乙太網路 4                      IPv6                  1500              35 Disabled Disconnected    ActiveStore

6       乙太網路 3                      IPv6                  1500              35 Disabled Disconnected    ActiveStore

11      藍牙網路連線                    IPv6                  1500              65 Disabled Disconnected    ActiveStore

15      VPN - VPN Client                IPv6                  1500              35 Enabled  Disconnected    ActiveStore

1       Loopback Pseudo-Interface 1     IPv6            4294967295              75 Disabled Connected       ActiveStore

4       VMware Network Adapter VMnet8   IPv4                  1500              35 Disabled Connected       ActiveStore

17      VMware Network Adapter VMnet1   IPv4                  1500              35 Disabled Connected       ActiveStore

21      乙太網路 4                      IPv4                  1500              35 Enabled  Disconnected    ActiveStore

6       乙太網路 3                      IPv4                  1500              35 Enabled  Disconnected    ActiveStore

11      藍牙網路連線                    IPv4                  1500              65 Enabled  Disconnected    ActiveStore

15      VPN - VPN Client                IPv4                  1500              35 Enabled  Disconnected    ActiveStore

14      乙太網路                        IPv4                  1500              25 Enabled  Connected       ActiveStore

1       Loopback Pseudo-Interface 1     IPv4            4294967295              75 Disabled Connected       ActiveStore


PS C:\Program Files\SoftEther VPN Bridge> Get-NetIPInterface -PolicyStore persistentstore


ifIndex InterfaceAlias                  AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore

------- --------------                  ------------- ------------ --------------- ----     --------------- -----------

21      乙太網路 4                      IPv6                                                                Persiste...

15      VPN - VPN Client                IPv6                                                                Persiste...

6       乙太網路 3                      IPv6                                                                Persiste...

7       乙太網路 2                      IPv6                                                                Persiste...

11      藍牙網路連線                    IPv6                                                                Persiste...

4       VMware Network Adapter VMnet8   IPv6                                                                Persiste...

17      VMware Network Adapter VMnet1   IPv6                                                                Persiste...

14      乙太網路                        IPv6                                                                Persiste...

12      乙太網路 (核心偵錯工具)         IPv6                                                                Persiste...

21      乙太網路 4                      IPv4                                                                Persiste...


example:

BridgeCreate vpn /DEVICE:"乙太網路 4" /TAP:no 

VPN Server>bridgelist

BridgeList 命令 - 获得当地网桥连接列表

编号|虚拟 HUB 名称|网络适配器或 tap 设备名称                           |状态

----+-------------+----------------------------------------------------+----

1   |vpn          |Realtek Gaming GbE Family Controller (ID=2635375448)|离线

命令成功完成。


VPN Server>bridge

"bridge": 命令名称是模糊的。

指定的命令名称匹配以下多个命令:

 BridgeCreate     - 创建本地的网桥连接

 BridgeDelete     - 删除本地网桥连接

 BridgeDeviceList - 获取可以在当地的网桥上使用的 LAN 卡一览

 BridgeList       - 获得当地网桥连接列表

请更严格地重新指定命令名称。

VPN Server>bridgedelete

BridgeDelete 命令 - 删除本地网桥连接

删除虚拟网桥 HUB 的名称: vpn


删除网桥的设备名: Realtek Gaming GbE Family Controller (ID=2635375448)


命令成功完成。