gpt4 book ai didi

php - 使用 php shell 访问打印 Linux 变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:02 25 4
gpt4 key购买 nike

我正在尝试echo Linux (Centos 6.3) 中定义的变量。为了访问服务器,我使用 phpseclib 2.0

当使用 PuTTY(或类似的)以 vfrepc86 用户访问时,我得到以下输出:

vfrepc86@illin935!:vfrepc86> echo $USER
vfrepc86
vfrepc86@illin935!:vfrepc86> pwd
/vfuser1/vfr/abp/vfrepc86
vfrepc86@illin935!:vfrepc86> echo $WL_HOME
/opt/weblogic1211_new/wlserver_12.1

当我尝试使用 PHP 运行相同的内容时(使用同一用户 vfrepc86 连接),使用以下代码:

<?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 必须是 tty。将命令打印到文件没有帮助,因为文件变空。

最佳答案

NET_SSH2 不请求交互式 shell,因此您的 .profile 不会被执行。这就是 $WM_HOME 未定义的原因。

使用 PECL ssh2 扩展代替 phpseclib,它有一个函数 ssh2_shell请求交互式 shell。

关于php - 使用 php shell 访问打印 Linux 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com