Como executar um cmd python dentro de um cmd bash sobre ssh

Como executar um cmd python dentro de um cmd bash sobre ssh

Quando executo o seguinte em meu terminal bash, ele funciona bem.

$ bash -c "python -c \"print 'helloworld'\""---> olá mundo

No entanto, quando tento fazer isso através do ssh, não recebo nada. Alguém pode ajudar a esclarecer esse problema?

$ ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""--> nada

Responder1

ssh [email protected] "$(cat <<'EOT'
bash -c "python -c \"print 'helloworld'\""
EOT
)"

Eu tenho a ideia de uma função/utilitário simples que deve ajudar a evitar o pesadelo de citações com vários comandos incorporados como este, fique ligado ;-)

Responder2

Você não está citando certo. Seu comando

ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""

executa isso no lado remoto:

bash -c "python -c "print 'helloworld'""

o que equivale a

bash -c "python -c print" 'helloworld'

que é executado python -c print, que imprime uma linha vazia. (Nota: helloworldage comoesse.)


Para citar corretamente, você precisa de mais barras invertidas. Esse:

ssh [email protected] "bash -c \"python -c \\\"print 'helloworld'\\\"\""

executa o seguinte no lado remoto:

bash -c "python -c \"print 'helloworld'\""

que é exatamente o que você queria.

Verificaresta pergunta no superusuário. Destina-se a ajudar em casos semelhantes.


Você provavelmente não precisa bash -cde nada. Este código deve funcionar em um shell local:

python -c "print 'helloworld'"

então isso provavelmente funcionará:

ssh [email protected] "python -c \"print 'helloworld'\""

Provavelmente porque o servidor SSH executará o comando usando o shell escolhido por meeee como shell de login. Em alguns casos exóticos, pode não funcionar python -ccorretamente. Mas como você espera que ele seja executado bash -c, ele também deverá ser executadopython -c

informação relacionada