前回のシェル芸勉強会で取り上げられたネタですが、スタッフとしてウロウロしてたので、今更になってやっと手を動かしてみたのですが、Yahoo天気予報をbashのワンライナーで自動取得してみました。htmlタグの除去など、スクレイピングを行うためのプログラミングに大事な要素があるので、他のページにも応用がききそうです。
日次アーカイブ: 2013年05月16日
[AWS][EC2][小ネタ]hostsのエントリにFQDNを登録する
Amazon EC2の /etc/hosts は通常 localhost のエントリしかない。eth0のアドレスに対して自分自身からアクセスさせたい場合など、vimでhostsのエントリを書いたりしてもよいのだが、 www.example.com などの1つのFQDNを複数台でクラスタ化するときなどは面倒だしオペミスするのもつまらない。そこで、EC2インスタンスのhostsを簡単に書き換えるシェルスクリプトを作ってみた。
#!/bin/bash LANG=C HOSTSFILE=/etc/hosts T_DIR=${HOME}/tmp E_DIR=${HOME}/etc TMP=$(basename $0).$$ MASTER=${T_DIR}/tmp_${TMP}_hosts.master UNAME=${T_DIR}/tmp_${TMP}_hosts.uname H_FILE=${E_DIR}/hosts [ ! -d ${T_DIR} ] && mkdir -p ${T_DIR} [ ! -d ${E_DIR} ] && mkdir -p ${E_DIR} case $1 in [[:alnum:]]*) if [ 0 = $(uname -n | egrep '(^ip-[[:digit:]-]?)' > /dev/null 2>&1 ; echo $?) ]; then cat ${HOSTSFILE} | grep ^127.0.0.1 > ${MASTER} uname -n | sed -e 's/-/./g;s/ip.//g' | awk --assign FQDN=$1 '{print $1,"t"FQDN}' > ${UNAME} cat ${MASTER} > ${H_FILE} cat ${UNAME} >> ${H_FILE} sudo chown root. ${H_FILE} sudo mv ${H_FILE} /etc/ rm -f ${MASTER} ${UNAME} fi ;; *) ;; esac
引数にFQDNを与えてあげれば、 /etc/hosts のエントリに追加してくれる。こいつをPATHの通ったどこかに置いておいてAMI化しておけば、楽ちんなことこの上ない。
[amazonjs asin="4822211967" locale="JP" title="Amazon Web Services クラウドデザインパターン 設計ガイド"]
[小ネタ][awk] シェル変数をawkに取り込む方法
awkのスクリプトやワンライナーでシェル変数を扱いたい場合はこうする。
[ (っ´∀`)っ@友の会 ~]$ echo aho | awk --assign hoge=${USER} '{print $1,hoge}' aho (っ´∀`)っ
[amazonjs asin="4904807006" locale="JP" title="プログラミング言語AWK"]