私はecho
にLinux(Centos 6.3)で定義されている変数を試しています。 サーバーにアクセスするために私はphpseclib 2.0
を使用します。PHPシェルアクセスでlinux変数を出力する
パテ(または類似)を使用してアクセスする場合、vfrepc86
ユーザーで、私は次の出力取得しています:私は使用して、PHP(同じユーザーvfrepc86
と接続)と同じことを実行してみてくださいとき
[email protected]!:vfrepc86> echo $USER
vfrepc86
[email protected]!:vfrepc86> pwd
/vfuser1/vfr/abp/vfrepc86
[email protected]!:vfrepc86> echo $WL_HOME
/opt/weblogic1211_new/wlserver_12.1
を次のコード:
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Net/SSH2.php');
$ssh = new Net_SSH2('illin935');
if (!$ssh->login('vfrepc86', '******')) {
exit('Login Failed');
}
echo "---User:---";
echo "<br>";
echo $ssh->exec('echo $USER');
echo "<br><br>";
echo "---Location of run:---";
echo "<br>";
echo $ssh->exec('pwd');
echo "<br><br>";
echo "---Default:---";
echo "<br>";
echo $ssh->exec('echo $WL_HOME'); //my first try, returns nothing
echo "<br><br>";
echo "---Using su:---";
echo "<br>";
echo $ssh->exec('su - vfrepc86 -c \'echo $PATH\''); //tried with su
echo "<br><br>";
echo "---Writing to file:---";
echo "<br>";
echo $ssh->exec('echo $WL_HOME >> temp.txt'); //tried writing to file
?>
私は、次を得る:
---User:---
vfrepc86
---Location of run:---
/vfuser1/vfr/abp/vfrepc86
---Default:---
---Using su:---
standard in must be a tty
---Writing to file:---
私は$WL_HOME
を取得できないことがわかります。スクリプトは同じパスから実行されていますが、上記のように、私もsu
を使ってみましたが、それはstandard in must be a tty
を返します。コマンドがファイルに出力されると、ファイルが空になってしまいます。
よく投票しても問題ありませんが、少なくともコメントは書かれてからほぼ1年後に投票されました。私はそれがよく書かれ、フォーマットされた質問だと思う。ダウン投票が私と他のユーザーの将来の学習のために無意味でない限り、ダウン投票者からのコメントが期待されます。 –