OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Telnetモジュールで繋がりません。

  • 困ってます
  • 質問No.173171
  • 閲覧数373
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 70% (76/108)

RHL7のperlのプログラムでモジュールを使い、ルータ(BA512R)へtelnet接続し、WAN側のIPアドレスを取得しようと思っています。
プログラムの問題のある行は、
$t->login('user','password');
のようです。
これでも他のTELNETがあるlinuxサーバへは問題なく繋がるのですが、BA512Rへは繋がりません。
通常、telnetを起動し、openを実行すると、user名、password、の順で聞いてきますが、BA512Rは、passwordをいきなり聞かれ、それでログインできます。
この辺が問題なのでしょうか。
しかし、$t->login('','password')としても、BA512Rには繋がりませんでした。
済みませんが、お教えください。
(ちなみに、DDNSサイトを利用してサーバ公開の為のものです。)
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 67% (310/456)

その解釈であっていますよ。
Net::Telnet::waitfor()の引数は,単なる文字列のパターンマッチングです。

$t->waitfor("/passwd.*$/");

なら

${"BA512Rから来る文字列"} =~ "/passwd.*$/";

の条件を満たすまで,待ちつづけるってことです。
そして,条件を満たせば次の行,print()で応答を返してやる。

以下と似たようなもの,と思えば分かりやすいでしょうか?
while (<IN>) {
if ($_ =~ "/passwd.*$/")
last;
}
print();
お礼コメント
chrilake

お礼率 70% (76/108)

onosukeさん、ありがとうございました。
お陰さまで、waitforとprintで何とかログインでき、BA512RからWANIPを取り出す事が出来ました。
また宜しくお願いします。
投稿日時 - 2001-12-01 16:16:18
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 67% (310/456)

loginを使わず。 $t->waitfor('/password/'); $t->print($passwd); みたいなのでうまくいきませんかね? ...続きを読む
loginを使わず。

$t->waitfor('/password/');
$t->print($passwd);

みたいなのでうまくいきませんかね?
補足コメント
chrilake

お礼率 70% (76/108)

ご回答ありがとうございます。
実はその後、ヤマハさんのページでwaitforとprintの文を見かけ、やってみましたがうまくいっていません。
logonは使わないようにしました。
waitforに、.*$などの正規表現が使われており、理解に苦しんでいる所です。
Net::Telnetのmanは、まだあまり良く見ていないのですが、waitforの()内の文字を受信するのを待って、printで()内の文字を出力する、という解釈でいいのですよね?
度々恐れ入りますが宜しくお願い致します。
投稿日時 - 2001-11-30 09:20:09
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ