bash script 에서 sudo command 를 추가하려면
아래와 같은 command 에 대한 script 를 만들려면 어떻게 해야 할까? 여기서 echo 부분은 root 가 아닌 계정으로 실행을 해야 하는 상황이다.sudo /etc/init.d/myprocess start echo "I am $USER, with uid $UID"'
위의 내용을 그대로 가져다 쓰면, 적어도 내 경우에서는 sudo command 부분만 실행하고 끝나버린다.
sudo myscript.sh
그래서 검색을 좀 하고 고민을 했는데 그래서 아래와 같은 방법을 사용해봤다.#!/bin/bash # myscript.sh /etc/init.d/myprocess start sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' sudo myscript.sh
이 방법은 sudo 로 실행해서 다른 user id 를 사용해서 다른 command 를 실행하는 방법이다.
그런데 이것이 python virtualenv 같은 상황에서 쓰기에 적합하지는 않았다. 물론 bash 안에서 다시 activate 를 하고, 실행할 수도 있을 것 같았지만, 일단 접었다.
&&
그러다 다시 검색을 해서 찾아낸 방법은 아래와 같다.&& 를 사용하면, sudo 가 앞의 command 에만 작용하고, 뒤의 command 는 결과만 받아서 바로 동작한다.
sudo /etc/init.d/myprocess start && echo "I am $USER, with uid $UID"'
Reference
- How do I run 'sudo' command inside a script? - Ask Ubuntu
- command line - Run a shell script as another user that has no password - Ask Ubuntu
- bash - When using && and sudo on the first command, is the second command run as sudo too? - Ask Ubuntu
댓글 없음:
댓글 쓰기