2009-09-01から1ヶ月間の記事一覧

質問を出してYesかNoの応答を取得する関数

関数名: GetYesNo 書式: GetYesNo "message" 目的: あるメッセージを出力しそれに対しての答えとしてYesかNoの答えを取得する 戻り値: Yes:0 No:1 GetYesNo() { if [ $# -eq 0 ]; then echo "Usage: GetYesNo message" 1>&2 exit 1 fi while :; do if [ "`ec…

応答要求のスタイルを定型化した関数

関数名: Question 書式: Question 質問文 デフォルト値 ヘルプメッセージ 目的: 指定したメッセージを標準出力に書き出し、ユーザに応答を要求する Question() { if [ $# -lt 3 ]; then echo "Usage: Question question default helpmessage" 1>&2 exit 1 fi…

2つのファイルの日付を比べる関数

関数名: IsNewer 書式: IsNewer file1 file2 目的: file2よりfile1の日付が新しければ0を返し、そうでなければ1を返す IsNewer() { if [ $# -ne 2 ]; then echo "Usage: IsNewer file1 file2 " 1>&2 exit 1 fi if [ ! -f $1 -o ! -f $2 ]; then exit 1 fi if…

ファイルやディレクトリの完全パス名を表示する関数

関数名: FullName 書式: FullName filename | directory 目的: 指定されたファイルやディレクトリを完全パス名で表現したものを返す FullName() { _CWD=`pwd` if [ $# -ne 1 ]; then echo "Usage: FullName filename | directory" 1>&2 exit 1 fi if [ -d $1…

調査ネットワーク内にあるホストの応答を確認する

スクリプト名: ipres.sh 書式: ipaddr.sh IPアドレス ネットマスク値 目的: 指定したネットワーク内にある起動中のホストが応答を返すかを調べる 戻り値: 正常動作:0 失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Tmp_Lock.sh || exit 9…

IPアドレスとネットマスク値からネットワーク情報を表示する

スクリプト名: ipaddr.sh 書式: ipaddr.sh IPアドレス ネットマスク値 目的: IPアドレスとネットマスク値からネットワーク情報を表示する 戻り値: 成功:0 失敗:1 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Char_Type.sh || exit 9 Arg_Nums -eq 2 "$@…

ログファイルの名前を変更して圧縮する

スクリプト名: logrevolver.sh 書式: logrevolver.sh [ -d 削除文字列 ] ファイル名... 目的: ログをローテートする 戻り値: すべて成功:0 一部またはすべて失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh || exit 9 Arg_Nums…

サブディレクトリを含めてディレクトリの許可属性だけを変更する

スクリプト名: cdmod.sh 書式: cdmod.sh 許可属性指定 ディレクトリ 目的: ディレクトリのみ許可属性を変更する 戻り値: すべて成功:0 失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Tmp_lock.sh && . Chk_File.sh || exit 9 Arg_Nums -e…

ファイルシステムの利用率を定期的に調べる

スクリプト名: diskspace.sh 書式: diskspace.sh ファイルシステム 目的: ファイルシステムの利用率を調べる 戻り値: 正常:0 引数の不備:1 その他のエラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Chk_Stat.sh || exit 9 Arg_Nums -eq 1 "$@" || …

指定したディレクトリの総容量を計算する

スクリプト名: lsdu.sh 書式: lsdu.sh ディレクトリ名 目的: ls -lの結果でディレクトリの容量を計算して表示する 戻り値: 成功:0 失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Tmp_Lock.sh && . Chk_File.sh || exit 9 Arg_Nums -ge 1 …

ファイルに行番号を付けて出力する

スクリプト名: linenum.sh 書式: linenum.sh ファイル名 目的: ファイルに行番号を付けて出力する 戻り値: 成功:0 エラー:9 #!/bin/sh export LANG=C LC_ALL=C _FILE=$1.count _LINE_NUM=1 _IFS_ORIG=$IFS [ -f "$1" -a -r "$1" ] || exit 9 #バックスラッシ…

いろいろな形式の圧縮ファイルを解凍する

スクリプト名: unsqueeze.sh 書式: unsqueeze.sh ファイル ... 目的: さまざまな圧縮形式のファイルを解凍する 戻り値: すべて成功:0 一部失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh || exit 9 Arg_Nums -ge 1 "$@" || ex…

ファイルやディレクトリをさまざまな形式で圧縮する

スクリプト名: squeeze.sh 書式: squeeze.sh 圧縮形式拡張子 ファイル ... 目的: ファイルやディレクトリをさまざまな形式に圧縮する 戻り値: すべて成功:0 一部失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh || exit 9 Arg_…

空き容量を調べてからバックアップする

スクリプト名 : backup2.sh 書式 : backup2.sh バックアップ元ディレクトリ バックアップ先ディレクトリ 識別名 [必要空き容量] 目的 : 空き容量を調べてからバックアップをする 戻り値 : 成功:0 失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh…

定期的に簡単なバックアップをする

スクリプト名: backup.sh 書式 : backup.sh バックアップ元ディレクトリ バックアップ先ディレクトリ 識別名 目的 : 簡単なバックアップをする 戻り値 : 成功:0 失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh || exit 9 Arg_…

複数のファイル名を一括して置き換えする

スクリプト名: rename.sh 書式 : rename.sh 検索文字列 置換え文字列 ファイル... 目的 : 複数のファイル名を一括して置換えする 戻り値 : 全て成功:0 失敗:1 エラー:9 #!/bin/sh . Error_Msg.sh && . Arg_Nums.sh || exit 9 Arg_Nums -ge 3 "$@" || exit…

一時ファイルの作成と削除をする関数

関数名 Tmp_Lock 書式 Tmp_Lock ( -l | -t ) ( -m | -r ) 目的 一時ファイルの作成・削除をする 戻り値 成功:0 失敗:1 エラー9:オプションによって通常の一時ファイルかロックファイルの 作成・削除を判断するためオプションは必須。 一時ファイルとはスクリプ…

オプションの重複・共存をチェックする関数

関数名 Opt_Cnflct 書式 Opt_Cnflct 入力オプション群 [共存できないオプション群] 目的 オプションの重複・共存をチェックする 戻り値 重複や共存に問題がない場合:0 問題がある場合:1 エラー9: たとえばtarコマンドだと、cオプションは作成、xオプションは…

値が変化したかどうかを判定する関数

関数名 Chk_Stat 書式 Chk_Stat 識別ID 値 目的 与えられた値に変化があるかどうかを調べる 戻り値 変化なし:0 変化あり:1 エラー9: スクリプトの実行結果をファイルに保存しておき 前回と今回の値を比較して一致しているか調べる Chk_Stat () { . Error_Msg…

ユーザー名・ユーザーIDの判定をする関数

関数名 User_ID 書式 User_ID 比較ユーザー名またはユーザーID 目的 比較ユーザー名または比較ユーザーIDを指定して スクリプトの実行ユーザーのものと比較する 戻り値 実行ユーザーと一致する:0 一致しない:1 エラー9: 一部のユーザー(rootなど)でしか実行…

質問を表示し文字列で回答を受け取る関数

関数名 Get_Ans 書式 Get_Ans 質問文 目的 質問文に対して任意の文字列で回答を受け取る 戻り値 エラー9: Get_Ans () { . Error_Msg.sh && . Arg_Nums.sh ||\ { echo "Get_Ans: error: Function not found." 1>&2; exit 9; } Arg_Nums -eq 1 "$@" ||\ { echo…

ファイルタイプと許可属性を調べる関数

関数名 Chk_File 書式 Chk_File オプション ファイル 目的 指定ファイルのファイルタイプと許可属性を調べる 戻り値 条件に一致する:0 条件に一致しない:1 エラー9: 引数にオプションとファイル名を渡して実行すると getoptコマンドとcase文を使って指定した…

質問を表示しYesまたはNoで回答を受け取る関数

関数名 Get_YN 書式 Get_YN 質問文 目的 質問文を表示しYesまたはNoで回答を受け取る 戻り値 Yes:0 No:1 エラー9: Get_YN () { . Error_Msg.sh && . Arg_Nums.sh ||\ { echo "Get_YN: error: Function not found." 1>&2; exit 9; } Arg_Nums -eq 1 "$@" ||\ …

引数の数を判定する件数

関数名 Arg_Nums 書式 Arg_Nums 比較用演算子 比較用数値 "$@" 目的 呼び出し元スクリプトの実行にに必要な引数の数を判定する 戻り値 条件を満たす:0 条件を満たさない:1 エラー:9 Arg_Nums (){ . Error_Msg.sh && . Char_Type.sh ||\ { echo "Arg_Nums: er…

文字列の種類を判定する関数

関数名 Char_Type 書式 Char_Type 判定文字列 目的 文字列を構成している文字の種類を判別する 戻り値 数値:1 アルファベット小文字:2 アルファベット大文字:3 アルファベット:4 アルファベットと数値:5 それ以外:0 エラー:9 Char_Type () { . Error_Msg.sh …

エラーメッセージを出力する関数

関数名 Error_Msg 書式 Error_Msg タイトル文字列 エラーメッセージ用文字列 目的 文字列を標準エラー出力として出力する 戻り値 成功:0 エラー:9 Error_Msg () { if [ "$1" = "" -o "$2" = "" ]; then echo "Error_Msg: error: No arguments found." 1>&2 ;…

SUIDとSGIDがセットされているファイルを毎日比較する

find -perm +6000 でSUIDとSGIDがセットされているファイルを検索し 前日に検索した結果とdiffで差分を取り、表示する。 #!/bin/sh today=`date +%Y%m%d`.filelist yesterday=`date --date 'yesterday' +%Y%m%d`.filelist difflists=`mktemp difflist.XXXXX`…

ファイルの所有者が存在しないUIDのファイル/ディレクトリを調べる

find -nouser で所有者のないファイル/ディレクトリを調べ 存在した場合は表示し、nonameディレクトリに移動する。 #!/bin/sh ! [ -d noname ] && mkdir noname movefile() { echo -n "Do you move $filename to noname? [y/n]: " read answer answer=`echo …

自分のホームディレクトリ以下に他人の実行権のあるファイルを検索する

findの -perm -001 オプションで他人に実行権があるファイルを検索。 chomod o-x で実行権を変更する。 #!/bin/sh username=`whoami` for filename in `find "/home/$username" -user "$username" -type f -perm -001`; do echo $filename echo -n "Do you d…

ネットログインしているユーザーリスト

whoの結果からネットワークログインのユーザーを取り出すには ネットワークログインユーザーは()内にホスト名が入るため 行末に)がある行のみ取り出し、Xを使用してログインしているユーザーは (:0.0)が付くのでそれを含まないユーザー名を取り出す。 #!/bin…