【问题标题】:Python - String deformats when running via SSHPython - 通过 SSH 运行时字符串变形
【发布时间】:2013-11-21 00:11:24
【问题描述】:

我需要通过 Fabric API (ssh) 运行一些 bash 命令。

我的 Python 模块中有以下字符串:

newCommand = command + "'`echo -ne '\\015'"

当我直接在 Python 中打印此字符串时,输出是预期的:

command'`echo -ne '\015'

但是,如果我尝试通过 Fabric API 运行此命令,该命令会以某种方式修改为:

/bin/bash -l -c "command'\`echo -ne '\015'"

注意“回声”之前的“\”。为什么会这样? '\' 破坏了我的命令,我无法成功运行该命令。

ps:前缀“/bin/bash -l -c”是预期的,因为这就是 Fabric 与 SSH 一起工作的方式

【问题讨论】:

  • 字符串中的命令应该做什么?
  • 我需要在后台启动 MySQL 进程。 Nohup 不适用于 Fabric(对我来说仍然是个谜)。所以我正在使用屏幕。使用 newCommand 我将 MySQL 启动命令发送到我之前创建的一个屏幕。 'echo -ne '\015' 部分是模拟按下的 ENTER 键。

标签: python linux bash ssh


【解决方案1】:

这不是一个有效的 shell 命令:

command'`echo -ne '\015'

即使您添加了缺少的反引号和单引号,这也与编写“命令”并按 Enter 完全不同。

您的命令将在其中运行的上下文基本上就是您使用 ssh 并粘贴命令时所获得的内容:

clientprompt$ ssh host
Welcome to Host, User
hostprompt$ <COMMAND HERE>

您应该集中精力找到一个可以执行您想要的操作的命令,而不是而不是一系列您可以编写的按键(这不是 ssh 的工作方式)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多