Para executar vlc
como outro usuário, use:
#!/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}" &
Se você não precisar da interface gráfica, considere usar cvlc
no lugar de 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}" &
Discussão
Quando alguém executa su - user
na linha de comando, ele abre um shell na conta do usuário. Você pode entrar interativamente nesse shell. Ao escrever um script de shell com su
, o truque é usar a opção -c
para que o comando seja executado como usuário.
Considere:
#!/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}' &
O comando su - user
abrirá um shell de login na conta do usuário. Somente depois que o shell sair, o comando vlc
será executado. Isso não é o que você quer e é por isso que a opção -c
é necessária.
Documentação
A opção -c
para su
está documentada em 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.