não pode executar o comando ssh remoto sem heredoc

4

Não consigo fazer com que este comando funcione:

user@server:~: ssh otherserver bash -ic 'source .profile; some-aliased-command'

Variações que experimentei

user@server:~: ssh -t otherserver bash -ic 'source .profile; some-aliased-command'
user@server:~: ssh -t otherserver "bash -ic 'source .profile; some-aliased-command'"
user@server:~: ssh -t otherserver "bash -ic source .profile; some-aliased-command"
user@server:~: ssh otherserver bash -ic 'source .profile; some-aliased-command'
user@server:~: ssh otherserver "bash -ic 'source .profile; some-aliased-command'"
user@server:~: ssh otherserver "bash -ic source .profile; some-aliased-command"

Geralmente, obtenho uma variação desses erros:

bash: cannot set terminal process group (-1): Invalid argument
bash:  no job control in this shell
stdin: is not a tty
bash: some-aliased-command: command not found

Mas assim, funciona:

user@server:~: ssh otherserver bash -i << EOF
source .profile
some-aliased-command
EOF

Na verdade, quando eu executo isso:

ssh -t otherserver 'bash -ic "source ~/.profile; alias"'

Ele lista todos os aliases, incluindo o some-aliased-command que eu quero executar.

Eu tentei vários tipos de variações com quoutes simples, duplos e com escape, mas estou preso e só funciona com a versão heredoc.

Como faço para que funcione sem o heredoc (como um one-liner)?

    
por Willem D'Haeseleer 15.06.2015 / 01:01

1 resposta

1

Mesma resposta que a anterior, mas adicione +m para correção de problema de controle de trabalho:

ssh otherserver "bash -ic +m 'source .profile; some-aliased-command'"
    
por 17.06.2015 / 12:23

Tags