一、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()
上面几种连接,返回结果后,连接就会断开,那么怎么可以保持连接呢?