【Linux】 パラメータ取り込み ( shift ) サンプルシェルスクリプト2009年02月01日 08:56


メモ : 物忘れがひどく?なった私の覚書です。

シェルスクリプトに渡されるパラメータの取得方法(変数)は、

  引数1 = $1
  引数2 = $2
  引数3 = $3
     :

と '$' に続く数字がカウントアップされた変数に入っている。

でも、何個パラメータが指定されるか分からないような場合
shift を使用して指定されたパラメータをシフトして
パラメータを順次取り込むことが出来る。

以下に簡単な例を

#!/bin/bash

TEST_FLAG=0
while [ ! -z "$1"  ]; do
    case $1 in
        -a)
            TEST_FLAG=1
            ;;
        -b)
            TEST_FLAG=2
            ;;
        *)
            param=$1
            ;;
    esac

    shift;

done

echo ${TEST_FLAG} : ${param}

このシェルをいろんなパターンで起動してみると

# /bin/bash /tmp/test.sh
0 :
# /bin/bash /tmp/test.sh -a
1 :
# /bin/bash /tmp/test.sh -a 123
1 : 123
# /bin/bash /tmp/test.sh -b 123
2 : 123
# /bin/bash /tmp/test.sh 123
0 : 123
# /bin/bash /tmp/test.sh -c
0 : -c
# /bin/bash /tmp/test.sh -a -b 123
2 : 123
# /bin/bash /tmp/test.sh -b -a 123
1 : 123


うん、shift を使えばパラメータ個数、パラメータ指定の順番など任意指定の
対応が簡単に出来そう (^-^)




【Linux】 Windows上ファイルのアクセス ( mount cifs ) サンプルシェルスクリプト2009年02月01日 09:08



メモ : 物忘れがひどく?なった私の覚書です。

☆ Linuxマシン側 設定ポイント

・Windows上のファイルにアクセスする為には samba-client パッケージが必要・・・たぶん (^-^;
 インストールされているか、まず確認!

  # rpm -aq | grep samba-client
  samba-client-3.0.25b-1

 インストールされていれば上記のように何か表示される。
 もし、このパッケージがインストールされていない場合は、
 yumコマンドでインストールする。

  # yum install samba-client 

・iptables によりパケットの検査が行われたりすると上手く接続できない場合がある。
 そんな時は以下のように Windows マシンのIPアドレス・ポート(139,445)を開放する  ように設定を行う。

  # iptables -A OUTPUT_ALLOW -m state --state NEW -p tcp -d
                                                   192.168.1.123 --dport 139 -j OK
  # iptables -A OUTPUT_ALLOW -m state --state NEW -p tcp -d 
                                                   192.168.1.123 --dport 445 -j OK


☆ Windowsマシン側 設定ポイント

Windows側も準備が必要!
ファイルのアクセスを許可するフォルダの共有化と、
Windowsファイアウォールを有効としている場合はLinux側からのアクセスに対して 許可(ポート開放)が必要となる。

・ファイルアクセス対象となるフォルダの共有化設定
    Wondowsエクスプローラでフォルダを選択
    右クリックメニューの「共有とセキュリティ」を選択
    
  ① D:\FILE を共有化する。 ・・・例) D:ドライブのFILEフォルダ
    
    Wondowsエクスプローラでフォルダを選択
    右クリックメニューの「共有とセキュリティ」を選択
    ---<共有タグ>---

    「このフォルダを共有する」を選択

       ※ 共有名(=FILE)等設定値はデフォルト値のまま。
    
  ② アクセス許可 

    ---<セキュリティタグ>---    

     everyone = フルコントロール 設定

       ※ 任意ユーザ名を作成しアクセスできるようにする方が理想かも


・Windowsファイアウォールの設定  
    
  ① Windowsファイアウォール = "有効" 設定 ?

     もし、"無効" (・・・危ないよ!) となっている場合は②は必要なし

  ② 「例外」タグの「ファイルとプリンタ共有」をチェック、
     さらに【編集】ボタンを押下しの TCP 139 及び TCP 445 をチェックする。 



○ シェルスクリプト mount cifs

---<Windowsファイルマウント サンプルシェルスクリプト>----------

#!/bin/bash

SRC_PATH="//192.168.1.123/FILE"
MNT_PATH="/mnt/win"
                             # マウントポイント作成
if [ ! -d ${MNT_PATH} ]; then
    /bin/mkdir -p ${MNT_PATH}
fi
                             # マウント済チェック
mount_flag=`/bin/mount | /bin/grep "${MNT_PATH}" | /usr/bin/wc -l`
if [ ${mount_flag} -ne 0 ]; then
    exit 0
fi
                             # マウント!
/bin/mount -t cifs -o username=Administrator,password=※) ${SRC_PATH} ${MNT_PATH}
                   # ※) ユーザ(Administrator)のパスワードを設定 retval=$?
if [ ${retval} -ne 0 ]; then
    echo "mount error !"
    exit 1
fi
exit 0

これで、ls コマンドを実行してWindows上のファイルが見えるかチェック!

  # ls -la /mnt/win

  何かファイルが見えたらOK (^-^)v


---<Windowsファイルアンマウント サンプルシェルスクリプト>----------

#!/bin/bash

MNT_PATH="/mnt/win"
                             # アンマウント済チェック
mount_flag=`/bin/mount | /bin/grep "${MNT_PATH}" | /usr/bin/wc -l`
if [ ${mount_flag} -eq 0 ]; then
    exit 0
fi
                             # アンマウント!
/bin/umount ${MNT_PATH}
retval=$?
if [ ${retval} -ne 0 ]; then
    echo "umount error !"
    exit 1
fi
exit 0



土起こし2009年02月01日 22:15


昨日、今日とユンボを借りて畑の土起こしをしました

元々田んぼだったので粘土質の土

ほっておくと土が固くなってしまう (-.-;

スコップ、鍬を使って土起こしをしようとしてもなかなか土を掘り起こせない

さ、さすが文明の力 (^o^)

かなりザクザクと掘り起こすことが出来ましたが

硬いところは文明の力を持ってもなかなか掘れないところも (^-^;


途中、庭の真ん中辺りにあったキンモクセイの木を別の場所に植えかえる準備をしたり、切り株2本を掘り起こしたりと手作業なら何日もかかりそうな作業を一気に片付け・・・ユンボさまさま

なんとか畑にしようとしているところの
土起こしは終わりました フゥーーッ (^。^;

あとは、車の出入り部分にゲートを設置、庭の周りをブロックやフェンスで囲ってお庭大改造の完了って筋書き・・・

これでエディも自由に走りまわることが出来るかな

待っててね、エディ (^-^)V