Shell Script

Shell CLI 達成 HMAC SHA256 加密

科技進步是來自於偷懶,前陣子小編剛好有投資點加密貨幣,但某些固定的操作讓人心煩。就寫了個小shell腳本自動進行買賣還有交易。但中間OKX(過去原名OKEX)API 腳本中有一段需要將產生ACCESS SIGN才能操做,苦惱了我一陣子。因為網路上寫python特別多,找到 shell 相關腳本的相較少。

Shell CLI 達成 HMAC SHA256 加密 閱讀全文 »

Raspberry PI PPPoE 撥號完成後自動更新 Google 動態 DNS

網域在 Google domains 上購買有提供 DNS 代管服務,本網站的主機是使用樹梅派架設 LEMP,對外中華電信光纖上網只有一個固定IP,使用浮動IP來對外服務每72小時就會中斷一次。

要確保網站可以提供長期服務,當偵測到IP有所變化就會自動更新主機位置給 Google 的動態 DNS,讓全世界的人都可以正確地連入 Server 。

Raspberry PI PPPoE 撥號完成後自動更新 Google 動態 DNS 閱讀全文 »

SC2129 當多行重新定向寫入文件時考慮使用{cmd1; cmd2; } >>文件,而不是單行寫入。

有問題的代碼:

echo foo >> file 
date >> file 
cat stuff  >> file

正確的代碼:

{
echo foo
date
cat stuff
} >> file

理由:

用 {} 把所有要重新定向的內容進行分組,一次性的導入 “>> file” 文件中,此寫法有兩點優勢。
第一讓代碼更簡化不用每行添加 “>> file” 進行寫入文件,第二文件只需打開及關閉一次,這代表的執行性能被提高了。

例外情況:

此問題僅僅是寫作風格的不同,需要忽略此提示也可以。

參考來源:

SC2129 當多行重新定向寫入文件時考慮使用{cmd1; cmd2; } >>文件,而不是單行寫入。 閱讀全文 »

SC2126 建議使用 grep -c代替 grep | wc

錯誤代碼:

grep foo | wc -l

正確代碼:

grep -c foo

對於多個文件

錯誤代碼:

grep foo * .log | wc -l

正確代碼:

cat * .log | grep foo -c

修正原因:

這單純是一種程式編碼上風格問題,因 grep 可以直接進行計算無須再次利用管道方式傳送至 wc 進行運算。

檢查有無符合的匹配項目,在沒有符合的項目時(參數值==0),此情形下使用 grep -q 甚至更加清晰及高效率,例如下列示範:

if grep -q pattern file; then
   echo "此文件有符合的項目"
fi

當如果執行 foo | grep bar | wc -l,在正常情形下無法顯示 grep 執行時的異常訊息,並且始終顯示執行成功,錯誤排除時難以查找問題。如果替換成 foo | grep -c bar 則在沒有匹配項目時退出會顯示 0 。

例外狀況:

如果在特定情形下 wc 指令可以使結果更清楚,就可以忽略此寫法。

參考來源:

SC2126 建議使用 grep -c代替 grep | wc 閱讀全文 »

返回頂端