Чтобы запустить vlc
от имени другого пользователя, используйте:
#!/bin/sh
su user -c 'vlc -vvv bigbuck.mp4 --sout "#rtp{dst=99.195.203.99,port=8090,sdp=rtsp://99.195.203.99:8091/test.sdp}" &
Если вам не нужен графический интерфейс, вы можете использовать cvlc
вместо vlc
:
#!/bin/sh
su user -c 'cvlc -vvv bigbuck.mp4 --sout "#rtp{dst=99.195.203.99,port=8090,sdp=rtsp://99.195.203.99:8091/test.sdp}" &
обсуждение
Когда пользователь запускает su - user
в командной строке, он открывает оболочку под учетной записью пользователя. Затем вы можете интерактивно войти в эту оболочку. При написании сценария оболочки с помощью su
хитрость заключается в использовании опции -c
чтобы команда запускалась от имени пользователя.
Рассматривать:
#!/bin/sh
su - user
vlc -vvv bigbuck.mp4 --sout '#rtp{dst=99.195.203.99,port=8090,sdp=rtsp://99.195.203.99:8091/test.sdp}' &
Команда su - user
откроет оболочку входа под учетной записью пользователя. Только после выхода из этой оболочки будет запущена команда vlc
. Это не то, что вы хотите, и поэтому нужна опция -c
.
справки о
Опция -c
для su
задокументирована в man su
:
-c, --command COMMAND
Specify a command that will be invoked by the shell using its -c.
The executed command will have no controlling terminal. This option
cannot be used to execute interractive programs which need a
controlling TTY.