Python 使用paramiko执行dd命令但未得到任何返回
我使用python paramiko模块远程执行dd命令,如下所示:Python 使用paramiko执行dd命令但未得到任何返回,python,linux,python-2.7,paramiko,Python,Linux,Python 2.7,Paramiko,我使用python paramiko模块远程执行dd命令,如下所示: paramiko.util.log_to_file('paramiko.log') s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect('ip', 22, "account", "password") command = r"dd if=/dev/zero of=/test bs=4M count
paramiko.util.log_to_file('paramiko.log')
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect('ip', 22, "account", "password")
command = r"dd if=/dev/zero of=/test bs=4M count=1024 oflag=direct"
stdin, stdout, stderr = s.exec_command( command )
print( stdout.read().strip() )
但是我从stdout.read()中没有得到任何返回字符串(只有一个空行),原因是什么
PS:直接在CLI上编写命令时可以得到结果。您是否检查了
stderr
?可能该命令执行不正确。如果要检查其是否成功,请尝试检查其返回代码。如果它是零,那么它就是成功
您需要使用Paramiko transport检查返回代码
chan = s.get_transport().open_session()
# Execute thecommand
chan.exec_command(cmd)
print chan.recv_exit_status() # This will print its return code
谢谢你的回复。返回代码为“0”,因此我认为paramiko成功执行了该命令。顺便问一下,dd命令最初是否可能导致我无法在stdout.read()中获得任何输出?Hmmmm。。。。真奇怪。。。您是否尝试过手动执行命令。。可能是您的dd版本未生成任何输出。。只是一个猜测是的,但在stderr中没有。因此,我认为该命令执行成功。在另一个线程中有一个建议,使用二进制文件的完整路径:好的,我将尝试创建一个用户线程来处理这个dd命令。但是完整的路径不是这个问题的问题。。。