Cómo ejecutar un cmd de Python dentro de un cmd de bash sobre ssh

Cómo ejecutar un cmd de Python dentro de un cmd de bash sobre ssh

Cuando ejecuto lo siguiente en mi terminal bash, funciona bien.

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

Sin embargo, cuando intento hacer esto a través de ssh, no me da nada. ¿Alguien puede ayudarme a arrojar algo de luz sobre este problema?

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

Respuesta1

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

Tengo la idea de una función/utilidad simple que debería ayudar a evitar la pesadilla de las citas con múltiples comandos integrados como este, estad atentos ;-)

Respuesta2

No estás citando bien. tu comando

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

ejecuta esto en el lado remoto:

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

que es equivalente a

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

que ejecuta python -c print, que imprime una línea vacía. (Nota: helloworldactúa comoeste.)


Para citar correctamente necesitas más barras invertidas. Este:

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

ejecuta lo siguiente en el lado remoto:

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

que es exactamente lo que querías.

Controlaresta pregunta en superusuario. Su objetivo es ayudar en casos similares.


Lo más probable es que no necesites bash -cnada. Este código debería funcionar en un shell local:

python -c "print 'helloworld'"

entonces esto probablemente funcionará:

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

Probablemente, porque el servidor SSH ejecutará el comando usando el shell elegido por meeee como su shell de inicio de sesión. En algunos casos exóticos, es posible que no funcione python -ccorrectamente. Pero como esperas que se ejecute bash -c, también debería ejecutarse.python -c

información relacionada