当前位置: 首页 > 知识库问答 >
问题:

带fabric的Python ssh,代码127

龙承德
2023-03-14

我正在尝试使用python中的fabric向另一台机器上的程序发送命令。

from fabric.api import env, run

env.host_string = 'xxx.xxx.xxx.xxx'
env.user = 'username'
env.password = 'password'

run('ls')
run('rostopic list')
Warning: run() received nonzero return code 127 while executing 'rostopic list'!
'/bin/bash: rostopic: command not found'
rostopic list

它像它应该的那样运行

我不知道如何进行,我不明白为什么它不工作与织物。我试着用paramiko实现这个,但我也遇到了一些问题,但是它用pxssh很好。问题是我需要这个在Windows上工作,而pxssh不兼容。如何使此命令与Fabric一起工作?

共有1个答案

胡浩瀚
2023-03-14

从您对pathing问题所做的评论来看,似乎需要使用路径cd和/或prefix上下文管理器的某些组合,以便在SSH连接上运行ROS(机器人操作系统)命令。您可能还希望通过将Fabric完全排除在外来解决故障,而是通过ssh-t使命令工作,如下所示:

$ ssh user@machine -t "cd /my/home/directory && /opt/ros/indigo/bin/rostopic list"

一个将上下文管理器与Fabric一起使用的示例如下所示:

with path('/opt/ros/indigo/bin/'):
    with prefix('always run this command'):
        with cd('/my/special/directory'):
            run('rostopic list')

这是相当做作的,但希望能说明这一点。无论如何,我将首先确保您可以通过ssh-t运行该命令。解决这个问题可能会引导你找到正确的方法来实现这一点。

作为一个附带/相关的考虑:这是远程机器上的虚拟环境吗?您可以使用前缀上下文管理器来激活它,如下所示:

with prefix('/opt/ros/indigo/bin/activate'):
    run('rostopic list')

或者使用ssh-t,可以执行:

$ ssh user@machine -t "/opt/ros/indigo/bin/activate && rostopic list"
 类似资料:
  • 我已经与2个组织建立了超分类账结构网络,并在对等上安装了V1.1版本的fabcar链码,我保留了区块链的存储。 接下来,我在fabcar上添加了更多的方法,试图将现有的fabcar升级到V1.2,但我面临着错误。 错误:无法组装事务,err建议响应不成功,错误代码500,msg无法获得链码的包(FABCAR:1.2) 我正在使用下面的命令升级chaincode

  • 区块链技术是计算机技术与金融技术交融的成功创新,被认为是极具潜力的分布式账本平台的核心技术。如果你还不了解区块链,可以阅读 区块链技术指南。

  • 我想用JavaFX编写一个文本编辑器,其作用类似于Eclipse/Netbeans IDE,以突出显示Java代码。是否有人可以建议如何实现这一目标,或者有人以前已经这样做过。 谢谢。

  • 我在业余时间开发了一个小游戏,但我遇到了一个问题,我真的不明白它为什么会发生。 这是一段无法真正工作的代码。这是一个带有三个按钮的JFrame(我去掉了另外两个)。它应该是一个暂停菜单,当按下“p”键时是一个“弹出窗口”。它运行得很好,问题是 游戏面板。变量setPause(假); 这一行应该设置一个布尔值为false,然后继续我的游戏循环。但由于某些原因,它从未执行,布尔值保持为true。这个问

  • 我有一个网站正在使用Stripe来处理订阅付款。只有一种类型的订阅。我按照NetTuts上的教程进行了初始设置。有一个表单可以精细处理订阅,一切都正常。客户要求优惠券代码。Stripe支持这个,所以我开始尝试在现有表单中添加优惠券代码。 我在Stripe中设置优惠券代码,设置测试密钥,并在Stripe中切换到测试模式。我正在代码中执行几个检查: 检查是否输入了优惠券,如果没有,则创建一个没有优惠券