ITmedia NEWS > STUDIO >
ニュース
» 2017年09月07日 16時16分 公開

pingを打つと「にゃーん」を返すサービス、ネットワークエンジニアが開発

IPv4とIPv6の両方に対応。

[太田智美,ITmedia]

 ネットワークオペレーターは、遠隔からオペレーションするときに現地にいる人の作業(機器の交換など)が終わるのを待たなければいけないときがある。そんなオペレーションの合間に、思わずほっこりとするような癒やしを与えてくれるサービスが開発された。コンピュータとつながってるかを確認するときに打つコマンド「ping」を使った、「pingアスキーアート」だ。

 開発されたのはpingを打つと「にゃーん」を返すサービス。IPv4とIPv6のどちらにも対応している。ただし、Cisco ルーター限定。


pingアスキーアート Cisco ルーターのping。これを……

pingアスキーアート 「にゃーん」(画像提供:@kooshinさん)

 Cisco ルーターは、ICMP(Internet Control Message Protocol)のecho requestを送った結果を一文字ずつ返してくれる。例えば、通信相手と疎通できれば「!」を、できない場合は「.」を、宛先に到達できない場合は「U」を返すといった具合だ。

 そして、横の文字数が70文字と決まっている(高さは無限)。これを活用し、70(横)×20(縦)=1400ピクセルの画像を用意。pingを1400発打つとアスキーアートが描かれるというわけだ。


pingアスキーアート 描く画像

 さくらインターネットのVPS(仮想専用サーバ)にLinuxサーバを立て、そこにICMPのecho requestを送ると、ICMPのecho replyが返ってくるという仕組み。それとは別に、unreachableを返す実装もしている。

 Pythonスクリプトでは、画像を読み取り、ICMPのシーケンス番号をみてピクセル位置を特定。「白い部分はICMPのecho reply」「黒いところはICMPのunreachable」を返すよう指示し、その結果をもとにCisco ルーターに結果を返しているという。中身のPythonスクリプトは、IPv4とIPv6の両方のプロトコルを用意。それぞれ50行程度の簡単なスクリプトを書いている。

 他にも、OpenCV画像の二値化(白と黒に変換する処理)をしたり、NetfilterQueueを使ってICMPパケットを受信したり、ScapyでICMPパケットの解析・生成するなどのこだわりも。


pingアスキーアート

pingアスキーアート 中身のPythonスクリプト

 開発したのは、ネットワークエンジニアの岩田浩真(@kooshin)さん。Cisco ルーターを持っている人であれば、pingを打つだけで誰でもほっこりできる。ちなみに、IPv4とIPv6で結果が違うのでお試しを。


pingアスキーアート

 「日々のメンテナンスや障害で疲れたネットワークオペレーターの皆さまが、今日も元気に過ごせますように」(岩田さん)

太田智美

Copyright© 2017 ITmedia, Inc. All Rights Reserved.