2018/01/30

如何使用 << EOF 達到傳遞多行文字



在寫 shell script 時

常常會需要傳遞或是寫入多行文字

這時候 <<EOF 就可以派上用場了

用法1:

$ cat <<EOF > a.txt
'use strict';

const A='1';
console.log(A);
EOF


用法2:

# 從檔案讀取
$ sfdisk /dev/xvdb < xvdb-table

# 用 <<EOF 方式
$ sfdisk /dev/xvdb <<EOF
label: dos
label-id: 0xffffffff
device: /dev/xvdb
unit: sectors

/dev/xvdb1 : start=        2048, size=    209713152, type=83
EOF


EOF只是一個標示,可以改成MOA,結果是一樣的


$ cat <<MOA > a.txt
'use strict';

const A='1';
console.log(A);
MOA


另外,有時候寫在 shell 檔案執行時會出錯

可以加上""包起來

例如:

#!/bin/sh
cat <<"EOF" > a.txt
'use strict';

const A='1';
console.log(A);
EOF

在樹莓派(raspbian) 安裝 docker


廢話不多說

一行指令打天下


$ curl -sSL https://get.docker.com | sh


2018/01/29

如何在 ubuntu/macOS/raspbian 下安裝 docker compose



隨著進入了 docker 的世界,碰到愈來愈多東西

終於用上了 docker compose

不過常常在新系統安裝好 docker 後會發現不能使用 docker-compose

原來這個東西是要另外安裝的

依據官方的文件

以下範例適合 ubuntu/macOS


# 下載
$ sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 加上執行權限
$ sudo chmod +x /usr/local/bin/docker-compose


這樣就可以盡情的使用 docker-compose up 了


如果是在樹莓派 raspbian 下的話就比較麻煩了

這邊提供用pip安裝的方法


# 安裝 pip
$ sudo apt-get install python-pip
# 或 pip3
$ sudo apt-get install python3-pip

# 利用 pip 安裝 docker-compose
$ sudo pip install docker-compose
# 或 pip3
$ sudo pip3 install docker-compose

# 跑完就可以使用了
$ docker-compose -v
docker-compose version 1.18.0, build 8dd22a9


參考:
https://github.com/docker/compose/
https://docs.docker.com/compose/install/
https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-16-04

2017/12/15

正規表示式 Regular Expression ?= Positive Lookahead Assertion


正規表示式(Regular Expression) 是一個用來描述或是比對某個規則的文字

一直以來我都沒有很透徹地去瞭解他每個pattern

都是看到什麼自己不知道的用法才去查

2017/08/01

取得EC2 instance的instance id



由於使用的 Amazon CloudWatch Monitoring Scripts for Linux 在建置新環境後會有 cache 在 `/var/tmp/aws-mon` 下

如果 instance id 改了會造成 aws-mon 回報錯的 id 回去導致新機器沒有資料

解決辦法可以刪除 `/var/tmp/aws-mon/instance-id` 這個檔案或是透過以下指令取代為新的


$ wget -q -O - http://169.254.169.254/latest/meta-data/instance-id > /var/tmp/aws-mon


除此之外 http://169.254.169.254 裡面還藏了很多資訊

可以參考 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

2017/06/01

在 ubuntu 中建置 kamailio 伺服器


kamailio 是一款 sip server 可以用來做 voip 網路語音通話

他們前身是 OpenSER, 也有分支 Opensips

在這邊介紹如何在 ubuntu 14.04 建置 kamailio


由於個人比較偏好直接用別人打包好的套件做安裝,剛好官網也有提供 http://deb.kamailio.org/

安裝 kamailio

# 使用 apt-get 安裝
echo "deb http://deb.kamailio.org/kamailio trusty main" >> /etc/apt/sources.list
echo "deb-src http://deb.kamailio.org/kamailio trusty main" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install kamailio

記得安裝 mysql modules

sudo apt-get install kamailio-mysql-modules kamailio-tls-modules


編輯 /etc/kamailio/kamailio.cfg


# #!開頭的會是 kamailio 的 script 語法, 在這邊定義啟用 mysql 跟用 db 做認證
#!define WITH_MYSQL
#!define WITH_AUTH

# 把機器自己的 public ip 設成一個 alias
alias="aws public ip"


設定 db

# 編輯 /etc/kamailio/kamctlrc

SIP_DOMAIN=aws public ip
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=kamailio
DBRWUSER="kamailio"
DBRWPW="kamailiorw"
DBROUSER="kamailioro"
DBROPW="kamailioro"
DBROOTUSER="root"
USERCOL="username"

初始化 db

kamdbctl create

新增帳號

kamctl add 1000 1000 #kamctl add 帳號 密碼

全部設完記得重啟

sudo /etc/init.d/kamailio restart

sip客戶端:

android 5: linphone、ECOA Sip
android 6: linphone、sipdroid
iOS: linphone
macOS: YateClient

2017/05/22

在 ubuntu 中建立 swap


1. 建立 swap 檔

sudo fallocate -l 1G /data/swap
sudo chmod 600 /data/swap
sudo mkswap /data/swap


2. 編輯 /etc/fstab 加入系統啟動自動掛載

/data/swap none swap defaults 0 0


3. 自動掛載 fstab 設定的 swap

sudo swapon -a


4. 查詢 swap

swapon -s
# 或
free