2010年09月10日

MACアドレスをリンクローカルアドレスに変換するスクリプト

タイトルの通りの変換を行うスクリプトを作ってみました。
#!/usr/bin/perl

$prefix = "fe80";
$mac_file = $ARGV[0];

open(MACLIST, "< $mac_file");
while($buf=<MACLIST>) {
@mactmp = split(/:/,$buf);
$j=0;
$addrtmp = hex($mactmp[$j++]) ^ 2;
$addr[0] = sprintf("%x%s",$addrtmp,$mactmp[$j++]);
$addr[1] = sprintf("%sff",$mactmp[($j++)]);
$addr[2] = sprintf("fe%s",$mactmp[($j++)]);
$addr[3] = sprintf("%s%s",$mactmp[($j++)],$mactmp[$j++]);

printf("$prefix::$addr[0]:$addr[1]:$addr[2]:$addr[3]",$addr[0]);
}

引数には、MACアドレスリストを書いたファイルを渡す必要があります。
用途的に、$jの部分は別にハードコードしても問題ないかと思います。
$prefixは将来的には指定できるようにして、
グローバルアドレスに対応させようと思っていたり。
そうなると::省略が真ん中とは限らなくなったり、そもそも省略がなかったりしますね。

ちなみに引数で渡すファイルの中身はこんな感じ。
1行ずつ書かれているのを想定しています。
空行があると変なアドレスを出力しちゃうと思います。
11:11:11:11:11:11
22:22:22:22:22:22

ところで何に使うんだろう



nanodayo at 17:11コメント(1)トラックバック(0) 
UNIX 

トラックバックURL

コメント一覧

1. Posted by シアリス ed|渋谷 ed   2011年11月30日 01:00
バイアグラ 福岡
ビットリア シューズ
バイアグラ 渋谷
インデラル 作用時間

コメントする

名前
 
  絵文字