簡體   English   中英

phpseclib SSH2不執行Shell腳本

[英]Phpseclib SSH2 not executing Shell Scripts

當前正在嘗試創建一個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");

使用sudo -S echo -ing您的密碼sudo -S允許您通過管道將密碼傳遞到sudo shell腳本執行中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM