我有一個shell腳本makedir.sh
,如下所示。使用ssh2_exec遠程執行sh腳本時PHP不工作
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
我已經給權限的用戶testuser的使用sudo來執行shell腳本,但沒有問password.For這個我添加了以下行/etc/sudoers
文件,
testuser ALL=(ALL) NOPASSWD: ALL
和它的作品罰款,我可以使用sudo運行命令,但不需要詢問密碼。上面的shell腳本也可以正常工作,不需要詢問密碼,在/usr/local
內部創建目錄testdir
。我的問題從這裏開始。我想從php
文件運行這個shell腳本。在當前場景中,shell腳本位於IP地址爲10.3.2.0的遠程計算機上。以下是我的php
代碼,但在運行此php代碼時,它不會在/usr/local/
內部創建任何目錄(testdir)。請告知,因爲我很初學PHP
。
PHP代碼
<?php
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect("10.3.2.0", "22")))
{
echo "fail: unable to establish connection";
}
else
{
if(!ssh2_auth_password($con, "testuser", "abcdef"))
{
echo "fail: unable to authenticate ";
}
else
{
$stream = ssh2_exec($con, "./makedir.sh");
stream_set_blocking($stream, true);
$item = "";
while ($input = fread($stream,4096)) {
$item .= $input;
}
echo $item;
}
}
?>
SHELL SCRIPT - makedir.sh
(駐留在10.3.2.0 - 與上述相同外殼腳本)
#!/bin/sh
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
感謝。