新城@筑波大学情報です。こんにちは。

MacOSXの無線LANは、以前に接続したことがある無線LANを記憶していて、自動
的に接続してしまいます。自動接続を禁止するには、「使ったことがあるネッ
トワーク」から削除すれば良いのですが、接続した時にまたパスワード等を打
つ必要があります。禁止したいのは、自動接続だけで、パスワードはまた打ち
たくはありません。

無線LAN 自動接続を禁止するのに、sleepwatcher でスリープする時に無線LAN
の電源を落とすという方法を試した所、うまくいきました。スクリプトとして
はこんな感じ。
----------------------------------------------------------------------
$ cat ~/.sleep
#!/bin/bash

. ~/.bashrc

airport-power-off
$ cat ~/bin/airport-power-off 
#!/bin/sh

networksetup -setairportpower en0 off
$ 
----------------------------------------------------------------------

sleepwatcher は、MacPorts で入れるのが簡単です。

    port info sleepwatcher
    launchctl load -w /Library/LaunchDaemons/org.macports.sleepwatcher.plist 

この org.macports.sleepwatcher.plist は、
/opt/local/etc/rc.{sleep,wakeup} を実行します。これらは、それぞれホーム
ディレクトリの ~/.{sleep,wakeup} を実行します。

   su - $user -c "$home/.sleep"

上の ~/.sleep は、bash スクリプトで、. ~/.bashrc を明示的に読み込んでい
ます。interactive ではないので、~/.bashrc の PATH の設定が効きません。
(標準の PATH では /usr/sbin にあるプログラムが動かないです。) 1回は、端
末で実行した方がいいですね。

    $ /opt/local/etc/rc.sleep

あと、システム全体の
/Library/LaunchDaemons/org.macports.sleepwatcher.plist は使わなくても、
個人で launchctl 用の .plist を作ってもいいのでしょう。

上のスクリプトで、en0 というのが出てきますが、これは無線LANのインタフェー
スです。ifconfig -a だと無線も有線もよくわからないのですが、次のコマン
ドでは無線ということがわかります。

    networksetup -listallhardwareports

ここに書いてありました。airport コマンドの scan も面白いですね。

http://blog.mattcrampton.com/post/64144666914/managing-wifi-connections-using-the-mac-osx-terminal

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 情報工学        \\