Eu estou tentando executar um comando como um usuário diferente, mas dentro de uma tela desanexada e não consigo obter a sintaxe muito bem. Se eu dividir os comandos, posso fazê-los funcionar, mas, quando os reuni, nada acontece.
O que estou tentando
COMMAND='COUNTER=0; while [ $COUNTER -lt 10 ]; do echo Count: $COUNTER; let COUNTER=COUNTER+1; sleep 15; done'
if [ $USER_CURRENT = $USER_RUN_AS ]; then
screen -dmS $REMOTE_REPO_NAME -c "$COMMAND 2>&1 >> $LOG_FILE_URI"
else
# This works, but I would like it to run in detached screen
# sudo su -s /bin/bash $USER_RUN_AS -c " $COMMAND 2>&1 >> $LOG_FILE_URI "
# Tried piping screen to the sudo command
# screen -dmS $REMOTE_REPO_NAME $COMMAND | sudo -S su -s /bin/bash $USER_RUN_AS 2>&1 >> $LOG_FILE_URI
# Tried passing the command to screen
screen -dmS $REMOTE_REPO_NAME -c "$COMMAND 2>&1 >> $LOG_FILE_URI | sudo -S su -s /bin/bash $USER_RUN_AS"
fi
é tudo o que você precisa. Basta executar o sudo dentro sua tela. -c mudar para a tela é "ler arquivo de configuração". Isso provavelmente não é o que você quer.
fonte