[컴][linux] bash 에서 sudo 와 일반적인 command 를 함께 사용해서 script 를 만드는 방법

bash 에서 sudo 와 다른 user id 로 command 를 실행 하는 스크립트 / bash script




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

  1. How do I run 'sudo' command inside a script? - Ask Ubuntu
  2. command line - Run a shell script as another user that has no password - Ask Ubuntu
  3. bash - When using && and sudo on the first command, is the second command run as sudo too? - Ask Ubuntu



댓글 없음:

댓글 쓰기