我正在尝试使用shell_exec()
函数通过PHP执行以下命令:
sudo -u USERNAME -pPASSWORD echo "SOME-STRING" > /dev/tcp/127.0.0.1/64444
但没有任何反应(如果我手动将其复制/粘贴到它工作的终端)。 $output
函数的shell_exec()
中也没有任何内容。
因此,使用该命令,我尝试通过具有sudo权限的其他用户通过TCP发送字符串。
编辑#1:完整的PHP命令如下所示:
shell_exec('sudo -u USERNAME -pPASSWORD echo "RLSET|79-192.168.1.33-0-1" > /dev/tcp/127.0.0.1/64444');
编辑#2:我还检查了phpinfo()
函数和safe_mode is off
,shell_exec()
函数也不在不允许的函数列表中。
编辑#4:我的PHP PATH变量包含以下位置:
的/ usr / local / bin中:在/ usr / bin中:/ bin中
我迷失在这里,任何和所有的帮助都将不胜感激。
答案 0 :(得分:1)
scape你的报价把你的完整命令路径:
shell_exec("sudo -u USERNAME -pPASSWORD echo \"FULL-PATH-COMMAND\" > /dev/tcp/127.0.0.1/64444")
答案 1 :(得分:0)
也许您的二进制文件(sudo
,echo
,...)不在PATH
env变量中:
putenv('PATH', '/bin:/sbin:/usr/bin:/usr/sbin:') // etc...
答案 2 :(得分:0)
你试过在-p之后放一个空格吗?
那应该是
shell_exec('sudo -u USERNAME -p PASSWORD echo "RLSET|79-192.168.1.33-0-1" > /dev/tcp/127.0.0.1/64444');
我刚刚在自己的机器上尝试了一些命令。
我试过
sudo -u USERNAME -p PASSWORD ls
它有效,但当我尝试
时sudo -u USERNAME -pPASSWORD ls
它提供了使用信息。