人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: jumpe
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:23 Linux PHP RedHat tcpdump
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●100ポイント

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

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

◎質問者からの返答

ありがとうございます。


2 ● kidd-number5
●100ポイント

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();
?>
◎質問者からの返答

ありがとうございます。

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

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

では締め切ります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ