うまいぼうぶろぐ

linuxとhttpdとperlのメモ

perlでNetAppをごにょごにょ

cpanにNetAppモジュールがあったのを発見したので。さっそく使おうとしたけど、たぶんNetApp::Filer がおかしい?くてtelnet loginできない。まぁtelnetやめてsshにしろっていう話でもあるけど。


perldoc -m NetApp::Filerしてsource見たら、

if ( $ENV{NETAPP_TELNET_DEBUG} ) {
  $session->input_log('/var/tmp/netapp-telnet-debug.log');
}

とあったので

$ export NETAPP_TELNET_DEBUG=1
$ perl netapp.pl
$ tail -f /var/tmp/netapp-telnet-debug.log

とかしてみた。するとPassword入力するプロンプトで止まったままだ。

さらにsourceを見ると、どうやらNet::Telnetでpassword入力するところがうまくいってない様子。

netappにtelnet接続するとusernameを聞かれないで、Passwordのみを聞かれるはず。(もしかしたらoptionsの設定でusernameも設定できるかもしんないけど)

ところがNetApp::Filerは通常のtelnetのように、usernameのプロンプトまで書いてる様子。

$session->open( $hostname );

$session->waitfor('/login:/');
$session->print( $username );
$session->waitfor('/Password:/');
$session->print( $password );

というわけでとりあえず'/login: /'のプロンプトを待たないように書き換えたら動いた。

# diff Filer.pm.org  Filer.pm
218,219d217
<         $session->waitfor('/login:/');
<         $session->print( $username );

ただ、NetApp::Qtree、NetApp::Snaphot等はあったけど、自分が求めていたquota関係のモジュールがなくてちょっとしょんぼり。