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

このQ&Aのポイント
  • RHL7のperlのプログラムでモジュールを使い、ルータ(BA512R)へtelnet接続し、WAN側のIPアドレスを取得しようと思っています。
  • プログラムの問題のある行は、$t->login('user','password');のようです。
  • BA512Rは、passwordをいきなり聞かれ、それでログインできます。この辺が問題なのでしょうか。
回答を見る
  • ベストアンサー

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

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

  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

その解釈であっていますよ。 Net::Telnet::waitfor()の引数は,単なる文字列のパターンマッチングです。 $t->waitfor("/passwd.*$/"); なら ${"BA512Rから来る文字列"} =~ "/passwd.*$/"; の条件を満たすまで,待ちつづけるってことです。 そして,条件を満たせば次の行,print()で応答を返してやる。 以下と似たようなもの,と思えば分かりやすいでしょうか? while (<IN>) { if ($_ =~ "/passwd.*$/") last; } print();

chrilake
質問者

お礼

onosukeさん、ありがとうございました。 お陰さまで、waitforとprintで何とかログインでき、BA512RからWANIPを取り出す事が出来ました。 また宜しくお願いします。

その他の回答 (1)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.1

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

chrilake
質問者

補足

ご回答ありがとうございます。 実はその後、ヤマハさんのページでwaitforとprintの文を見かけ、やってみましたがうまくいっていません。 logonは使わないようにしました。 waitforに、.*$などの正規表現が使われており、理解に苦しんでいる所です。 Net::Telnetのmanは、まだあまり良く見ていないのですが、waitforの()内の文字を受信するのを待って、printで()内の文字を出力する、という解釈でいいのですよね? 度々恐れ入りますが宜しくお願い致します。

関連するQ&A

  • telnet使用時に求められる、loginとpasswordについて

    現在DOSプロンプトの勉強をしている yukidesuyoと申します。 質問ですが、 自宅LANのパソコンにtelnetで接続しようとしたところ、 loginとpasswordを入力しても入れず困っています。 ユーザアカウントの名前とパスワードを入力すると 入れるのかなと思い、入力してもpasswordがはじかれます。 ここに入力するloginとpasswordとは何ですか? 返答のほどよろしくお願いします。

  • telnet接続が出来ない

    telnet接続が出来なくなってしまい、困っています。 telnetのサーバとなっているのはCentOS5.2で それまでは、どのクライアントPCからも接続できていたのですが、 今では特定のクライアントPC(1台のみ)からしか telnet接続が行えません。 telnet接続できるPCからtelnetを実行すると、 すぐに CentOS release 5.2 (Final) Kernel 2.6.18-92.el5 on an i686 login:  が出力されるのですが、 接続できなくなったPCからでは、 CentOS release 5.2 (Final) Kernel 2.6.18-92.el5 on an i686 が表示されてから、しばらくしてから login:  が表示され、ユーザとパスワードを入力すると、 しばらく経って、 login timed out after 60 seconds となり、ホストとの接続が遮断されてしまいます。 telnetのサーバの/var/log/messageを確認してみると クライアントPCからのアクセスがあったことは確認できるのですが、 原因がつかめず困っています。 何か、心当たりのある方いらっしゃいましたら、ご教授願います。

  • Net::Telnetでタイムアウト時間が短い

    タイムアウト時間を確認するのに、以下のプログラムを実行したのですが、存在しないホストを指定してプログラムを実行しても3秒程度でタイムアウトしてしまいます。指定したタイムアウト時間(以下のプログラムでは100秒)待つにはどうすればよろしいでしょうか? お願いします OS:CentOS 5.1 perl: 5.8.8 Net-Telnet-3.03 ===== プログラム ===== #!/usr/bin/perl use Net::Telnet (); my $result; my $h = 'aa.bb.cc.dd'; my $u = 'my_name'; my $pass = 'my_pass'; my $p = '/[\$%#>] $/'; my $t = new Net::Telnet (Timeout => 100, Prompt => $p, Errmode => "return"); $result = $t->open($h); unless($result) { print "open ng\n"; exit; } else { print "open ok\n"; $t->login($u, $pass); print "login ok\n"; $t->print("exit"); }

    • ベストアンサー
    • Perl
  • perlでtelnetクライアント

    perlで、ソケットを使って、telnet(ポート23)クライアントを作ろうと思いました。 telnet接続すると、まず最初にサーバー側から"login: "とプロンプトが出力されるので、それを読もうとしたところ、プロンプトなので改行が来ないためか、待ち状態になりました。 while(<socket>) print $_; while(read(socket, $c, 1) print $c; の2パターン試しましたが、どちらも1文字も読めませんでした。 改行が来なくても、読込みができるテクニックはありますでしょうか。 perlのスキルは、他人のを参考にしないと作れない程度の素人同然です。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • telnetでログインできない

    HP-UXよりwindows2003サーバーへtelnet接続の自動化を考えています。 色々なサイトを参考にし、シェルには下記のように記載しました。 ※ユーザID・・・aaa ※パスワード・・bbb 【user.sh】 #!/bin/csh sleep 10; echo "aaa" sleep 10; echo "bbb" 【login.sh】 #!/bin/csh sh user.sh | telnet ※ip しかし、実行結果は下記の通りとなり、ログインはできません。 ----------------------------------------------------- Trying... Connected to ※ip Escape character is '^]'. Local flow control off Welcome to Microsoft Telnet Service login: aaabbb Session timed out. Telnet Server has closed the connection Connection closed by foreign host. ----------------------------------------------------- 手動で実行する場合はもちろんログインすることはできます。 手動実行時のエンターキーが押されていない状態です。 HP-UX間では上記方法で問題なくログインできます。 windowsサーバーのtelnetの設定が問題なのでしょうか? ちなみに、windowsサーバーのtelnetの設定は下記の通りです。 ----------------------------------------------------- Microsoft Telnet> display エスケープ文字は'ctrl+]'です。 自動認証(NTML 認証)を使わない ローカル エコー: オフ ニューライン モード - リターン キーで CR および LF を送信します 現在のモード: コンソール 使用する端末の種類をネゴシエートする 優先する端末の種類は ANSI です ----------------------------------------------------- 他に情報がいる場合は教えてください。

  • ttlコマンドでのtelnet接続について

    teratermのマクロ機能を使用してtelnet接続の自動化をしたいと考えています。 いろいろなサイトを見て ****************************************** HOSTADDR = '接続先IPアドレス' USERNAME = 'ユーザ名' PASSWORD = 'パスワード' COMMAND = HOSTADDR strconcat COMMAND ':23 /nossh /T=1' connect COMMAND wait 'login:' sendln USERNAME wait 'Password:' sendln PASSWORD end ****************************************** でできることができたのですが、使用者にアカウント名、パスワード名を知られたくありません。 【やりたいこと】 (1) 1. ttlファイルを実行する 2. 接続先のIPアドレスを入力する 3. 自動でtelnet接続する。 (2) 上記に加えて使用者にttlファイルの中身を参照されたときにアカウント、パスワードがわからないようにする。 ⇒暗号化されたファイルを読み込むようにする? (1)-2についても実装できていません。 アドバイスをお願いします。

  • telnetコマンドを入れても、パスワードを聞いてこない

    判る方おりましたら教えて下さい。 最近Compaqの端末を会社で数台購入し、会社のネットワーク上に設定しました。OSはWinXPです。 telnetを使用しWebサーバにログインしようと思います。 コマンドプロンプトでtelnetと入力するとlogin画面が出ますが、ログイン名を入力し、EnterしてもPasswordを聞いてきません。 他の新規端末もおなじです。 既存の端末のWinXPでは正常に動作します。 設定、又は環境等に問題があるのでしょうか?切り分け等で原因がわかるのであれば、その作業方法を教えてください。 以上よろしくお願いいたします。 

  • telnetについて

    これから仕事でtelnetを使い、サーバ管理を行う事になるのですが、TCI/IPについての本を読んでもいまいちピンと来ません。 実際サーバ(FreeBSD)を使って色々としてみたのですが。。。perl言語はともかくUNIX系コマンドに疎いのでディレクトリ間を行ったり来たりや、ファイルやディレクトリの中を見たり作ったり消したり、ユーザを作ったり消したりパスを変えたり程度しか出来なく、困っております。 検索で『telnetの使い方』なんて検索してみると、各プロバイダ様の設定うんぬんといったページにしか飛べないのです(検索下手) 『telnetで一体何ができるのか/どう便利なのか』という事と、オススメの参考資料、URL等ありましたらぜひ教えて下さいです。 ログを調べる際はどうしたらいいだとか、サーバ管理に必要最低限な知識だけで結構です。。。 ちなみに、私の使用しているOSは窓2000です。telnet自体はOSに左右されないものだと認識しておりますのであまり関係ないですかね(^^; 他力本願で申し訳ないのですが、どなたかご回答よろしくお願い致しますm(_ _)m

  • telnet及びteratermの接続について・・

    最近、ネットワークを勉強し始めまして、 リモート接続に苦戦しています。 デスクトップからノートパソコンに、 リモート接続したいのですが、接続がうまくいきません。 環境としまして、 デスクトップ:win7 ・「ファイアーウォール」ーTelnet、Telnetサーバリモート管理 ・「Windowsの機能」ーTelnetクライアント、Telnetサーバ ・「管理ツール」ー手動、開始 ノート:Vista ・「ファイアーウォール」ーTelnet、 ・「Windowsの機能」ーTelnetクライアント、Telnetサーバ ・「管理ツール」ー手動、開始 を設定いたしまして、 telnet 192.168.2.xxx と入力し、パスワード送信の(Y/N) の選択で y login: [接続先ホスト名] password: [パスワード] を入力、 Telnet Server has closed the connection ホストとの接続が切断されました。 と出力され、telnetがはじかれるのですが webなどを検索しても解決策が見つかりません。 他にも何か設定など、する事はありますか? 宜しくお願いします。

  • telnet接続もう一息!

    以下の操作をしても接続が出来ません。 もう一息と思うのですが、助力お願いいたします。 管理ツール→サービス→telnetを開始 [管理ツール]-[ローカル セキュリティ ポリシー]「ローカル ポリシー」の「セキュリティ オプション」グループにある「アカウント:ローカル アカウントの空のパスワードの使用をコンソール ログオンのみに制限する」の値をデフォルトの「有効」から「無効」に変更して再起動! tlntadmn config sec=-NTLM tlntadmn VALUESTAR -u m -p password tlntadmn stop tlntadmn start 以下、telnetサーバへログイン Welcome to Microsoft Telnet Service login: m password: Logon failure: unknown user name or bad password.

専門家に質問してみよう