Primeiro, leia envio de entrada de texto para uma tela desanexada . Você precisa de -p
para direcionar a entrada para a janela da direita. Além disso, o comando não será executado até que você coloque uma nova linha (CR ou LF, o shell interativo executando a tela interna aceita ambos). Isso é:
screen -p 0 -X stuff "script -a -c 'ls -l' /tmp/command.log$(printf \r)" &&
cat /tmp/command.log
Há um segundo problema, que é o de que o comando screen -X stuff …
seja concluído assim que a entrada for inserida na sessão da tela. Mas demora um pouco para executar o comando script
. Quando cat /tmp/command.log
é executado, é provável que script
não tenha terminado; pode nem ter começado ainda.
Você precisará fazer com que o comando executado dentro de screen
produza algum tipo de notificação. Por exemplo, ele pode sinalizar de volta que está concluído, supondo que o shell dentro da Tela esteja sendo executado na mesma máquina que a Tela.
sh -c '
sleep 99999999 &
screen -p 0 -X stuff "\
script -a -c \"ls -l\" /tmp/command.log; kill -USR1 $!
"
wait
cat /tmp/command.log
'