PHPのSSH接続でコマンドが実行されない。


おおまかに、下記のようなコードでSSH接続して、コマンドで命令を出しているつもりなのですが、実行されていないのか、結果を読み取れないのか、結果が表示されません。自分としては、fwirte()でコマンドを発行して、fgets()で読みって、それをprint()しているつもりなのですが…。

fgets(),print()した結果は、なぜかfwite()で発行したコマンドが(制御コードが挟まれて)そのまま残っています。

よろしくお願いします。

$connection = ssh2_connct();
$stream = ssh2_shell($connection);
fwirte($stream,"show running-config");
sleep(1);
$output = fgets($stream);
print($output);

回答の条件
  • 1人2回まで
  • 登録:2009/06/12 17:30:32
  • 終了:2009/06/12 21:36:52

回答(1件)

id:hijk05 No.1

hijk05回答回数1307ベストアンサー獲得回数232009/06/12 17:46:49

ポイント60pt

たぶん、エコーバックする設定になってるので、発行したコマンドがそのまま帰ってくるのだと

思います。

・接続先を違うLinuxマシンとかにして、現象が変わるかどうかをみる

id:rapuntuleru

回答ありがとうございます。

なるほど。送った文字列が返ってくるのはエコーというものなのですね。

2009/06/12 17:56:05
  • id:rapuntuleru
    >preg_replaceの構文は質問文にある応答文で試したものでしたが
    >抜き出しのパターンにミスがあったという事でしょうか?

    抜き出したいものの一つが
    [24;41H
    のようなものだったので(http://q.hatena.ne.jp/1244732973)
    preg_replace("/\[.*?H/","",$output)
    のようにやったら、一応はきれいに表示されました。

    >それはエコーです。

    なるほど。初めて知ったのですがこれがリモートエコーというものですね。

    >それとマッチするものを削除するようにしてみてください。

    これも、制御コードを除くのと同じように、ということですよね?(まだやってませんが)ただ、除いてもコマンドの結果は返ってこないように思うのですが、コマンドの結果というのはどうやったら取れるのでしょう…?
  • id:rapuntuleru
    >ブラウザでこの質問を見たときに、ご自身の質問文のなかで
    >[24 や [25 の左側に□になっているところがありますでしょ?

    あ、ありました。失礼しました。

    うーん、なかなか難しいようですね。ですが、やれるところまではやってみようと思います。
  • id:rapuntuleru
    >コマンドの結果を順次得るという事と、制御コードに対応するという事は
    >それぞれ分けて考えないと混乱します。

    なるほど。たしかにそうですね。
    今度は、コマンドの結果を得たい、ということになると思います。

    >fgets ではなく fread でチャレンジしてみてください。

    やってみましたが、fgetsと同じく、fwrite()で送信した文字列がエコーで返ってきているだけでした…。
    コマンドが実行されていないのでしょうか…。fwite()に渡すコマンドは"show running-config"などターミナルエミュレータ上で打つコマンドと同じ文字列を入れているだけなのですが、何か他にいるのでしょうか…。
  • id:rapuntuleru
    "show running-config
    "
    のように最後に改行させたら、一応実行はできたようです…。
    が、結果を見るとスイッチ側にコマンドが届いた時点でメッセージがぐちゃぐちゃになっているのか、制御コードが挟まれたり途中で切れたりしているようで、うまくは実行できませんでした。
    送り方か何かがまずいのでしょうか…。
  • id:rapuntuleru
    一応、実行はできたので、今回の質もは締め切らせていただきます。
    ありがとうございました。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません