2013-09-10 2 views
0

Моя проблема заключается в том, что я хочу запустить скрипт из корня, для которого мне всегда нужно входить в root вручную, набрав «su -» в командной строке.Вход через Shell Script

Мой запрос заключается в том, что скрипт, который я выполняю, автоматически вворачивается с помощью root, просто запрашивая пароль. Помоги мне!!!

:::::::::: Script :::::::::::::

if [ "$(whoami)" != "root" ]; then 

echo -e '\E[41m'"\033[1mYou must be root to run this script\033[0m" 

**su - # at this line I want to login as root but it is not working** 

exit 1 

fi 

sleep 1 

if [ "$(pwd)" != "/root" ]; then 

echo -e '\E[41m'"\033[1mCopy this script to /root & then try again\033[0m" 

cd /root 

exit 1 

fi 

sleep 1 

echo -e '\E[36;45m'"\033[1mDownloading Flash Player from ftp.etilizepak.com\033[0m" 

sleep 2 

wget -vcxr ftp://soft:S0ft\[email protected]/ubuntu/ubuntu\ 12.04/adobe-flashplugin=/install_flash_player_11_linux.i386.tar.gz 

cd ftp.abc.com/ubuntu/ubuntu\ 12.04/adobe-flashplugin/ 

sleep 1 

echo -e '\E[42m'"\033[1mUnzipping .tar File...\033[0m" 

sleep 1 

tar -xzf install_flash_player_11_linux.i386.tar.gz 

echo "Unzipping Compeleted" 

sleep 2 

echo -e '\E[42m'"\033[1mCopying libflashplayer.so\033[0m" 

cp libflashplayer.so /usr/lib/mozilla/plugins/ 

::::::::::::::: END ::::::::::::::::::::::::::::::::

ответ

0

Я не уверен, понимаю ли я ваш вопрос, но, полагаю, вы хотите запустить что-то внутри скрипта с привилегиями root - тогда вы shuold используете команду «sudo». Вы также можете отключить ввод пароля, это может быть сконфигурирован в sudoers»файл конфигурации

Некоторые подробнее здесь:. https://unix.stackexchange.com/questions/35338/su-vs-sudo-s-vs-sudo-bash Shell script calls sudo; how do I suppress the password prompt

Существует тонны примеров, Google что-то вроде„примеры линукс SUDO“ ., и вы получите много примеров, как использовать су, SUDO анса команду sudoers

+0

Я отправляю мой сценарий а также любезно проверьте это ... –

+0

Вы должны вырезать все строки, которые должны запускаться как root, и помещать их в другой .sh-файл, а затем в первом скрипте пишите: sudo /path/to/your/script.sh. Аналогичный вопрос здесь: http://stackoverflow.com/questions/1988249/how-do-i-use-su-to-execute-the-rest-of-the-bash-script-as-that-user –

+0

, но в мой сценарий я не могу давать права sudo пользователям все время, потому что этот скрипт используется обычно у разных пользователей. Поэтому, пожалуйста, дайте мне соответствующее решение. –

0

в соответствии с вашими комментариями к моему предыдущему ответу, вот как я это сделать:

Есть два файла в том же каталоге: test.sh

-rwx------ 1 root root 19 Sep 10 13:04 test2.sh 
-rwxrwxrwx 1 root root 29 Sep 10 13:06 test.sh 

Файл:

#!/bin/bash 
# put your message here 
su -c ./test2.sh 

test2.sh Файл:

#!/bin/bash 
echo You run as: 
whoami 
# put your code here 

Результат:

> ./test.sh 
Password:**** 
You run as: 
root 

Если вы хотите, чтобы подавить запрос на ввод пароля для этого сценария только, замените «су -c» с «Суда» и настроить sudoers файл в соответствии с insctructions здесь: https://askubuntu.com/questions/155791/how-do-i-sudo-a-command-in-a-script-without-being-asked-for-a-password