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
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
awk で特定行の中の特定パターンを置き換える処理
たとえば Makefile にある LIBS 行の中で,特定のライブラリ名だけ置き換え変える.
それ以外の行はそのまま出力する.
#!/usr/bin/awk -f $0~/LIBS/ { str = $0 sub(/-lQt3Support/,"-lQt3SupportE",str) sub(/-lQtXml/,"-lQtXmlE",str) sub(/-lQtGui/,"-lQtGuiE",str) sub(/-lQtNetwork/,"-lQtNetworkE",str) sub(/-lQtCore/,"-lQtCoreE",str) print str } $0!~/LIBS/ { print $0 }
これを foo.awk とか適当なファイル名を付けて保存して,実行許可属性を付けると次のように実行できる.
./foo.awk input.txt > output.txt
高齢者向け機器のデザインに関する標準規格
雑多なメモ
続きを読む