python paramiko 远程调用 常见问题总结

 
问题1: b'Unable to execute command or shell on remote system: Failed to Execute process.\r\n’
 
解决方法:
        这是因为在远程执行Windows命令的时候,需要添加上cmd /c,如下所示:
 
                
 
 
 
问题2: 执行rmdir命令时报告错误:  b'Invalid switch -
解决方法:
    这是因为远程调用rmdir命令删除目录时,目录的路径需要注意使用Windows路径,但又由于Python对于Windows的反斜杠路径支持不友好,需要在路径字符串的处理时添加r作为前缀处理。如下提供的解决方法 r’E:\tsss':
    
 
 
问题3:执行远程命令时报告 Permission denied
解决方法:
    可能情况1: 通常该问题是由于远程文件夹或文件的权限问题导致。比如目录只读权限,比如文件的用户归属问题。这里只能说提供一个供参考的解决方式:使用freeSSHD搭建服务的时候添加远程机器的管理员作为ssh的远程访问登录用户进行操作。(通常使用sftp容易出现问题,可以直接使用Windows系统命令处理,Unix/Linux也可以使用对应的系统命令)
    可能情况2: 使用sftp上传或下载文件时,包括删除文件或目录时,需要注意:
        a. sftp只能删除空目录,所以如果要删除目录,先必须循环迭代删除目录中的文件(sftp.remove),再删除目录(sftp.rmdir)。
        b. sftp的使用需要配合ssh服务设置的共享根目录,比如如果使用了freesshd搭建了远程机器的ssh服务,在配置了sftp的根目录后,sftp对于远程目录路径的操作需要使用相对路径(相对于根目录),而不是使用绝对路径。
 
 
问题4: paramiko.ssh_exception.AuthenticationException: Authentication failed.
解决方法:
    这是由于ssh远程登录的账号或密码不正确导致。
 
问题5:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa8 in position 54: invalid start byte
解决方法:
    这通常是由于字符编码导致的问题,根本原因是Paramiko的字符编码写的很死,在paramiko的py3compat.py包中存在一个u方法,其中将字符编码写死了,必须是’utf-8’,如果遇到中文之类的字符就会报错。u方法如下所示:
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值