从 python Fabric 执行远程 bash 命令时“转义”$

2024-03-27

所以我尝试通过 python Fabric 脚本自动设置 arch linux 实例,如下所示:

from fabric.api import run, sudo

def server_setup_communityrepo():
    run('echo \'echo "[archlinuxfr]" >> /etc/pacman.conf\' | sudo -s')
    run('echo \'echo "Server = http://repo.archlinux.fr/$arch" >> /etc/pacman.conf\' | sudo -s')
    run('echo \'echo " " >> /etc/pacman.conf\' | sudo -s')
    sudo('pacman -Syy yaourt --noconfirm')

问题出现在第二个run()由于 $ 符号而调用$arch。此结构函数在第 2 行失败,因为结构将 $ 后跟字符串识别为配置变量。但我实际上希望 $arch 被理解为文字

echo 'echo "Server = http://repo.archlinux.fr/$arch" >> /etc/pacman.conf'在 bash shell 中调用。

我如何“摆脱”这种结构怪癖并将 $arch 指定为要写入我的 pacman.conf 文件的文字?


使用带单引号的 echo。这将防止外壳膨胀$arch.

run('echo \'Server = http://repo.archlinux.fr/$arch\' | sudo -s tee -a /etc/pacman.conf')

这应该相当于

echo 'Server = http://repo.archlinux.fr/$arch' | sudo -s tee -a /etc/pacman.conf

快速测试:

>>> import os
>>> os.system('echo \'Server = /foo/$arch\' ')
Server = /foo/$arch
0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 python Fabric 执行远程 bash 命令时“转义”$ 的相关文章

随机推荐

  • 将整个 *ui 文件加载到另一个 *.ui 文件的框架/小部件中

    我正在为家庭项目开发一个小型用户界面 我使用 QT Designer 创建了一个 ui 文件 这是我的主窗口 带有一些导航按钮 标签等 现在 当我单击导航按钮时 我正在努力在主窗口的框架或小部件中加载另一个 ui 例如内容 我正在使用 py
  • jhipster细粒度授权,删除基于ROLE的授权

    我一直在寻找如何删除基于角色的授权并将其替换为细粒度授权 我所说的细粒是指 所有方法都有一个 PreAuthorize isAuthorize GETCLIENT 或直接 IsAuthorize GETCLIENT 如果用户在授权列表中有G
  • 删除孤立行的优雅方法?

    我有一个表 其中包含大量包含客户 ID 的历史记录条目 有一个单独的客户表 有时 某些客户条目会被删除 有没有一种简单的方法 无需循环遍历每个历史记录条目 即可删除历史表中客户 ID 不再存在的所有行 因为客户行已被删除 delete fr
  • 在 bevy-engine 中处理许多精灵的最快方法

    我正在使用 Rust 和 BevyEngine 构建元胞自动机可视化 游戏 目前 在初始化世界时 我为每个单元格生成一个精灵 在每次更新中 精灵的颜色都会根据它是活着还是死了而改变 for grid pos mut color mat in
  • Ember CLI 实时重新加载不工作

    我见过其他类似的问题here https stackoverflow com questions 25439380 live reload not working with ember cli and here https stackove
  • 加强托管线程和操作系统线程之间的关系(CUDA 用例)

    Problem 我正在尝试创建一个与 net 良好集成的 CUDA 应用程序 设计目标是拥有多个可以从托管代码调用的 CUDA 函数 数据还应该能够在函数调用之间保留在设备上 以便可以将其传递给多个 CUDA 函数 重要的是 每个单独的数据
  • 导入某种语言字母表中的所有字母

    是否可以将某种语言 土耳其语 波兰语 俄语等 的字母表中所有可能的字母 小写 大写等 导入为 python 列表 有特定的模块可以做到这一点吗 你的问题与一个更大的问题有关 某些语言的字母表如何存储在计算机中 它们如何表示 以及 最终 如何
  • 如何仅在服务器调用 PHP 脚本时运行它

    我有一个 PHP 脚本 只有在服务器本身调用它时才会运行 像这样 form submit 运行 AJAX 请求来 POST 表单数据 我不想开发一个哈希解码和编码系统来证明请求是否被允许 是否可以简单地检查 服务器是否运行脚本 或客户端是否
  • 特质不就是简单的组合吗?

    我正在阅读一篇有关 PHP 5 4 0 中的新功能的文章 最值得期待的之一是Traits http php net traits 阅读这些内容Traits 看看它们的全部内容 对我来说它们只是编译器辅助的复制粘贴 一种语言提供了使用组合的方
  • D3.js V4 和 Angular 不会发生节点转换

    我在用角度打字稿 with D3 js V 4 12我特别使用整齐的径向树 https bl ocks org mbostock 4063550用于代表产品 初始步骤 随着ng cli 我安装了npm install save d3并创建了
  • SharedKeyCredential 不是构造函数。 Azure存储反应应用程序

    我正在尝试使用以下代码将 blockblob 上传到反应应用程序中的 Azure 存储 但是 我收到以下错误 类型错误 SharedKeyCredential 不是构造函数 有任何想法吗 azure 电子邮件受保护 cdn cgi l em
  • MVC 捆绑包和 IIS 虚拟目录(URL 重写)

    我在 IIS 服务器虚拟目录上托管多个应用程序 并使用 URL 重写来简化它们 所有图像和其他资产都是这样手动编写的 path to my content 有正确的输出 path to my content 但捆绑路径如 client js
  • 金钱图能很好地流动吗?

    sql 数据类型 Money 是否映射到 C float 不 它映射到decimal 如果该列允许 null 则它映射到Nullable
  • 将 ASP.NET 应用程序迁移到 IIS7 时出现注册表访问错误

    我正在运行 Windows 7 64 位和 iis7 我正在尝试在 XP 上设置一个以前在 iis6 中的 Web 应用程序 它给了我下面的错误 我已将网络服务用户添加到性能监视器用户组中 但无济于事 对注册表项 Global 的访问是 否
  • 如何通过Java Validator消息传递参数?

    目前 我有类似的东西 NotNull message err required Size min 1 message err required private String firstName In my messages properti
  • bean 验证获取验证组

    是否可以获取调用验证方法的验证器中的组 我有多个组 创建 更新 删除 它们大多数会导致对一个 bean 进行类似的验证 我不想提供多个几乎相同的验证器 并创建实用程序函数来外部化相同的验证代码 我更愿意有一个验证器来处理有关调用验证的组的验
  • graphviz 绘图太宽

    我正在做练习 在 jupyter 笔记本中使用 graphviz 创建决策树 然而 决策树过于宽泛 这是代码 from sklearn tree import export graphviz export graphviz tree out
  • 保存 .php 文件并保存包含内容(可能)

    设置 我有一个标准 php 文件 index php 其中包含两个包含内容 一个用于页眉 header php 一个用于页脚 footer php index php 文件如下所示 索引 php h2 Hello h2 p class ed
  • 检查 Windows C/C++ 中的文件夹/文件是否隐藏/系统

    我正在使用 C STL Boost 编写一个跨平台应用程序 我意识到它们没有提供一种方法来检查文件夹或文件是否隐藏或者是 Windows 中的系统文件 在 Windows 的 C C 中执行此操作的最简单方法是什么 理想情况下 我有一个带有
  • 从 python Fabric 执行远程 bash 命令时“转义”$

    所以我尝试通过 python Fabric 脚本自动设置 arch linux 实例 如下所示 from fabric api import run sudo def server setup communityrepo run echo