MacOSX で不調なネットワークフォルダ (smb) を定期的に再接続する

Finder.app でマウントしたネットワークフォルダがよく接続できなくなったり、接続してるのにファイル見えなくなったりするので定期的に再接続するようにしました。

以下のようなスクリプトで再接続ができるようになります。

#!/bin/sh
[[ -d $1 ]] && umount $1
open -g $2

実際に実行して確認してみましょう。

./remount_files.sh /Volumes/shared smb://files.home.local/shared

適切に再接続が行なわれることを確認したら、定期的に行なうために launchd に登録します。 まず、以下のような xml ファイルを ~/Library/LaunchAgents/local.home.files.shared.RemountFiles.plist とかに置きます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>local.home.files.shared.RemountFiles</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/shunirr/bin/remount_files.sh</string>
            <string>/Volumes/shared</string>
            <string>smb://files.home.local/shared</string>
        </array>
        <key>StartInterval</key>
        <integer>3600</integer>
    </dict>
</plist>

あとは launchctl で load すれば 1 時間おきに実行されるようになります。

 launchctl load ~/Library/LaunchAgents/local.home.files.shared.RemountFiles.plist