メモ書き

自分が後で見直すためにつけている作業のメモ書きです.それ以上の意味はありません

Macにコマンドラインツールをインストール

macOS Sierra のターミナルで makeを実行しようとしたら次のエラーに遭遇した.

$ make
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
続きを読む

MacでARPテーブルからEthernetインタフェースのベンダ名を表示するBashスクリプトの例

#!/usr/bin/env bash

OUIFILE="./oui.txt"

# ファイルの存在確認
if [ ! -f $OUIFILE ]; then
    echo "OUI file not found"
    exit 1
fi

# テンポラリファイルの作成
tmpfile=`mktemp -t tmp.XXXXXXXXX` || exit 1

arp -a | grep ethernet > $tmpfile 2> /dev/null                                                                                                                                                    

while read host address at hwaddress_raw on iface ifscope hwtype;
    do
    # MACアドレスが "-" で区切られた2桁の16進表示になるようにする
    hwaddress=$(for i in $(echo $hwaddress_raw | sed "s/:/ /g"); do echo 0x$i; done | xargs printf "%02x-%02x-%02x-%02x-%02x-%02x\n")
    # 先頭の3つの数値だけ取り出す
    vendor_c=$(echo $hwaddress | cut -d "-" -f 1-3)
    # ベンダー名を取り出す.表示に影響が出るためサブシェルの実行結果に含まれるキャリッジリターンを取り除く
    vendor_n=$(echo $(grep -i $vendor_c $OUIFILE | cut -f 3) | tr -d '\r')

    echo "$address $hwaddress ($vendor_n)"
done < $tmpfile

rm -r $tmpfile

exit 0

スクリプトの実行には Organizationally Unique Identifier と呼ばれる,組織固有に割り当てられた MAC アドレスの前半部分と組織名とを関連づけるデータのファイルが必要で,あらかじめダウンロードしておく(ダウンロードには少々時間がかかる)

$ wget http://standards.ieee.org/develop/regauth/oui/oui.txt

dockerコンテナ管理ツールについて

dockerのコンテナが増えてくると,それらの組み合わせを定義したり動作の制御を行う必要が出てくる.
関連するツールの名称を知る機会があったので少しだけ整理.

続きを読む

vagrant で Guest Additions のアップデート用プラグイン

Box にインストールされている VirtualBox の Guest Additions が手元のマシンの Virtual Box より古い場合に警告が表示されるため,適切に更新する必要がある

備忘録として手順のみ

$ vagrant plugin install vagrant-vbguest
$ vagrant vbguest

プラグインの詳細はこちら
github.com

vagrant で ubuntu/trusty64 のVMを作って docker.io パッケージを入れるスクリプトの例

#!/usr/bin/env bash
mkdir trusty64; cd trusty64
vagrant init ubuntu/trusty64
vagrant up
cat << EOS > bootstrap.sh
#!/usr/bin/env bash
apt-get update
apt-get install -y docker.io
EOS
chmod +x bootstrap.sh
sed -i -e 's/^end$/  config.vm.provision :shell, path: "bootstrap.sh"\nend/' Vagrantfile
vagrant reload --provision