Recentemente encontrei essa confusão de 'bonecas de aninhamento' com ssh + su + screen + rtorrent, então acho que posso ajudar.
Para alcançar os resultados desejados, você pode usar;
sudo su -c "script /dev/null -c \"screen -r $2\"" $1
A maneira como você está fazendo isso agora só lança screen
após script
ter terminado (via exit
, etc) e não tem nenhum efeito na sua screen
sessão . No método acima, você inicia o comando screen
dentro da script
session ( script -c
). Observe as aspas com escape ( \ ").
Com isso dito, você ainda está fazendo errado. Não faz sentido usar sudo
e su
juntos nesse contexto (não consigo pensar em nenhum contexto correto). A solução é usar um ou outro com base na sua implementação.
-
método sudo (requer um arquivo sudoers configurado corretamente, pode ser usado para ignorar o login):%
sudo -u "$1" "script /dev/null -c \"screen -r $2\""
- método su (requer logon geralmente, útil para root):
su "$1" -c "script /dev/null -c \"screen -r $2\""
Todas essas informações estão disponíveis por meio das man
pages (digite q para sair). Como um novato, acho-os extremamente úteis:
man su; man sudo; man script; man screen
Ou simplesmente peça ajuda ao programa:
su --help; sudo -h; script --help; screen --help
Além disso, se alguém está vindo aqui para receber conselhos de rtorrent, a resposta é:
su ${user} -c "script /dev/null -qc \"screen -dr ${session_name}\""