paramiko几个例子

Posted on Posted in python

> 上传下载文件

  1. #!/usr/bin/env python  
  2. import paramiko  
  3.   
  4. username = "root"  
  5. password = "liuhonghe"  
  6. hostname = "192.168.36.67"  
  7. port = 22  
  8.   
  9. try:  
  10.     t = paramiko.Transport((hostname, port))  
  11.     t.connect(username=username, password=password)  
  12.     sftp = paramiko.SFTPClient.from_transport(t)  
  13.       
  14.     sftp.put("/home/lhh/tmp/t.txt","/root/tmp/t.txt")   #上传文件  
  15.     sftp.get("/root/tmp/tt.txt","/home/lhh/tmp/tt.txt") #下载文件  
  16.     sftp.mkdir("/root/tmp/mdir")    #创建目录  
  17.     sftp.rmdir("/root/tmp/mdir")    #删除目录  
  18.     sftp.rename("/root/tmp/t.txt","/root/tmp/abcd.txt") #文件重命名  
  19.     print(sftp.stat("/root/tmp/123.html"))  #打印文件信息  
  20.     print(sftp.listdir("/root/tmp"))    #打印文件目录  
  21.     t.close()  
  22. except Exception as e:  
  23.     print(str(e))  

> 堡垒机

  1. #!/usr/bin/env python  
  2. import paramiko  
  3. import os,sys,time  
  4.   
  5. blip = "192.168.36.67"  #定义堡垒机信息  
  6. bluser = "root"  
  7. blpasswd = "liuhonghe"  
  8.   
  9. hostname = "192.168.38.114"     #定义业务服务器信息  
  10. username = "root"  
  11. password = "123456"  
  12.   
  13. port = 22  
  14. passinfo = '\'s password: '     #服务器密码前标志串  
  15. paramiko.util.log_to_file('syslogin.log')  
  16.   
  17. ssh = paramiko.SSHClient()      #ssh登录堡垒机  
  18. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
  19. ssh.connect(hostname=blip,username=bluser,password=blpasswd)  
  20.   
  21. channel = ssh.invoke_shell()    #创建会话,开启命令调用  
  22. channel.settimeout(10)      #会话命令执行超时时间,10m  
  23.   
  24. buff = ''  
  25. resp = ''  
  26.   
  27. channel.send('ssh '+username+'@'+hostname+'\n')     #执行ssh登录业务主机  
  28. while not buff.endswith(passinfo):  #ssh登录的提示信息判断,输出尾串含有passinfo时,推出循环  
  29.     try:  
  30.         resp = channel.recv(9999)  
  31.         resp = resp.decode("utf-8")  
  32.     except Exception as e:  
  33.         print('Error info:{} connection time.'.format(str(e)))  
  34.         channel.close()  
  35.         ssh.close()  
  36.         ssh.exit()  
  37.     buff += resp  
  38.     if not buff.find('yes/no')==-1:     #输出尾串含有yes/no时发送yes  
  39.         channel.send('yes\n')  
  40.         buff = ''  
  41. channel.send(password+'\n')     #发送密码  
  42. buff = ''  
  43. while not buff.endswith('# '):  #输出尾串为#时说明较远通过并推出  
  44.     resp = channel.recv(9999).decode('utf-8')  
  45.     if not resp.find(passinfo)==-1:     #输出含有passinf说明密码不正确,要求重新输入  
  46.         print('Error info: Authentication failed.')  
  47.         channel.close()     #关闭连接对象后退出  
  48.         ssh.close()  
  49.         ssh.exit()  
  50.     buff += resp  
  51. channel.send('ifconfig\n')  #发送ifconfig命令  
  52. buff = ''  
  53. try:  
  54.     while buff.find('# ')==-1:  
  55.         resp = channel.recv(9999).decode('utf-8')  
  56.         buff += resp  
  57. except Exception as e:  
  58.     print("error info:{}".format(str(e)))  
  59. print(buff) #打印输出串  
  60. channel.close()  
  61. ssh
    .close()  

> 堡垒机上传下载

  1. #hahaGG!/usr/bin/env python  
  2. import paramiko  
  3. import os,sys,time  
  4.   
  5. blip = "192.168.36.67"  
  6. bluser = "root"  
  7. blpasswd = "liuhonghe"  
  8.   
  9. hostname = "192.168.38.114"  
  10. username = "root"  
  11. password = "123456"  
  12.   
  13. tmpdir = "/tmp"  
  14. remotedir = "/tmp"  
  15. localpath = "/tmp/nnn.tgz"  #本地源文件路径  
  16. tmppath = tmpdir+"/nnn.tgz" #堡垒机临时路径  
  17. remotepath = remotedir+"/nnn.tgz"   #业务主机目标路径  
  18. port = 22  
  19. passinfo = '\'s password: '  
  20. paramiko.util.log_to_file('syslogin.log')  
  21.   
  22. t = paramiko.Transport((blip,port))  
  23. t.connect(username=bluser, password=blpasswd)  
  24. sftp = paramiko.SFTPClient.from_transport(t)  
  25. sftp.put(localpath,tmppath)  
  26. sftp.close()  
  27.   
  28. ssh = paramiko.SSHClient()  
  29. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
  30. ssh.connect(hostname=blip,username=bluser,password=blpasswd)  
  31.   
  32. channel = ssh.invoke_shell()  
  33. channel.settimeout(10)  
  34.   
  35. buff = ''  
  36. resp = ''  
  37. channel.send('scp '+tmppath+' '+username+'@'+hostname+':'+remotepath+'\n')  
  38. while not buff.endswith(passinfo):  
  39.     try:  
  40.         resp = channel.recv(9999).decode('utf-8')  
  41.     except Exception as e:  
  42.         print('Error info:{} connection time.'.format(str(e)))  
  43.         channel.close()  
  44.         ssh.close()  
  45.         sys.exit()  
  46.     buff += resp  
  47.     if not buff.find('yes\no')==-1:  
  48.         channel.send('yes\n')  
  49.         buff = ''  
  50. channel.send(password+'\n')  
  51.   
  52. buff = ''  
  53. while not buff.endswith('# '):  
  54.     resp = channel.recv(9999).decode('utf-8')  
  55.     if not resp.find(passinfo)==-1:  
  56.         print('Error info:Authentication failed')  
  57.         channel.close()  
  58.         ssh.close()  
  59.         sys.exit()  
  60.     print("buff:::"+buff)  
  61.     print(len(buff))  
  62.     buff += resp  
  63. print(buff)  
  64. channel.close()  
  65. ssh.close()  
» 转载请注明来源:若我若鱼 » paramiko几个例子

Leave a Reply

Your email address will not be published. Required fields are marked *

2 × four =