やりたいこと:
Aサーバ(Linux・redhat系)のPHPプログラムから、Bサーバ(Linux・redhat系)に対してtelnet(23番ポート)で自動ログイン、コマンド実行し結果を取得したい。
現在の状況:
一通り検索して、いろいろと試しましたがいずれも失敗(反応がない)します。
Bサーバでtcpdumpを実行すると、23番ポート宛にリクエストが来て、ID/PWも受信しているように見えるんですが、Aサーバ側でコマンドの出力も取得できませんし、/var/log/messagesにはログイン履歴も残っていません。
もうお手上げなので、サンプルスクリプトを記載していただきたいです。条件は以下です。
・fsockopenを使い、telnetで23番ポートへ接続。
・コマンドを実行し結果を取得する(結果が1行の場合と複数行の場合の2つ)
・コネクションをクローズ
当方で動作確認が取れた、1番目の完璧な回答には、1000ポイント差し上げます。
よろしくお願いします。
PHP5のソースのようですが
http://jp2.php.net/manual/ja/function.fsockopen.php
以下でどうでしょうか。
After several days of trying to get telnet going from php 5.2, i've come up with http://www.dali.net.nz/Telnet.class.php.txt
based on the one found at http://cvs.adfinis.ch/cvs.php/phpStreamcast/telnet.class.php
example usage:
<?php $telnet = new Telnet('telnethost.example.com'); $telnet->login('username', 'password'); echo $telnet->exec('ifconfig') . "\n"; echo $telnet->exec('ls -lh') . "\n"; $telnet->disconnect(); ?>
ありがとうございます。
記載いただいたソースでは残念ながら接続できませんでした・・・・。
最終的に、プロンプトの判定を厳密に行い、接続することに成功しました。
では締め切ります。
ありがとうございます。