終端機快速複製檔案內容到剪貼簿

資料來源:How to copy and paste within a terminal in macOS or Linux?

在 MacOS 下,可以用 pbcopy/pbpaste

cat file.txt | pbcopy
pbpaste | tee foo.txt

在 Linux 下,要用 xsel,主要是參數 –input 跟 –output

# 複製到剪貼簿
cat file.txt | xsel --clipboard --input
xsel --clipboard --output | tee foo.txt

若要讓指令一致,可以用 alias

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

如何使用podman volume掛載nfs分享

資料來源:Mount an NFS Share Using a Rootful Podman Volume (oracle.com)

在建立 volume 時,就可以指定 nfs 的資訊

sudo podman volume create --opt type=nfs --opt o=rw --opt device=10.0.0.150:/nfs-share nfsvol

在建立完成後,podman 會去掛載 nfs 分享,這部份可以使用 mount 查看到掛載到哪個資料夾。接下來 podman 就可以使用 -v 參數,去指定要使用剛剛建立的 volume ,容器啟動後,就可以使用了。

例如

sudo podman run -v nfsvol:/foo -it --rm oraclelinux:9 ls -al /foo

這就表示把建立好的 nfsvol ,掛載到容器裡面的 /foo ,應用程式就可以存取到了。

網站是用wordpress做的嗎?

最近在幫朋友找 wordpress 佈景主題,所以在找是不是有工具可以分析網站,取得資訊。

結果就找到這篇:How to Discover Which WordPress Theme a Site is Using – GreenGeeks

這篇文章介紹了四個方法,其中一個方法是借助 IsItWP 這個網站。這個網站除了可以偵測網站是否用 wordpress 做的之外,也可以分析裡面用到的 plugin 或是 theme,真的是很方便。

其他兩個網站分別是

使用方法都很簡單,貼上要分析的網址就可以了。

最後一個萬不得已的方法就是看網頁原始碼了。

用trivy掃描KBOM

KBOM = Kubernetes Bills Of Material,就是 Kubernetes 的物料清單。

trivy 是由 Aqua Security 所開發的一個掃描工具,現在支援了 KBOM,可以依據 Kubernetes 務料清單裡的軟體來進行掃描,並產出報告。

安裝可以從 https://github.com/aquasecurity/trivy 來下載安裝,有提供以下方式

  • Container image
  • Debian package
  • RPM package
  • Homebrew

安裝好以後,就可以使用了。

那要掃描 KBOM ,要先產出 kbom.json,用以下指令就可以產出。這邊要注意,執行 trivy 的電腦上必須已經放置 ~/.kube/config ,這樣 trivy 才能存取到 k8s cluster。

trivy k8s cluster --format cyclonedx --output kbom.json

有了 kbom.json 以後,就可以用以下指令產出報告

trivy sbom kbom.json

我的 k8s 報告如下

2024-02-18T15:29:26.693+0800	INFO	Vulnerability scanning is enabled
2024-02-18T15:29:26.694+0800	INFO	Detected SBOM format: cyclonedx-json
2024-02-18T15:29:26.720+0800	WARN	No OS package is detected. Make sure you haven't deleted any files that contain information about the installed packages.
2024-02-18T15:29:26.721+0800	WARN	e.g. files under "/lib/apk/db/", "/var/lib/dpkg/" and "/var/lib/rpm"
2024-02-18T15:29:26.721+0800	INFO	Detected OS: ubuntu
2024-02-18T15:29:26.721+0800	WARN	This OS version is not on the EOL list: ubuntu 22.04.3
2024-02-18T15:29:26.721+0800	INFO	Detecting Ubuntu vulnerabilities...
2024-02-18T15:29:26.721+0800	INFO	Number of language-specific files: 3
2024-02-18T15:29:26.722+0800	INFO	Detecting kubernetes vulnerabilities...
2024-02-18T15:29:26.728+0800	INFO	Detecting gobinary vulnerabilities...

kbom.json (ubuntu 22.04.3)

Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)


 (gobinary)

Total: 3 (UNKNOWN: 0, LOW: 0, MEDIUM: 3, HIGH: 0, CRITICAL: 0)

┌──────────────────────────────────┬─────────────────────┬──────────┬────────┬───────────────────┬────────────────┬──────────────────────────────────────────────────────────┐
│             Library              │    Vulnerability    │ Severity │ Status │ Installed Version │ Fixed Version  │                          Title                           │
├──────────────────────────────────┼─────────────────────┼──────────┼────────┼───────────────────┼────────────────┼──────────────────────────────────────────────────────────┤
│ github.com/containerd/containerd │ CVE-2023-25153      │ MEDIUM   │ fixed  │ 1.6.15            │ 1.5.18, 1.6.18 │ containerd: OCI image importer memory exhaustion         │
│                                  │                     │          │        │                   │                │ https://avd.aquasec.com/nvd/cve-2023-25153               │
│                                  ├─────────────────────┤          │        │                   │                ├──────────────────────────────────────────────────────────┤
│                                  │ CVE-2023-25173      │          │        │                   │                │ containerd: Supplementary groups are not set up properly │
│                                  │                     │          │        │                   │                │ https://avd.aquasec.com/nvd/cve-2023-25173               │
│                                  ├─────────────────────┤          │        │                   ├────────────────┼──────────────────────────────────────────────────────────┤
│                                  │ GHSA-7ww5-4wqc-m92c │          │        │                   │ 1.6.26, 1.7.11 │ containerd allows RAPL to be accessible to a container   │
│                                  │                     │          │        │                   │                │ https://github.com/advisories/GHSA-7ww5-4wqc-m92c        │
└──────────────────────────────────┴─────────────────────┴──────────┴────────┴───────────────────┴────────────────┴──────────────────────────────────────────────────────────┘

從報告可以看出軟體元件的版本跟漏洞報告。

如果不產出 kbom.json ,也可以用另外一個方式掃描

trivy k8s cluster --scanners vuln --report summary

不過這指令在我的 k8s cluster,會有問題,我猜想是我 k8s cluster 不夠力的關係,就先這樣吧。

trivy 也有 operator 可以安裝,有機會再來看看怎麼使用。

參考資料

sitespeed.io 取得網站效能

來源:https://www.sitespeed.io/

專案已經提供了用容器啟動的方式,所以蠻容易的

docker run --rm -v "$(pwd):/sitespeed.io" sitespeedio/sitespeed.io:32.2.0 https://www.sitespeed.io/

執行完成後,會在當前目錄產生 sitespeed-result 目錄,目錄裡就有你需要的效能報告。

有需要撰寫自訂腳本測試的,可以參考 https://www.sitespeed.io/documentation/sitespeed.io/scripting/

效能報告以網頁呈現,用瀏覽器就可以開啟。

如何檢查GitOps Manifests

Kubernetes 主要會用這幾種檔案格式:

  1. YAML
  2. Kustomize
  3. Helm Chart

在使用前,是否可以檢查呢?以下就分別來介紹

YAMLint

YAML 可以使用 yamllint 來檢查,在 RHEL9 裡可以直接安裝 yamllint 。

sudo yum install yamllint

用以下指令檢查

yamllint service.yml

可以使用 -f 來指定輸出格式。

Kustomize

kustomize 可以用 kustomize build 來檢查。

kustomize build path/to/folder

Red Hat 有寫一個輔助腳本:validate_manifest.sh

Helm

helm 本身有提供 subcommand 來檢查:helm lint

helm lint Chart.yaml

參考資料

電影流水帳(2023/05/01~2023/12/31)

Jennifer Connelly
Jennifer Connelly

一次寫完。2023年共看了21部電影。

Top Gun: Maverick

下檔以後,沒多久 HBO 就上映了,而且還重播了好幾次。

Maverick 回來當教官,帶著一群年輕人訓練,後來一起出了任務。訓練的過程裡,因為有個學員是上一集已故同伴的兒子,所以故事有帶到這個心結。後來在出任務以後,順理成章的解了這個心結,也順利完成任務。

飛行畫面真的屌,珍妮佛·康納莉跟莫妮卡·巴巴羅真的漂亮。後來也因為莫妮卡·巴巴羅的關係,看了她跟阿諾爺爺一起演的 FUBAR 。

Wall-E

之前一直都沒完整看過,想說來完整看過一遍。

Wall-E 是個清理機器人,持續在清理地球。清理地球的原因是因為地球被污染得很嚴重,人類搭乘太空船出去旅行,就留下機器人持續的在運作。Wall-E 維持著規律的生活,很好的照顧著自己 (這是不是在告訴我們要維持規律生活、正常飲食,來好好照顧自己呢?) 。

某天,外出的太空船派出 Eve 探索機器人回地球探索,Wall-E 看到 Eve ,就愛上了 Eve。Eve 發現了植物,將植物帶回,Wall-E 也跟著回去,回到了太空船。

原本依照前人留下的指示,如果探索機器人在地球發現植物,那麼就表示太空船可以回到地球了。可是太空船的電腦卻因為之前的另外一道命令,決定要抹滅有植物這件事情,所以就展開了一場植物爭奪戰。雖然太空船電腦想隱瞞,但船長還是得知了這件事情,也做出了決定,要回到地球。最終,船長順利的處理了太空船電腦,複寫了原本的指令,要回去地球,可是 Wall-E 的電路板損壞了。Eve 知道 Wall-E 在地球有留下備料,所以在太空船回到地球以後,趕緊找出零件替換上去。Wall-E 在換上零件以後,就回復運作了,但卻沒有之前的記憶,Eve 很難過。可是在 Eve 碰觸 Wall-E 以後,Wall-E 回想起了之前的一切,想起他喜愛的 Eve,有了一個美好的結局。

Boss Level

很有趣的題材,因為第四台重播的關係,我看了兩三次才完整看完。

女主角在為一家公司研發一種可以逆轉時間的技術,但他發現主管居心叵測,怕技術被濫用,所以就把這技術用在她前夫身上。

她前夫開始莫名其妙的被殺掉,然後回到起床的時間點,一直重複。他慢慢克服被殺,或者說躲掉被殺,推進到後面的時間,才了解事情的原委。在了解原因之後,他救回了前妻,然後避免了這技術被該公司主管使用。最後皆大歡喜。

Polar

一個要退休的殺手,因為公司不想付龐大的退休金給殺手,因而起了壞心,想把他滅口,這樣就不用付錢了。哪知道,這殺手太厲害,反倒把來殺他的殺手都幹掉了。最後殺手退休,終於能過平靜的日子。

급 공무원

我的特務女友,這片我忘記劇情了,印象中是一部歡樂的動作片。

看了維基百科,大致想起來了。女主角是情報員,因為某些原因離開了兩情相悅的男友。三年後,再度遇到一起,這男主角(或女主角)一直以為自己是被甩,所以相互有芥蒂。直到因為發現彼此都不尋常,才知道都是情報員。最後就聯手順利解決案件,一個歡樂的結局。

Bullet Train

這是發生在火車上的故事,一群殺手相互因為各自的原因,一起廝殺,蠻陰錯陽差的。這部電影蠻好看的,動作跟劇情都蠻不錯的,最後也算是好結局,該留下的人留下了。

Ant-Man and the Wasp: Quantumania

蟻人3,太多特效了,少了前兩集放大縮小的樂趣,很可惜。

故事大致是黃蜂女媽媽隱藏了量子領域的一些事情,而蟻人的女兒進到量子領域,大夥一起進去救她,卻發現了量子領域被征服者康征服的事情,然後跟裡面的反抗軍聯手打倒征服者康。

千と千尋の神隠し

看了不下數十次,這部電影是我跟太太在婚前一起到長春戲院看的第一部宮崎駿電影。天啊,都 20 幾年前的事情了。

ハウルの動く城

霍爾的移動城堡,記得這部也是進電影院看的,對城堡那個門特別有印象,切換以後,開個門就是一個新天地,實在是很方便。再來就是女主角在被咒語變老之後,會因為心境跟當時情況的不同,時而年輕,時而變為年老,這點也很有趣。這點暗示了境由心生,你自己決定了你自己的年紀、你自己的心情,不要因為外在而持續的感到沮喪跟無力。

紅の豚

一個神秘卻有豬頭的飛行員,非常厲害。故事是講他因為飛機被擊落,然後去找人幫忙做了新飛機,在這過程認識了可愛、富有活力的女機師,因而被吸引。

作飛機的這段讓人印象深刻,因為作飛機需要人力,在戰亂的時代,男人都出外打仗,只剩下女人,所以作飛機都是女人來幫手。

還有一段也有很有趣,就是小朋友校外旅行,飛機被迫降落,然後其實很善良的海賊們就載著這群小朋友回家,真的很可愛。

The Flash

DC 宇宙裡知名的事件,閃點。之前在動畫裡看過了,所以大概知道劇情。簡單的說,就是閃電俠因為遺憾,想回到過去救自己老媽,結果卻導致時間錯亂。

這故事很容易可以讓人帶入同理心,因為人都會有懊悔、想改變過去的那種感覺。

這部電影算是蠻忠實地呈現,也因為這樣的故事,很容易可以跟其他部電影作連結,因為時間錯亂了,人物跟故事線是可以隨意找的。

故事本身就好看,電影也拍的不錯,唯一的缺點大概就是特效吧,我覺得是瑕不掩瑜啦。

電影流水帳(2023/04/01~2023/04/30)

a woman in a pink bodysuit posing for a picture, tumblr, magic realism, leeloo, nadezhda tikhomirova,  wes anderson
  • The Swan(IMDB, Wikipedia),台譯:天鵝之翼。
  • The Rat Catcher (IMDB, Wikipedia),台譯:殺鼠之鼠。
  • The Wonderful Story of Henry Sugar (IMDB, Wikipedia),台譯:亨利。休格的神奇故事。
  • Poison (IMDB, Wikipedia),台譯:心腹之毒。

先說一下,這四部短片並不是在4月的時候看的唷,但不管了,就先這樣吧。

說真的,當初在 Netflix 上看到「亨利。休格的神奇故事」時,沒有很想看。但後來看到有人介紹說這是短片,想說才幾分鐘,可以來看看。想不到一看之下,根本就無法自拔,想要一次看完。故事的表現採用話劇、舞台劇的形式來演出,和一般的電影不一樣,很有意思。

The Wonderful Story of Henry Sugar

這個是講亨利。休格去練習一種技術,讓他可以打牌賺大錢的技術,花了許多時間練習,然後成功。只是到了最後他發現自己學會的這項技術應該要幫助更多的人,所以就把用這技術賺到的錢都捐出去。

The Rat Catcher

這故事是講殺鼠人的故事,殺鼠人對老鼠非常熟悉,只是這次出馬卻沒能殺死老鼠,他非常惱怒。為了證明自己,他示範不用手跟腳殺掉老鼠,但後來很冏的逃離了。

The Swan

這故事有點哀傷,一個小男孩被兩個大孩子欺負,躲到了樹上。兩個大孩子在樹下等,並用言語逼迫他,後來小男孩變成天鵝飛走了。

Poison

一個躺在床上的人,以為毒蛇在自己身上,不敢亂動,就打了電話請人來幫忙。這人來看了以後,又找了醫生來幫忙。結果,根本沒有蛇,真的是虛驚一場。

為 yum repository 指定 proxy

要設定讓 yum 可以使用指定的 proxy 伺服器,可以在 /etc/yum.conf 的 [main] 區段裡增加 proxy 設定即可

[main]
proxy=http://<proxy_server>:3128

那如果是個別的 repository 要使用不同的 proxy 伺服器,可以怎麼做呢?
原本以為會很麻煩的,但意想不到簡單,因為有支援此設定。
就在 repository 的區段裡增加 proxy 設定就可以:

[repo]
name=baseos
baseurl=http://yumrepo.example.com/baseos
enabled=1
gpgcheck=0
proxy=http://<proxy_server>:3128

參考資料

bash script取亂數

在 bash script 裡,可以用 ${RANDOM} 取亂數,例如

echo "random number: ${RANDOM}"

就會出現一個隨機的數字。

那如果想限制在 20~40 這個範圍內的話,可以怎麼做呢?這時候可以用 bash 的 % ,取餘數的運算子來做,例如

echo "random number(0~10): $((20 + RANDOM % 20))"

參考資料