_ [debian] net-snmp 5.1.2-6vd1

[ 942155 ] IPv6 addr_string fix はまだ入っていないので、vd_net-snmp-5.1.1_ipv6-libwrap-fix.patch を当てて作成。

_ [debian] AP ごとの無線 LAN の設定

アクセスポイント毎の無線LANの設定10.8 魔法のようなネットワーク設定 を参考にやってみる。アクセスポイント毎の無線LANの設定 に示されている map-wlan スクリプトに若干手を加える。かなり決め打ちかついい加減。

  • 有線でも使っているので、eth0 が UP していれば WIRED を返す。
  • iwlist ath0 scanning で

      Interface doesn't support scanning : Invalid argument
    

    となってしまう。調べてみると ath0 を UP しておかないと駄目なようだ。

  • AP が見つからなかったら NOAP を返す。

という修正を加えたスクリプトがこれ。

#!/usr/bin/ruby

# http://shugo.net/jit/20040101.html#p02

#
result = `/sbin/ifconfig eth0 | grep "inet addr"`
if( result != '' )
  puts('WIRED')
  exit
end
`/sbin/ifconfig ath0 up`
#

iface = ARGV.shift
result = `iwlist \#{iface} scanning`

#
if( result =~ /No scan results/ )
  puts('NOAP')
  exit
end
#

while line = gets
  essid, name = line.split

  if /ESSID:"\#{Regexp.quote(essid)}"/ =~ result
    puts(name)
    exit
  end
end

で、/etc/network/interfaces にエントリを追加。

auto ath0
mapping ath0
        script  /usr/local/sbin/shugo-map-wlan.rb
        map     XXXXXXXXXX     ath0-XXXXX
        map     YYYYYYYYYY     ath0-YYYYY

iface ath0-XXXXX inet static
        wireless_essid  XXXXXXXXXX
        wireless_key    s:XXXXXXXXXX
        address         XXX.XXX.XXX.XXX
        netmask         XXX.XXX.XXX.XXX
        broadcast       XXX.XXX.XXX.XXX
        gateway         XXX.XXX.XXX.XXX

iface ath0-YYYYY inet dhcp
        wireless_essid  YYYYYYYYYY

WIRED と NOAP が返ってきたときは何もしない。 ひとまず有線の状態ではきちんと動作した。 無線の状態でテスト。eth0 が UP しているかどうかの調べ方がまずかった。UP フラグがあるかどうかではなく、inet addr が振られているかどうかを調べるように変更。ついでに負荷実験をしてみた。数 G のファイルを流してみたが、kernel が刺さったりすることはなく普通に使えた。