sh スクリプト修行

sh スクリプト修行

素のFreeBSDで動くスクリプトを作る修行。

ホスト名、起動してからの日数、load average の5min,15min を返すCGIを作ってみた。

#!/bin/sh
PATH=/usr/bin:/bin
hostn=`hostname`
users=`find /home -type d -group users -prune 2>/dev/null |wc -l|tr -d ' '`
# uptime example
#  9:49PM  up 30 days,  4:25, 2 users, load averages: 0.02, 0.04, 0.02
# 12:08AM  up 5 mins, 1 user, load averages: 0.48, 0.26, 0.12
uptim=`uptime | sed -E -e '
/day/s/^([ 0-9]+:[ 0-9]+(AM|PM)).*up *([0-9]+) *day.*,.*,.*,.*,([ 0-9.]+) *,([ 0-9.]+) *.*$/\1,\3,\4,\5/
/day/!s/^([ 0-9]+:[ 0-9]+(AM|PM)).*up.*,.*,.*,([ 0-9.]+) *,([ 0-9.]+) *.*$/\1,0,\3,\4/
'`
echo Content-type: text/plain
echo
echo $hostn,$users,$uptim

N day(s) がない場合に 0 を代わりに利用する、という部分を sed で簡単に表現する方法がいまいち思いつかんかった。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。