模块(二)

一、optparse模块

         是用来处理命令行参数的模块,功能很强大

         ①首先要创建一个parse实例  parse=optparse.OptionParser()

         ②给实例定义命令行的输入规则  parse.add_option()

            其中定义了 选项名(短选项、长选项、保存参数的变量名、变量类型、操作类型等等)

         ③调用parse_args()方法来返回一个保存参数值的对象和 保存位置参数的列表

         举个小例子:

 1 import optparse
 2 parse=optparse.OptionParser()  #首先实例一个parse
 3 parse.add_option('-H','--host',dest='host',type=str,action='store',help='add host to server')
 4 #'-H','--host'   一个长选项,一个长选项,二者可任选其一,不是必须都要写
 5 #dest='host'     将'-H'或者'--host'后面命令行的参数值保存到变量host中,并且可以通过options.host来访问这个值
 6 #type=str   参数值得类型必须是字符串类型,如果不是字符串类型将会强制转为字符串
 7 #action='store' 用户必须填写参数值(默认,可不写)
 8     #action='store_true'  用户可以不写参数值,会将布尔值true传给dest
 9     #action='store_false'   用户可以不写参数值,会将布尔值true传给dest
10 options,args=parse.parse_args()
11 #options中存放的是参数名(上面说的变量名)和参数值  {'host': '193.9.9.9'}
12 #args    位置参数列表
13 print(options)     #{'host': '193.9.9.9'}
14 print(args)    #[]
15 print(options.host)  # 193.9.9.9

     补充:parse.add_option('-H','--host',dest='host',help='add host to server',default='0.0.0.0')

    default='0.0.0.0'   如果没有给host传入参数,那么用默认值0.0.0.0传给host


二、paramiko模块

该模块主要用于进行与远程服务器连接的模块
linux下安装paramiko模块:
http://www.cnblogs.com/xia520pi/p/3805043.html
win下安装paramiko for python3.5:在python的Scripts目录下执行  pip install paramiko -i  http://mirrors.aliyun.com/pypi/simple  --trusted-host mirrors.aliyun.com /1
  
1、SSHClient:连接远程服务器执行基本命令

    ①第一种连接方式:
 1 import paramiko
 2 '''首先创建一个ssh对象'''
 3 ssh=paramiko.SSHClient()
 4 '''允许连接不在know_hosts文件中的主机'''
 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 6 '''连接服务器'''
 7 ssh.connect(hostname='192.168.23.4',port=22,username='root',password='123456')
 8 
 9 stdin,stdout,stderr=ssh.exec_command('df')
10 stdout2=stdout.read()
11 print(stdout2.decode())
    ②第二种连接方式:  SSHClient封装transport
 1 import paramiko
 2 transport=paramiko.Transport('10.69.9.69',22)   #ip和端口号
 3 transport.connect(username='root',password='19920321') #用户名和密码
 4 
 5 ssh=paramiko.SSHClient()
 6 ssh._transport=transport 
 7 stdin,stdout1,stderr=ssh.exec_command('pwd')
 8 stdin,stdout2,stderr=ssh.exec_command('ls')
 9 print(stdout1.read().decode())
10 print(stdout2.read().decode())

        2、 SFTPClient:连接远程服务器执行基本命令
上传下载文件只有封装transport这一种连接方式
import paramiko
t=paramiko.Transport('10.69.9.69',22)
t.connect(username='root',password='19920321')
sftp=paramiko.SFTPClient.from_transport(t)
'''上传SDK Manager.exe到远程服务器的/usr/xiaonan'''    注意:要给下载或上传的文件重命名
sftp.put('E:\SDK Manager.exe','/usr/xiaonan/SDK Manager.exe')
'''下载xiaonan.txt到本地E:\just_testing'''
sftp.get('/usr/xiaonan/xiaonan.txt','E:\just_testing\\xiaonan.txt')
t.close()

               

             上面几种连接,返回结果后,连接就会断开,那么怎么可以保持连接呢?

     

 


                     






posted @ 2016-12-29 17:58  3456425171  阅读(155)  评论(0编辑  收藏  举报