paramiko封装成文件时踩坑

 

今天把paramiko使用封装成一个文件,存储到基本功能模块中遇到一个坑,发现一个规律,为了后面不再踩这个坑,所以赶紧记录下来。

首先我通过网上搜索,获取使用paramiko的基本方法,代码如下

import paramiko

#创建SSH对象
ssh = paramiko.SSHClient()
#允许不在know_host文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='172.0.0.1',port=22,username='root',password='123456')
#获取命令结果
stdin,stdout,stderr = ssh.exec_command('df -h')
print(stdout.read().decode()) #输出结果
print(stderr.read().decode()) #输出错误结果
ssh.close()

经过调试,代码执行ok。

然后对这部分代码进行封装:

首先在公共包中建立文件paramiko.py文件,然后创建类,在类中创建方法,代码如下:

class myParamiko():
#链接远程服务器,执行命令操作
def con_oper_df(self,cnHostname='127.0.0.1',cnPort=22,cnUsername='root',cnPassword='123456'):
#创建SSH对象
ssh = paramiko.SSHClient()
#允许不在know_host文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(cnHostname,cnPort,cnUsername,cnPassword)
stdin,stdout,stderr = ssh.exec_command('docker ps -a')
print(stdout.read().decode())
print(stderr.read().decode())
ssh.close()

if __name__ == '__main__':
myP = myParamiko()
myP.con_oper_df(cnHostname='172.0.0.1',cnPort=22,cnUsername='root',cnPassword='123456')

这代码进行调试后,一直提示AttributeError: module 'paramiko' has no attribute 'SSHClient'

但是查看paramiko中是有属性SSHClient的,非常奇怪,再回去原来调试代码的文件试试是ok的,然后把上面封装时写的代码拷贝到原来的文件进行调试,发现也是ok的,那么为什么在封装文件里面调试不通过?

后面才发现封装的文件名字paramiko.py和引入的文件名相同,会不会我引入时直接引入自己封装的文件,而没有引入类库的文件呢? 有了猜想就去实践,换个封装文件名字,把内容拷贝进去进行调试,结果是ok的。

然后就发现了一个规律:我们自己封装的文件名称千万不要跟类库中需要引入的模块名称一致,否则问题就出来了。

 

转载于:https://www.cnblogs.com/simplezhuo/p/10287429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值