PHPのfsockopenに関する質問です。


やりたいこと:
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ポイント差し上げます。
よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/03/06 00:36:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント100pt

下記のclassを利用して接続できます。

いちおうfsockopenを使っているということで、ご参考まで。

id:jumpe

ありがとうございます。

2008/03/06 00:34:29
id:kidd-number5 No.2

回答回数117ベストアンサー獲得回数15

ポイント100pt

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();
?>
id:jumpe

ありがとうございます。

記載いただいたソースでは残念ながら接続できませんでした・・・・。

最終的に、プロンプトの判定を厳密に行い、接続することに成功しました。

では締め切ります。

2008/03/06 00:34:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません