여기 내가실행 2
./execSudoScript.sh --sudoUser root --sudoPwd pass --cmd ls
된 직후 명령을 실행할 때
sudo
#! /bin/sh
# Initialize values of arguments
SUDO_USER=""
SUDO_PWD=""
CMD_OR_SCRIPT=""
if ! options=$(getopt -u -o : -l sudoUser:,sudoPwd:,cmd: -- [email protected])
then
echo "Wrong option given :: $1"
exit 1
fi
set -- $options
while [ $# -gt 0 ]
do
case $1 in
--sudoUser)
SUDO_USER="$2"
shift
;;
--sudoPwd)
SUDO_PWD="$2"
shift
;;
--cmd)
CMD_OR_SCRIPT="$2"
shift
;;
esac
shift
done
if [ "$CMD_OR_SCRIPT" != "" ]; then
if [ "$SUDO_USER" != "" ]; then
if [ "$SUDO_PWD" != "" ]; then
echo $SUDO_PWD | sudo -k -S -u $SUDO_USER $CMD_OR_SCRIPT
else
sudo -u $SUDO_USER -k -S $CMD_OR_SCRIPT
fi
else
if [ "$SUDO_PWD" != "" ]; then
echo $SUDO_PWD | sudo -k -S $CMD_OR_SCRIPT
else
sudo $CMD_OR_SCRIPT
fi
fi
fi
같은 명령을 실행하기 위해 노력하고있어 내 쉘 스크립트 같은 정확한 출력을 제공 sudo를를 사용하는 명령
예상대로 현재 디렉터리의 내용을 출력으로 가져옵니다. 내가
./execSudoScript.sh --sudoUser root --sudoPwd pass --cmd ls /opt
된 직후 명령을 실행하면하지만 난 여전히 대신 /opt
의 내용을 얻는, 현재 디렉토리의 내용을 얻는다. htis를 일으키는 것이 ls
이후의 공간입니까? 이 문제를 어떻게 해결할 수 있습니까?