【问题标题】:execution of ssh in python script which is called from php exec command在从 php exec 命令调用的 python 脚本中执行 ssh
【发布时间】:2014-09-09 18:10:56
【问题描述】:

我有一个调用 python 脚本的 PHP 代码。在 python 脚本中,我使用 ssh 连接到远程系统并运行命令。当 python 代码独立执行时,一切看起来都很完美,但是当我从 php 调用它时,无法建立连接,它会在浏览器中打印一个空字符串作为输出。

这是我的 php 脚本

<?php
$command = escapeshellcmd('python p.py');
$output = shell_exec($command);
echo $output;
?>

Python脚本(p.py)如下

import subprocess

proc = subprocess.Popen(["ssh remotehost uptime"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print "program output:", out

当我执行时

python p.py

程序成功打印结果。当执行 php 脚本时,浏览器只会显示

程序输出:

这表明 python 脚本被执行,并且当通过 php 调用时,问题出在 ssh 连接中。 任何人都可以建议我一种使其正常工作的方法吗?

编辑:

当我的 python 代码有数据库连接时,会出现类似的问题。 冲浪后我发现在 /etc/sysconfig 我必须给

setsebool -P httpd_can_network_connect_db=1

对于通过 ssh 的连接是否有任何类似的问题需要考虑??

【问题讨论】:

    标签: php python ssh remote-server


    【解决方案1】:

    尝试在您的 php 代码中使用此代码。注意:该文件应具有 .php 扩展名。

     <html>  
     <head></head>  
     <body>  
     <H3>Executing...</H3>  
     <?php exec("p.py"); ?>  
     <H3>Completed...</H3>  
     </body>  
     </html>  
    

    【讨论】:

    • :当我使用 exec 时也会出现同样的问题,浏览器只是打印正在执行和完成,而不打印通过 php 给出的命令的结果。我已经测试了将 exec 的输出存储到变量和也打印它。它没有工作
    猜你喜欢
    • 1970-01-01
    • 2018-03-29
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多