gpt4 book ai didi

php - phpseclib SSH2不执行Shell脚本

转载 作者:行者123 更新时间:2023-12-02 14:07:21 30 4
gpt4 key购买 nike

当前正在尝试创建一个PHP Web应用程序以运行各种Shell脚本来处理网站生成和删除操作。

这是我的 deletePropertyProcess.php 的摘录:

$ssh = new Net_SSH2($server);

if(!$ssh->login("username", "password")) {
$result['result'] = 'ERROR';
$result['message'] = 'Login failed to server ' . $server;
} else {
$result = $ssh->exec("cd /var/www/sites ; sudo /usr/local/bin/delete_property_folder.sh -c $comp -p $prop");
echo $result;
}

其中 delete_property_folder.sh是我的远程服务器上的bash脚本,而 -c $comp -p $prop是我的脚本选项/参数。

有趣的是,所有这些都可以通过Putty完美地工作。通过Ajax从PHP运行此功能会返回Shell脚本的退出状态和Ajax的预期输出,但是我的Shell Script处理的所有更改均未实际应用。

就像我说的那样,这是从Putty完美运行的,所以我怀疑问题是Shell脚本,但无论如何这里都是这样:
#!/bin/bash

function fix_file_permissions() {
chown -Rf username:username $1/$2

echo $?;
}

function delete_specified_folder() {
rm -rf $1/$2

echo $?;
}

##Main Script Body
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"

case $key in
-c|--company)
COMPANY="$2"
shift
shift
;;
-p|--property)
PROPERTY="$2"
shift
shift
;;
*) #unknown option
POSITIONAL+=("$1") #save it in an array for later
shift
;;
esac
done
set -- "${POSITIONAL[@]}" #restore positional parameters

PERMISSIONS_FIXED=$(fix_file_permissions $COMPANY $PROPERTY)
if [ $PERMISSIONS_FIXED -eq 0 ]; then
FOLDER_DELETED=$(delete_specified_folder $COMPANY $PROPERTY)
echo $FOLDER_DELETED
exit
fi
echo 1

在这一点上,任何建议都是有用的。让我知道是否需要更多信息。

最佳答案

通过使用以下命令通过--STDIN向Shell脚本的完整路径提供sudo密码,我设法使其正常工作:

$result = $ssh->exec("cd /var/www/sites; echo 'password' | sudo -S /usr/local/bin/delete_property_folder.sh -c $comp -p $prop");
echo-使用 sudo -S设置密码可以让您通过管道将密码传递到sudo shell脚本执行中。

关于php - phpseclib SSH2不执行Shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46835159/

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