個人用の備忘メモ
Linuxの知識を付けたかったのと、仕事で役立ちそうだなと思ってシェルワンライナーの本を読み始めました。どんな本かは以下のリンクからわかると思います。やっていて楽しいですよ!
やったこととちょこっと解説
題名の通り/28のホストへの到達性を確認したかったので、以下のワンライナーでログを取りました。「seqを使って第四オクテットを出力。xargsを使ってpingコマンドの引数に@で渡して、連続でpingを実行。出力はping.logを作って保存。」ということをしています。
ping1.sh
seq 49 63 | xargs -I@ ping 165.254.119.@ -c 3 > ping.log
xargsの引数はコマンドの部分も含めてスペースだけで区切って書けるので便利ではありますが、慣れていないと何をやっているのか読みづらい気はします。
他のやり方と失敗例
「seqとawsで実行したいコマンドを作り、bashに渡して実行する。」というやり方もできます。メタプログラミングというやつです。
ping2.sh
seq 49 63 | awk '{print "ping 165.254.119." $1 " -c 3"}' | bash > ping.log
以下は失敗例です。xargsでは$1などのフィールドの引数は使えないんでしたっけ。。pingが実行できませんでした。
ping3.sh
seq 49 63 | xargs ping 165.254.119.$1