今日はかなり技術的な話題。あるいは、人間は楽するためには苦労を惜しまないもんだという話題。
大学の授業では毎回 PowerPoint のスライドを使うのだが(本当は Keynote 使いたい)、スライドを作成するのは当然研究室のマシンで、授業時には LL の別の Mac でスライドショーをする。当然、PowerPoint のファイルを LL に持って行かなければならない。ずっと USB メモリを使っていたのだが、授業前にファイルをコーピーするのが面倒だ。さらに、授業をやってみた結果、その場でスライドを修正することもよくある(たいていはタイプミスとかの修正)ので、USB メモリ内のファイルを修正した場合には研究室に戻ってそれを部屋のマシンにコピーしておかなければならない。これも面倒だ。
そこで、ファイルサーバに保存すればいいじゃん。ということに当然なるのだが、私の研究室と LL が別の建物にあるせいか、研究室の Mac でファイル共有を設定しても、LL の Mac のネットワークブラウザにマシンが現れない。
そこで、さらに、IP アドレス手入力すりゃいいじゃん。ということに当然なるのだが、学内 LAN の IP アドレスは DHCP で動的に与えられるので、いつの間にか別のものに変わっている。いざ接続、と思った時にサーバの IP アドレスが変わっている可能性もあるのだ。
そこで、方々の web サイトを参考にしながら考えた解決策は、自分の web サイト(私の場合は BIGLOBE)にサーバのアドレスを書いたファイルを定期的にアップロードして、クライアント側でそのファイルを参照して接続をしようというもの。まず、サーバになる研究室の Mac が、IP アドレスを自動で定期的にアップロードするように設定する。具体的には crontab に次の設定を追加する。(ブログの表示の都合で2行にしているが本当は1行で書く。)
@hourly /usr/sbin/ipconfig getifaddr en0
| curl -T - ftp://ftp_id:ftp_pw@ftp.server.biglobe.ne.jp/public_html/ip-address.txt
私は1時間に1回のアップロードにした。ftp のアカウント名、パスワード、ftp サーバ名、アップロードディレクトリは自分の環境に合わせること。また、これで得られるのはプライベートアドレスなので、同一の LAN 内からしかアクセスできないことに注意。つまりインターネット経由でのサーバのマウントはできない。
次にクライアント側。こちらはダブルクリック1発でマウントしたいので AppleScript にした。
set addressFileURL to "www.server.biglobe.ne.jp/user/ip-address.txt"
set shareName to "Macintosh HD"
set loginID to "user_name"
set loginPW to "password"
set afpAddr to do shell script "curl " & quoted form of addressFileURL
set mountURL to "afp://" & loginID & ":" & loginPW & "@" ¬
& afpAddr & "/" & shareName
mount volume mountURL
アップロードしたファイルの URL、マウントするボリュームの名前、ユーザー名、パスワードは自分の環境に合わせること。このスクリプトをアプリケーション形式で保存すればOK。なお、crontab や AppleScript 中でアカウント名やパスワードが丸見えなので試される向きはセキュリティーには気をつけていただきたい。(少なくとも AppleScript は実行専用形式で保存するべき。)
かなり試行錯誤したが、USB メモリの管理から解放されるメリットは大きい。よかったよかった。