paramiko sftp无法删除远程文件夹,ioerror

时间:2016-02-19 03:59:30

标签: python sftp paramiko

这是我的代码,使用paramiko sftp删除远程目录。

import paramiko

host = "192.168.1.13"
port = 22
transport = paramiko.Transport((host, port))

username = "root"
password = "abc123"

transport.connect(username = username, password = password)

sftp = paramiko.SFTPClient.from_transport(transport)

filepath = '/root/test_folder'
sftp.rmdir(filepath)

执行上面的代码将输出此错误,

Traceback (most recent call last):
  File "autom_test.py", line 36, in <module>
    sftp.rmdir(filepath)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 390, in rmdir
    self._request(CMD_RMDIR, path)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 729, in _request
    return self._read_response(num)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 776, in _read_response
    self._convert_status(msg)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 806, in _convert_status
    raise IOError(text)
IOError: Failure

当我将sftp.remove(path)用于单个文件时,情况并非如此。但sftp.rmdir导致IOError

语法来自the documentation

1 个答案:

答案 0 :(得分:1)

错误是因为目标目录中包含文件。 尝试recurssive删除..见下文..

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(host,username=username,password=password)

filepath="/root/test_folder"
cmd = "rm -rf "  + filepath

stdin, stdout, stderr = ssh.exec_command(cmd)
while not stdout.channel.exit_status_ready():
    time.sleep(5)