[華語, cmn-Hant-TW] 之前在這篇提到了 Let’s Encrypt 的 SSL,用起來是很開心沒錯,不過因為官方的 client 是用 python 寫的,在 freebsd 下面得裝一大堆 py27-* 的套件 (當然,安裝 security/py-letsencrypt 時會自動一起被裝進去,不用手動一個一個裝) 才能用,然後申請的時候要把 apache/nginx 關掉放出 80 port,某種程度來講還蠻讓人困擾的,後來看到有人用 shell script 寫了一個比較沒那麼肥的 letsencrypt.sh,主要得另外安裝 curl 而已,也不用關掉 apache/nginx,看起來蠻理想的,而且也進 FreeBSD 的 ports 了 (security/letsencrypt.sh),抓來下用了一下感覺還不錯: 用 ports 安裝的話檔案預設會放在 /usr/local/etc/letsencrypt.sh 目錄下,然後因為預設的 $BASEDIR…
shell script 變數的預設值
[客家話, hak-Hant-TW] 有這種需要,尋一下網路看到這篇有寫,試捯毋會麻煩,記一下。 #!/bin/sh $DEFAULT_VAR="VALUE" VAR="${VAR-$DEFAULT_VAR}"#!/bin/sh $DEFAULT_VAR="VALUE" VAR="${VAR-$DEFAULT_VAR}"
bash 的 <<<
[華語, cmn-Hant-TW] 有時候會看到用 bash 寫的 script 裡面有 <<< 這種用法,啊這個語法 sh 是吃不進去的,我們這種 sh 基本教義派當然會想要把他消滅掉。 消滅的方法也不難,這個語法其實就是把 <<< 後面字串變數的內容丟給前面的東西 (程式,或是另外一個 script) 吃而已,所以改用 pipeline 就可以了。 bash: run.sh <<< $varrun.sh <<< $var sh: echo "$var" | run.shecho "$var" | run.sh 要注意的是 echo 的變數最好要用雙引號包起來,避免字串內的換行字元之類的東西(如果有的話)被吃掉 。
從 Command Line 存取 Keychain 的方法
[華語, cmn-Hant-TW] 其實主要是說在寫 shell scripts 的時候會比較方便啦,這樣總比直接把密碼之類的存在檔案裡來得安全些。 在 shell 中可以用 service 對 Keychain 做存取,可以設很多不同的條件來取得 Keychain 上的資料。而如果要直接拿到密碼,這樣打就可以了: security -q find-internet-password -s $name -g 2>&1 | grep password | cut -d \” -f 2 然後會有視窗跳出來提示說有程式想抓資料,選確定即可。 要注意的是這樣真的就會把密碼挖出來,所以使用上務必小心就是了。