tag:blogger.com,1999:blog-40547668932504674562024-03-14T13:53:22.158+08:00Pank's BlogPank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.comBlogger135125tag:blogger.com,1999:blog-4054766893250467456.post-60561904845342273942024-03-14T13:52:00.003+08:002024-03-14T13:52:39.003+08:00DNS negative cache在查詢一個域名時,若當資料不存在,會出現 NXDOMAIN<br />DNS 也會 cache 這個查不到的結果,其預設的 TTL 跟 DNS 及 Zone 的 SOA TTL 有關<br />例如 BIND 的 max-ncache-ttl 預設是 10800 秒<br />當 SOA 中的 TTL 小於 DNS 的 ncache-ttl,會看 SOA 中的 TTL<br /><br />某些情境,需要比較快速查到最新資料,需要縮短這個值,BIND 的 max-ncache-ttl 可以設 0<br />也就是 disable negative cache,遇到 NXDOMAIN 都不 cache<br />這樣設定的話,本來沒設定的域名,設了解析後就可以馬上查到,公用服務的 DNS 不建議這樣設定<br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-1055832706113527112024-02-22T14:13:00.000+08:002024-02-22T14:13:04.853+08:00Install w3m in Rocky LinuxRocky Linux 中安裝 w3m 需要啟用 powertools repo<br />未啟用前安裝會出現此錯誤<br /> - nothing provides perl(NKF) needed by w3m-0.5.3-60.git20230121.el8.x86_64 from epel<br /><br />啟用 powertools repo 指令<br />dnf config-manager --set-enabled powertools<br />dnf -y install w3m<br /><div class="simple-translate-dark-theme" id="simple-translate"><div><div class="simple-translate-button isShow" style="background-image: url("moz-extension://1ee5fcac-8dd8-4fd3-b059-cc14d245f0d4/icons/512.png"); height: 22px; left: -182px; top: -16px; width: 22px;"></div><div class="simple-translate-panel " style="font-size: 13px; height: 200px; left: 0px; top: 0px; width: 300px;"><div class="simple-translate-result-wrapper" style="overflow: hidden;"><div class="simple-translate-move" draggable="true"></div><div class="simple-translate-result-contents"><p class="simple-translate-result" dir="auto"></p><p class="simple-translate-candidate" dir="auto"></p></div></div></div></div></div>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-75920287655850137642024-01-20T02:24:00.010+08:002024-01-20T02:56:24.648+08:00 Han River Running Place 2024 (潭子旱溪大操場) 由於 <a href="https://www.taichung.gov.tw/2437810/post" target="_blank">旱溪西路拓寬</a> (2023-08-31 開放通車),有部份自行車道被犧牲了,破壞了原本一圈 5.7K 的 <a href="https://blog.pank.org/2021/02/han-river-running-place.html" target="_blank">旱溪大操場</a>,<br />
現在旱溪西路從松竹路口往北,過南興北二路一點點,自行車道就沒了,只有 1.2K。<br />
附圖潭興路以北區塊,就是小一點的潭子旱溪大操場,一圈 3.3K。<br />
地圖的右下角綠色起點右側是聚興福德爺廟,有飲水機可以喝水,也有厠所,需過馬路。<br />
<br />
根據台中市政府的公告,會將犧牲掉的自行車道再補回來,期待旱溪大操場早日回歸<br />
「市府觀旅局已將自行車道改道至旱溪東路,目前也積極爭取中央補助計畫,新設自行車道併同人行道整體規劃,<br />
預計建置於旱溪西路堤頂上,透過分階段調整的方式,將原有旱溪西路的道路環境做更完善的規劃。」<br />
<br />
<iframe src="https://www.google.com/maps/d/u/0/embed?mid=1gDGY7BmeEq3jPO80bRfQRUrR2Inp2AY&ehbc=2E312F" width="800" height="600"></iframe>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-84295615237559455302023-12-31T23:34:00.010+08:002023-12-31T23:41:21.926+08:00cstream - stream limit tool<p><a href="https://www.cons.org/cracauer/cstream.html" target="_blank">cstream</a> 通用串流處理工具<br /> 此工具可以將 output 做限流處理,本來在找降低 mysqldump loading 的方案,<br />看到 <a href="https://serverfault.com/questions/94495/how-do-i-backup-a-mysql-database-but-at-low-priority " target="_blank">這篇</a> 回文,裡面提到將 mysqldump pipe 給 cstream 限速。<br />實測的確有效,大幅降低 mysqldump 期間對服務效能造成的影響<br /><br />另一個應用範例: 下載限速 1MB/s<br />curl https://osk-jp-ping.vultr.com/vultr.com.100MB.bin | cstream -t 1048576 > output<br />當然,curl 本身就有限速參數,上面經由 cstream 限速的語法效果跟下面這句相同<br />curl --limit-rate 1048576 https://osk-jp-ping.vultr.com/vultr.com.100MB.bin > output<br /></p>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-65234587377501127802023-12-31T21:29:00.000+08:002023-12-31T21:29:10.396+08:00Get IP addresses by ASN<p>whois -h whois.radb.net -i origin AS15169 | grep ^route<br /> <br />result<br />route: IPv4 network segment<br />route6: IPv6 network segment</p>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-41025922127846801092023-11-17T10:55:00.002+08:002023-11-17T10:55:14.223+08:00Fix Unable to detect release version (use '--releasever' to specify release version)rpm -ivh https://mirror01.idc.hinet.net/CentOS/8-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-6.el8.noarch.rpm<br />rpm -ivh https://mirror01.idc.hinet.net/CentOS/8-stream/BaseOS/x86_64/os/Packages/centos-stream-repos-8-6.el8.noarch.rpm<br />rpm -ivh https://mirror01.idc.hinet.net/CentOS/8-stream/BaseOS/x86_64/os/Packages/centos-stream-release-8.6-1.el8.noarch.rpm<br /><br />會遇到這個問題是在 migrate to Rocky Linux 時中斷造成<br />再次執行 <a href="https://docs.rockylinux.org/guides/migrate2rocky/">migrate2rocky.sh</a> 腳本會出現錯誤<br /><br />Found a full or partial RockyLinux install already in place. Aborting<br />because continuing with the migration could cause further damage to system.<br /><br />修改 migrate2rocky.sh 把出現上面訊息的 if 那一段拿掉,上面的 rpm 補完,再執行一次就可以了<br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-91622464481626689962023-11-02T11:25:00.001+08:002023-11-02T11:25:15.614+08:00SSH via ShadowsocksLocal address: 127.0.0.1<br />Local port: 1080<br />Server IP: 12.34.56.78<br /> <br />~/.ssh/config 加入 <br /><br />Host *<br /><div style="margin-left: 40px; text-align: left;"> ProxyCommand connect-proxy -S 127.0.0.1:1080 %h %p<br /></div><br />若要 ssh 到 Server IP,改用 ssh 127.0.0.1<br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-33176622955624734012023-09-08T13:46:00.001+08:002023-09-08T13:46:03.799+08:00Fix Ubuntu NO_PUBKEY B53DC80D13EDEF05Google Cloud package update failed<br /><br />curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -<br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-82446089252349766542023-08-10T23:29:00.001+08:002023-08-10T23:49:12.072+08:00HAProxy Reverse Proxy with SSL憑證掛在 Reverse Proxy, 內部走 HTTP<br /><br />frontend http-in<br /><div style="margin-left: 40px; text-align: left;"> mode http<br /> bind *:80<br /> bind *:443 ssl crt /etc/haproxy/pank.org-crt-chain-key.pem<br /> use_backend %[req.hdr(Host),lower]<br /></div><br />backend test1.pank.org<br /><div style="margin-left: 40px; text-align: left;"> balance first<br /> mode http<br /> option forwardfor except 127.0.0.0/8<br /> server web-1 192.168.0.27:80<br /></div><br />backend test2.pank.org<br /><div style="margin-left: 40px; text-align: left;"> balance first<br /> mode http<br /> option forwardfor except 127.0.0.0/8<br /> server web-2 192.168.0.42:80<br /></div><br />test1.pank.org 及 test2.pank.org 使用同一個 wildcard 憑證,<br />crt 是 crt+chain+key 放同一個檔 <br />若兩個站的憑證不同,可以用 crt-list 指定多個憑證<br />例: bind *:443 ssl crt-list /etc/haproxy/crt-list.txt<br /> crt-list.txt 的內容<br />/etc/haproxy/domain1.com-crt-chain-key.pem<br />/etc/haproxy/domain2.com-crt-chain-key.pem<br />有設定 option forwardfor 會帶 X-Forwarded-For 到 backend serverPank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-32587451390847868012023-08-09T01:39:00.009+08:002023-08-10T23:51:02.700+08:00NGINX Reverse Proxy with SSL憑證掛在 Reverse Proxy, 內部走 HTTP<br /><br />/etc/nginx/conf.d/test1.conf<br /><br /> server {<br /><div style="margin-left: 40px; text-align: left;"> listen 443 ssl;<br /> server_name test1.pank.org;<br /> ssl_certificate /etc/nginx/conf.d/pank.org-crt-chain.pem;<br /> ssl_certificate_key /etc/nginx/conf.d/pank.org-key.pem;<br /> ssl_protocols TLSv1 TLSv1.1 TLSv1.2;<br /> ssl_ciphers HIGH:!aNULL:!MD5;<br /> location / {<br /></div><div style="margin-left: 40px; text-align: left;"><div style="margin-left: 40px; text-align: left;"> add_header X-Proxy-Cache $upstream_cache_status;<br /> proxy_pass http://192.168.0.27;<br /> proxy_set_header Host $host;<br /> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br /></div></div><div style="margin-left: 40px; text-align: left;"> }<br /></div>}<br /><br />若後端有多台,建立多個 conf 即可<br />有設定 proxy_set_header X-Forwarded-For 會帶 X-Forwarded-For 到 backend server<br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-2792514154345491702023-08-09T01:09:00.003+08:002023-08-10T23:54:43.899+08:00Apache Reverse Proxy with SSL憑證掛在 Reverse Proxy, 內部走 HTTP <br /><br /><VirtualHost *:443><br /><div style="margin-left: 40px; text-align: left;">ServerName test1.pank.org<br />ServerAdmin pank@pank.org<br />ErrorLog "/var/log/httpd/test1_error_log"<br />TransferLog "/var/log/httpd/test1_access_log"<br />SSLEngine on<br />ProxyPass / http://192.168.0.27/<br />ProxyPassReverse / http://192.168.0.27/<br />SSLProtocol all -SSLv2<br />SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5<br />SSLCertificateFile "/etc/httpd/conf.d/pank.org-crt.pem"<br />SSLCertificateKeyFile "/etc/httpd/conf.d/pank.org-key.pem"<br />SSLCertificateChainFile /etc/httpd/conf.d/chain.pem<br /></div></VirtualHost><br /><br />若後端有多台,建立多個 VirtualHost 區塊即可<br />Apache 預設就會帶 X-Forwarded-For 到 backend server,不用特別設定<br /><br /> Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-18438932673537538382023-08-03T22:43:00.009+08:002023-08-03T22:46:02.781+08:00yt-dlp - youtube-dl replacementyoutube-dl 之前是一個好用的視頻下載工具,但在 2020 年 10 月,被 RIAA 要求下架,<br />Github 也關閉了它及其他 fork 的專案<br />但在很多使用者抱怨下,2020 年 11 月 Github 恢復了 youtube-dl 的專案,<br />但是近來都沒更新了,最後更新日期是 2021 年 12 月<br /><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a> 是 youtube-dl 的 fork,仍常常更新,可視為 youtube-dl 的替代品<br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-45942535545384549862023-07-03T00:00:00.004+08:002023-07-03T00:00:27.840+08:00Simple traffic shapping with iptables使用 iptables 限速<br /><br />範例: Linux Gateway, 區網的網段是 192.168.0.0/24<br />要限制每個 IP 都有上傳下載 16M/16M bps<br /><br />iptables -A FORWARD -d 192.168.0.0/24 -m hashlimit --hashlimit-name ratelimitin --hashlimit-mode dstip --hashlimit-above 2048kb/s -j DROP<br />iptables -A FORWARD -s 192.168.0.0/24 -m hashlimit --hashlimit-name ratelimitin --hashlimit-mode srcip --hashlimit-above 2048kb/s -j DROP<br /> Rule 要分兩個方向來下,兩這條分別是下載及上傳<br />16M bps = 16384 k bps = 2048 kb/s<br /><br />實測結果還算準<br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-69436305073318550092023-06-27T14:12:00.004+08:002023-06-27T14:14:36.181+08:00Get Public IP Address from OpenDNS一般取得所在 Public IP 都是用 Web 服務取得,例如:<br />curl ip4.tw<br />curl ifconfig.co<br /><br />OpenDNS 有提供一個服務,對他們的 name server 查 myip.opendns.com 會回應來源 IP<br />dig +short myip.opendns.com @resolver1.opendns.com<br />host myip.opendns.com resolver1.opendns.com<br /><br />發現若環境同時有 IPv4+IPv6 可能會不正常,因為兩個 IP 都有的話,通常會走 IPv6 的路由,用 IPv6 路由去查 A 記錄導致無資料<br /><br />保險一點,指令要區分 IPv4、IPv6<br />dig -4 +short A myip.opendns.com @resolver1.opendns.com<br />dig -6 +short AAAA myip.opendns.com @resolver1.opendns.com<br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-61253518788819968772023-06-18T23:58:00.010+08:002023-06-19T00:25:27.491+08:00Import Rocky Linux 9 to WSL需先安裝 <a href="https://sourceforge.net/projects/xz-for-windows/" target="_blank">XZ Utils for Windows</a> 把 xz.exe 放在 PATH 有指到的地方<br /><br />curl -LOs https://github.com/rocky-linux/sig-cloud-instance-images/raw/Rocky-9.2.20230513-Base-x86_64/layer.tar.xz<br />上面的 layer.tar.xz 是官方的網址,其他版本網址可到 <a href="https://github.com/rocky-linux/sig-cloud-instance-images" target="_blank">sig-cloud-instance-images</a> 選擇 Branch<br />xz -d layer.tar.xz<br /> wsl --import RockyLinux9 D:\WSL\RockyLinux9 layer.tar<br />Distro 名稱 RockyLinux9 及資料目錄名稱 D:\WSL\RockyLinux9 請依自身環境調整<br />wsl -d RockyLinux9<br />即完成進入 RockyLinux9 WSL<br /><br />ref. <a href="https://learn.microsoft.com/en-us/windows/wsl/use-custom-distro#import-the-tar-file-into-wsl" target="_blank">Import any Linux distribution to use with WSL</a><p></p>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-87221951806012971092023-05-20T02:00:00.005+08:002023-05-20T02:29:59.463+08:00Migrate Google Compute Engine VM image to local想要把 Google Compute Engine VM 備份,或者 clone 一份到 local 做測試<br />先關機建立映像檔,再把映像檔匯出到 Bucket (可以選擇匯出格式 vmdk、vhdx 等),然後就可以下載<br /> 但會發現在自己的環境無法開機,看起來是找不到 root<br /><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIuEQvRc4YOP2VaCNqdcwpmHyNEA3x4oGaKfK0wXim-YihS8C4retGGh1FTviIHlI9ub6m6tap4-ubc13dYqbz3_VMskVDp4NCXDqzkptA_zgUjdznxJVU0Up0ZT-vNcQKfndeYmlMfdecxVh09rhFyDKmI2c3eGWaWyGaxfNhAGB3iovK3Y-N42dh/s634/emergency_mode.png"><img border="0" height="396" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIuEQvRc4YOP2VaCNqdcwpmHyNEA3x4oGaKfK0wXim-YihS8C4retGGh1FTviIHlI9ub6m6tap4-ubc13dYqbz3_VMskVDp4NCXDqzkptA_zgUjdznxJVU0Up0ZT-vNcQKfndeYmlMfdecxVh09rhFyDKmI2c3eGWaWyGaxfNhAGB3iovK3Y-N42dh/w632-h396/emergency_mode.png" width="632" /></a><br /><br />解決方式必需重建 initramfs<br />但因為找不到 root,在這個 emergency mode 無法做這個動作 (dracut -f)<br />需要找對應的版本的 ISO 來開機,由於系統內可能沒有跟 ISO 內一樣版號的 /lib/modules<br />最簡單的方式就是裝 ISO 內的 Kernel,流程上一樣會建立 initramfs<br /><br />以下以 CentOS 7.9 為例:<br />以光碟開機進入 Rescue 模式後,選 1<br />chroot /mnt/sysimage<br />mount /dev/cdrom /mnt<br />cd /mnt/Packages<br />rpm -ivh kernel-3.10.0-1160.el7.x86_64.rpm<br />exit<br />reboot<br />應該就可以正常開機了<br /><br />備註:<br />一開始畫面出現這個<br />Probing EDD (edd=off to disable)... ok<br />其實跟開不了機無關,不影響是否可以正常開機<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC1qBqd07OR5s3S1cBytIbTIbRJ_Uecy2_5ks7V6IKqgakA_msITnEonLhrB5q63P-fS5cy0-orlo4o-BIxXTgSvNd7y4m2KVTpD_g6UpQo4fVLoPau4tYM3XV1WIK1PIEK-dclO2Dr41QbyU_qFZK1aoOaYNuJ2zCzr3TpTS0X_CgFZN4mYf78tw_/s634/probing_edd.png"><img border="0" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC1qBqd07OR5s3S1cBytIbTIbRJ_Uecy2_5ks7V6IKqgakA_msITnEonLhrB5q63P-fS5cy0-orlo4o-BIxXTgSvNd7y4m2KVTpD_g6UpQo4fVLoPau4tYM3XV1WIK1PIEK-dclO2Dr41QbyU_qFZK1aoOaYNuJ2zCzr3TpTS0X_CgFZN4mYf78tw_/w632-h205/probing_edd.png" width="632" /></a><br /><br /></p>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-12606971058022239832023-05-05T16:14:00.004+08:002023-05-05T16:15:03.386+08:00Allow CloudFront edge server only服務有導入 CloudFront 的話,限制只有 CloudFront edge server 來存取會較安全<br /><br /> JSON 資料格式<br /><a href="https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips">https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips</a><br /> <br />ref. <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html" target="_blank">Locations and IP address ranges of CloudFront edge servers</a><br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-66692557562560226582023-04-25T00:09:00.009+08:002023-04-25T23:17:35.907+08:00Amazon Linux 2可以把 Amazon Linux 2裝在自己的 VM 上<br /><a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-2-virtual-machine.html">Run Amazon Linux 2 as a virtual machine on premises</a><br /> <br /> 要自訂帳密需自行建立 seed.iso,然後掛到光碟上,<br />seed.iso 內容只有兩個檔,meta-data 及 user-data<br />懶得自己建也可以用預設的 <a href="https://cdn.amazonlinux.com/os-images/latest/seed.iso">seed.iso</a><br /><br />預設有四個帳號 user1, user2, user3, ec2-user<br />其中帳號 user1 及 ec2-user 可以用預設密碼 amazon 登入<br />user2 要設定 hashed passwd, 沒設定是無法登入<br />user3 是用 SSH key 登入<br />使用預設的 seed.iso 第一次開完最好把預設的 user 都刪除<br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-63939675695760962872023-03-29T11:26:00.006+08:002023-03-29T11:26:59.787+08:00Bash built-in case modificationBASH 有內建大小寫轉換功能,執行效率會比使用 tr, sed, awk 好<br /><br />$ A=ABCdef<br /><br /># To upper case<br />$ echo ${A^^} <br />ABCDEF<br /><br /># To lower case<br />$ echo ${A,,}<br />abcdef<br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-8848853880020553922023-03-23T23:16:00.004+08:002023-03-23T23:16:52.965+08:00ifup and ifdown equivalent nmcli commandifup eth0 = nmcli con up eth0<br />ifdown eth0 = nmcli con down eth0<br /><br />ifup, ifdown command still available in NetworkManager-initscripts-updown package<br />dnf -y install NetworkManager-initscripts-updown<br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-75957734233044139022023-03-12T21:10:00.004+08:002023-03-12T21:13:00.979+08:00解決 Windows 工作排程器 錯誤訊息: 已回報下列錯誤: 工作定義使用了過時的功能Windows不曉得何時拿掉了工作排程顯示訊息的功能,但還是能設定,後面括號(已過時)<br />最後會出現如下的畫面。<br />奇怪,不能設定為何不拿掉設定選項?<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPcqTh_HUMnXau3yJOzKvCqsAYNe_E8xQ7XCYDk2DkNivnabASJYfU0Fw48QzvYFpYHD-m0LQnS4CgWDzG6A0v6nOCuIOFCIKKk7mPO4X9tQtElQ4L0_Rvtf0sNMGqvGAppFvplcvOqNkhI5C0qolRclVdF9WT-1CCdYwVzxR8vW8GCMwfZEsLsiev/s868/snap96.png"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPcqTh_HUMnXau3yJOzKvCqsAYNe_E8xQ7XCYDk2DkNivnabASJYfU0Fw48QzvYFpYHD-m0LQnS4CgWDzG6A0v6nOCuIOFCIKKk7mPO4X9tQtElQ4L0_Rvtf0sNMGqvGAppFvplcvOqNkhI5C0qolRclVdF9WT-1CCdYwVzxR8vW8GCMwfZEsLsiev/w637-h207/snap96.png" /></a><br /> <br />替代方式是用執行程式 msg<br />新增引數輸入 * 要顯示的訊息<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxZxIku2WhljyHZQQgTOOMsmGruidDaQWVlRHLAEYT2sQ4uPStm_P3mJZ4jmGe9UW1NeAu0WUmk4ThN0utt3IaKHhROI8GrDnhgLK5nIN7Y_7wxTYvg0kCSoKGflmvNG9M6HcWktY8cbHLO3S5hRSQPeuKV_TM7mtA-jt1zKs1ZE3dRTZ5iyC56uI/s1392/snap97.png"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxZxIku2WhljyHZQQgTOOMsmGruidDaQWVlRHLAEYT2sQ4uPStm_P3mJZ4jmGe9UW1NeAu0WUmk4ThN0utt3IaKHhROI8GrDnhgLK5nIN7Y_7wxTYvg0kCSoKGflmvNG9M6HcWktY8cbHLO3S5hRSQPeuKV_TM7mtA-jt1zKs1ZE3dRTZ5iyC56uI/w629-h468/snap97.png" /></a><br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-22185192393975215282023-02-15T15:56:00.001+08:002023-02-15T15:56:33.806+08:00json diff<p>diff <(jq -S . file1.json) <(jq -S . file2.json)<br /><br /></p>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-83652495354485150222023-01-15T22:09:00.001+08:002023-01-15T22:09:31.780+08:00Detect iPhone by Port 62078<p>現在手機預設都有開 Random MAC Address 的功能,也就是無法用 MAC 來判斷是那一家廠商<br />iPhone 手機有一個固定會 Listen 的 Port 62078,若 Scan 這個 Port 有回應,可以判斷這個 Device 可能是 iPhone<br />Android 則沒有固定會 Listen 的 Port<br /></p>Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-54902107468649134352023-01-09T20:03:00.003+08:002023-01-09T20:03:16.534+08:00Using iperf3 to test uload and downloadServer side<br />iperf3 -s<br /><br />Client side<br />iperf3 -c server_host -b 10M -t 60 -P 5 # Test upload<br />iperf3 -c server_host -b 10M -t 60 -P 5 -R # Test download<br />頻寬 10M,測試時間 60 秒,使用 5 個平行連線<br />iperf3 只能一個 Client 對一個 Server<br />若要多個 Client 對同一台 Server,Server 端需執行多個 iperf3 用不同的 Port 切開<br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0tag:blogger.com,1999:blog-4054766893250467456.post-42730268711013269462023-01-06T13:33:00.000+08:002023-01-06T13:33:00.802+08:00Detect if a VM is running in Google Compute Engine<a href="https://cloud.google.com/compute/docs/instances/detect-compute-engine" target="_blank">Detect if a VM is running in Compute Engine</a><br /> <br />sudo dmidecode -s system-product-name | grep "Google Compute Engine" <br /> 這個需要 root 權限,實際上是去讀取 /sys/firmware/dmi/tables/DMI<br />用 strings /sys/firmware/dmi/tables/DMI | grep "Google Compute Engine" 也行<br /><br /> 若程式沒有 root 權限,可以去讀取 /etc/hosts 有沒有包含 Added by Google 字樣<br />grep "Added by Google" /etc/hosts<br /><br />Pank's Bloghttp://www.blogger.com/profile/02555397002423852004noreply@blogger.com0