在我的家庭网络上,我想从 server1 远程在 server2 上运行 python 脚本。两台服务器都在家庭网络上。我需要将文件上传到 server2 并运行 python 脚本。python 脚本需要几个小时才能完成,所以我想在 server2 的屏幕内运行它。我正在尝试使用 php 和一些 bash 脚本来实现这一点。
我在服务器 1 上的 php 脚本在同一台服务器上运行 bash 脚本。bash 脚本使用: [ssh -t user@server screen 'sudo python pyth_script.py'] 尝试在 server2 上运行 python 脚本。请注意,我使用的是 -t 选项。bash 脚本还有一个 scp 命令,用于将文件从 server1 复制到 server2。我已经使用密钥来启用从 server1 到 server2 的 ssh 命令,而无需密码。
当我从命令行运行 bash 脚本时,它运行良好。server2 上的屏幕被激活,python 程序在其中运行。我以普通用户、root 和 www-data 身份运行 bash 脚本(php 脚本通过 apache 运行,并且是用户 www-data)。在任何用户下,当从命令行运行时,bash 脚本都会按预期工作。
当我通过 php 脚本运行 bash 脚本(单击触发 php 脚本的 html 表单)时,scp 命令正常工作并且文件被传输,但是 python 脚本没有运行。包含“ssh ... screen ...”的 php 行的输出返回“必须连接到终端。”,但我使用的是 -t 选项,正如我所提到的,bash 脚本在运行时按预期运行从命令行。
任何想法我做错了什么?
使用 Web 界面远程运行 python 脚本的最佳方法是什么?
谢谢,rb3