通过paramiko和ssh发送的相同命令通过ssh起作用,但对paramiko无效

时间:2019-04-08 01:22:24

标签: python ssh paramiko ros

我正在尝试使用带有paramiko的python脚本在运行ROS的机器人上运行命令。基本上,我的计算机上有一个python脚本,我想连接到机器人以运行位于机器人上的python脚本。当我直接通过SSH在终端中运行命令时,它可以正常工作。但是,当我使用带有paramiko的脚本运行完全相同的命令时,它为我提供了一个名为rospy的无导入错误模块,我理论上理解该模块,因为rospy导入了我的python脚本,但我不明白为什么它不会在终端中通过SSH运行完全相同的命令时,会出现相同的错误。

我已经打印了命令并检查它是否完全相同(至少从我所能告诉的一切),但是当我直接运行这些命令时,我仍然得到不同的结果。其他命令似乎可以正常执行,但这会引起问题。

这是我运行的使用paramiko连接的计算机上的脚本

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())     
ssh.connect(hostname=robot_ip, username=robot_user, password=robot_pass)

try:
    command = "python ~/SchedulerInitiator.py " + str(initial_turn_angle) + " " + str(dist) + " " + str(final_turn_angle)
    print(command)
    stdin, stdout, stderr = ssh.exec_command(command)
except paramiko.SSHException:
    print("Request rejected or channel closed")

print(stdout.readlines())
print(stderr.readlines()) 

这些是SchedulerInitiator.py调用的文件上的导入

from SchedulerHandler import *
import threading
import sys

然后将rospy导入SchedulerHandler中,这会导致实际的问题。

这是运行代码时显示的错误:

[u'Traceback (most recent call last):\n', u'  File "/home/root/SchedulerInitiator.py",
line 1, in <module>\n', u'    from SchedulerHandler import *\n', u'  File "/home/root/SchedulerHandler.py",
line 7, in <module>\n', u'    import rospy\n', u'ImportError: No module named rospy\n']

当我通过SSH运行完全相同的命令时,它运行就没有错误。

任何想法出什么问题/如何解决?谢谢!!

0 个答案:

没有答案