【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



コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://inari.asablo.jp/blog/2009/02/01/4123912/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。