以下のようなシェルスクリプトがありmakedir.sh
ます。
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
ユーザー testuser に、sudo を使用してシェル スクリプトを実行する権限を与えましたが、パスワードを要求する必要はありません。このために、/etc/sudoers
ファイルに以下の行を追加します。
testuser ALL=(ALL) NOPASSWD: ALL
そして、sudoを使用してコマンドを実行できましたが、パスワードを要求せずに問題なく動作しました。上記のシェル スクリプトも、パスワードを要求せずに正常に動作し、testdir
内にディレクトリを作成します/usr/local
。私の問題はここから始まります。このシェル スクリプトをファイルから実行したいと考えていphp
ます。現在のシナリオでは、シェル スクリプトは IP アドレス 10.3.2.0 のリモート マシンに存在しています。以下は私のphp
コードですが、このphpコードを実行している間、内部にディレクトリ(testdir)を作成していません/usr/local/
。超初心者なのでアドバイスお願いし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
'
ありがとう。