Paramiko和MySQL相关-day10

Posted Leon-Py

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Paramiko和MySQL相关-day10相关的知识,希望对你有一定的参考价值。

本章内容

  1. paramiko基本使用
  2. mysql基础语法
  3. pymysql模块使用
  4. Python操作memcached
  5. Python操作redis

 

一、paramiko模块基本使用

 paramiko是Python的一个模块,如果电脑没有装这个模块的话需要使用pip3 install paramiko。paramiko模块的主要功能是连接服务器并在远端服务器执行命令并把结果返回到本地。目前很多自动化工具也用的是该模块,比如ansible。

 

  - 基于SSH密码登陆

import paramiko

#创建一个ssh socket对象
ssh_client = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接到ssh服务器
ssh_client.connect(hostname=\'95.163.199.239\',port=端口,username=\'root\',password=\'passwd\',timeout=56)
#执行命令,
stdin,stdout,stderr = ssh_client.exec_command(\'df\')
#获取结果,结果是bytes类型
result = stdout.read()
result_str = result.decode(\'utf-8\')
print(result_str)
#关闭连接
ssh_client.close()

 

transport = paramiko.Transport((\'95.163.199.239\',端口))
transport.connect(username=\'用户\',password=\'密码\')
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin,stdout,stderr = ssh.exec_command(\'df\')
print(stdout.read().decode(\'utf-8\'))
transport.close()
transport方式

 

 

  - 基于RSA秘钥登陆

#创建秘钥的文件对象
key_file = open(r\'E:\\filename\\filename\\id_rsa_2048\')
#服务器的秘钥
rsa_key = paramiko.RSAKey.from_private_key(key_file,\'rsa_password\')
#连接ssh服务器
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#登陆服务器携带秘钥
ssh.connect(hostname=\'95.163.199.239\',port=端口,username=\'root\',pkey=rsa_key)
stdin,stdout,stderr = ssh.exec_command(\'df\')
print(stdout.read().decode(\'utf-8\'))
ssh.close()

 

key_file = open(r\'E:\\filename\\filename\\id_rsa_2048\')
rsa_key = paramiko.RSAKey.from_private_key(key_file,\'rsa_password\')
transport = paramiko.Transport((\'95.163.199.239\',port))
transport.connect(username=\'root\',pkey=rsa_key)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin,stdout,stderr = ssh.exec_command(\'df\')
print(stdout.read().decode(\'utf-8\'))
transport.close()
transport方式

  

  - 使用paramiko对文件进行上传和下载

  

import paramiko

transport = paramiko.Transport((\'hostname\',22))
transport.connect(username=\'leon\',password=\'123\')
 
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\')

  - 基于秘钥的上传下载

import paramiko
 
private_key = paramiko.RSAKey.from_private_key_file(\'/home/auto/.ssh/id_rsa\')
 
transport = paramiko.Transport((\'hostname\', 22))
transport.connect(username=\'leon\', 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\')
class SSH_Client(object):
    def __init__(self,host=None,port=None,username=None,password=None):
        self.host = host
        self.port = port
        self.username = username
        self.password = password
        self._transport = None

    def run(self):
        self.conn()

    def conn(self):
        transport = paramiko.Transport((self.host,self.port))
        transport.connect(username=self.username,password=self.password)
        self._transport = transport
    def close(self):
        self._transport.close()

    def command(self):
        ssh = paramiko.SSHClient()
        ssh._transport = self._transport
        while True:
            command = input(\'[localhost~]#:\').strip()
            if command:
                if command == "exit":
                    self.close()
                    exit()
                else:
                    stdin,stdout,stderr = ssh.exec_command(command)
                    print(stdout.read().decode(\'utf-8\'))
            else:
                continue


ssh = SSH_Client()
ssh.run()
练习

 

二、MySQL的基本语法

  

  -用户管理

      创建用户-  create user \'username\'@\'ipaddr\' identified by \'password\';
    - 删除用户 drop user \'username\'@\'ipaddr\';
    - 修改用户 rename user \'username\'@\'ipaddr\' to \'new_username\'@\'ipaddr\';
    - 修改密码 set password for \'username\'@\'ipaddr\' = Password(\'new_password\');

    - 查看目前所有用户 select host,user from mysql.user;


  授权管理:

    show grants for \'username\'@\'ipaddr\'; - 查看权限
    grant 权限 on 数据库.表 to \'用户名\'@\'密码\' 授权管理:
    revoke 权限 on 数据库.表 from \'用户名\'@\'密码\' 移除权限

            all privileges  除grant外的所有权限
            select          仅查权限
            select,insert   查和插入权限
            ...
            usage                   无访问权限
            alter                   使用alter table
            alter routine           使用alter procedure和drop procedure
            create                  使用create table
            create routine          使用create procedure
            create temporary tables 使用create temporary tables
            create user             使用create user、drop user、rename user和revoke  all privileges
            create view             使用create view
            delete                  使用delete
            drop                    使用drop table
            execute                 使用call和存储过程
            file                    使用select into outfile 和 load data infile
            grant option            使用grant 和 revoke
            index                   使用index
            insert                  使用insert
            lock tables             使用lock table
            process                 使用show full processlist
            select                  使用select
            show databases          使用show databases
            show view               使用show view
            update                  使用update
            reload                  使用flush
            shutdown                使用mysqladmin shutdown(关闭MySQL)
            super                   

以上是关于Paramiko和MySQL相关-day10的主要内容,如果未能解决你的问题,请参考以下文章

day9-paramiko

day9--paramiko模块

背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素(代码片

python学习-day9

day9---paramiko ssh ftp

day9---paramiko ssh ftp