Use expect
, por exemplo,
#!/usr/bin/env expect -f
spawn -noecho ssh localhost "sleep 3; false"
catch wait status
exit [lindex $status 3]
Eu tenho um comando foo
que (por razões que não precisamos entrar) precisa ter um pty alocado, ou seja, foo
é bem-sucedida, mas nohup foo
falha.
Qual é a maneira mais fácil de alocar um arquivo quando não há um? screen -D -m foo
parece um exagero, e não retorna um código de saída (que eu preciso). Salvar para o código de saída, funciona.
Use expect
, por exemplo,
#!/usr/bin/env expect -f
spawn -noecho ssh localhost "sleep 3; false"
catch wait status
exit [lindex $status 3]
Enquanto a resposta do @ thrig provavelmente funcionaria com expect
(e eu inventei o mesmo), eu fiz uma pequena modificação para pty.c
da Programação Avançada no ambiente UNIX® do Stevens para retornar o código de saída se -r
for especificado. O resultado é aqui . Isso parece fazer o truque com o mínimo de barulho.
Tags pty