paramiko模块
SSHClient
用于连接远程服务器并执行基本命令
基于用户名密码连接:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname = '192.168.11.200' , port = 22 , username = 'hetan' , password = '123456' ) # 执行命令 stdin, stdout, stderr = ssh.exec_command( 'df' ) # 获取命令结果 result = stdout.read() print (result.decode()) # 关闭连接 ssh.close() |
SSHClient 封装 Transport:
1 2 3 4 5 6 7 8 9 10 11 12 | import paramiko transport = paramiko.Transport(( '192.168.11.200' , 22 )) transport.connect(username = 'hetan' , password = '123456' ) ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command( 'df' ) print (stdout.read().decode()) transport.close() |
基于公钥密钥连接:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import paramiko private_key = paramiko.RSAKey.from_private_key_file( '/home/auto/.ssh/id_rsa' ) # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname = '192.168.11.200' , port = 22 , username = 'hetan' , key = private_key) # 执行命令 stdin, stdout, stderr = ssh.exec_command( 'df' ) # 获取命令结果 result = stdout.read() print (result.decode()) # 关闭连接 ssh.close() |
SSHClient 封装 Transport:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import paramiko private_key = paramiko.RSAKey.from_private_key_file( '/home/auto/.ssh/id_rsa' ) transport = paramiko.Transport(( '192.168.11.200' , 22 )) transport.connect(username = 'hetan' , pkey = private_key) ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command( 'df' ) transport.close() |
SFTPClient
用于连接远程服务器并执行上传下载
基于用户名密码上传下载
1 2 3 4 5 6 7 8 9 10 11 12 | import paramiko transport = paramiko.Transport(( '192.168.11.200' , 22 )) transport.connect(username = 'hetan' ,password = '123456' ) sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put( '/tmp/location.py' , '/tmp/test.py' ) # 将remove_path 下载到本地 local_path sftp.get( 'remove_path' , 'local_path' ) transport.close() |
基于公钥密钥上传下载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import paramiko private_key = paramiko.RSAKey.from_private_key_file( '/home/auto/.ssh/id_rsa' ) transport = paramiko.Transport(( '192.168.11.200' , 22 )) transport.connect(username = 'hetan' , pkey = private_key ) sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put( '/tmp/location.py' , '/tmp/test.py' ) # 将remove_path 下载到本地 local_path sftp.get( 'remove_path' , 'local_path' ) transport.close() |
上传文件并改名:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #!/usr/bin/env python import paramiko import uuid class Haproxy( object ): def __init__( self ): self .host = '192.168.11.200' self .port = 22 self .username = 'hetan' self .pwd = '123456' self .__k = None def create_file( self ): file_name = str (uuid.uuid4()) with open (file_name, 'w' ) as f: f.write( 'sb' ) return file_name def run( self ): self .connect() self .upload() self .rename() self .close() def connect( self ): transport = paramiko.Transport(( self .host, self .port)) transport.connect(username = self .username,password = self .pwd) self .__transport = transport def close( self ): self .__transport.close() def upload( self ): # 连接,上传 file_name = self .create_file() sftp = paramiko.SFTPClient.from_transport( self .__transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put(file_name, '/home/hetan/tttttttttttt.py' ) def rename( self ): ssh = paramiko.SSHClient() ssh._transport = self .__transport # 执行命令 stdin, stdout, stderr = ssh.exec_command( 'mv /home/hetan/tttttttttttt.py /home/hetan/ooooooooo.py' ) # 获取命令结果 result = stdout.read() ha = Haproxy() ha.run() |
数据库操作
Python MySQL API
一、插入数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import pymysql conn = pymysql.connect(host = '192.168.11.200' ,user = 'hetan' ,passwd = '123456' ,db = 'mydb' ) cur = conn.cursor() reCount = cur.execute( 'insert into students(name,sex,age,tel) values(%s,%s,%s,%s)' ,( 'liuyao' , 'man' , '20' , '1235' )) conn.commit() cur.close() conn.close() print (reCount) |
二、批量插入数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import pymysql conn = pymysql.connect(host= '192.168.11.200' ,user= 'hetan' ,passwd= '123456' ,db= 'mydb' ) cur = conn.cursor() li = [ ( 'alex' , 'man' , 18 , '1515151' ), ( 'wupeiqi' , 'man' , 18 , '1551515' ) ] reCount = cur.executemany( 'insert into students(name,sex,age,tel) values(%s,%s,%s,%s)' ,li) conn.commit() cur.close() conn.close() print(reCount) |
三、删除数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import pymysql conn = pymysql.connect(host = '192.168.11.200' ,user = 'hetan' ,passwd = '123456' ,db = 'mydb' ) cur = conn.cursor() reCount = cur.execute( 'delete from students where id=%s' ,( '1' ,)) conn.commit() cur.close() conn.close() print (reCount) |
四、修改数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import pymysql conn = pymysql.connect(host = '192.168.11.200' ,user = 'hetan' ,passwd = '123456' ,db = 'mydb' ) cur = conn.cursor() reCount = cur.execute( 'update students SET name=%s WHERE id=%s' ,( 'hetan' , '2' ,)) conn.commit() cur.close() conn.close() print (reCount) |
五、查数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import pymysql conn = pymysql.connect(host = '192.168.11.200' ,user = 'hetan' ,passwd = '123456' ,db = 'mydb' ) cur = conn.cursor() reCount = cur.execute( 'select * from students' ) print (cur.fetchone()) print (cur.fetchone()) cur.scroll( - 1 ,mode = 'relative' ) print (cur.fetchone()) print (cur.fetchone()) cur.scroll( 0 ,mode = 'absolute' ) print (cur.fetchone()) print (cur.fetchone()) cur.close() conn.close() print (reCount) |
查询全部:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import pymysql conn = pymysql.connect(host = '192.168.11.200' ,user = 'hetan' ,passwd = '123456' ,db = 'mydb' ) cur = conn.cursor() reCount = cur.execute( 'select * from students' ) print (cur.fetchall()) cur.close() conn.close() print (reCount) |