北方姆Q python第十三天

这几天在欺负docker兽,很是开心,但是没想到领导突然让我去殴打openstack兽,完全没有兴趣嘛,毕竟前一阵一直在吊打它,当然啦,对于愚蠢的人类而言openstack兽是十分强大的,不过对于北方来说就不是酱了老司机带你飞啊~~~过几天还要给愚蠢的人类讲云计算,我靠,这么简单的东西还需要讲?讲也不应该由北方大人来讲好不好,简单写点吧,刚才为了愚蠢的人类们写了2小时openstack的安装文档,累死萌萌了,下面该短暂的学习前端知识了

paramiko模块

直接完整版本

 1 #!/usr/bin/env python
 2 import paramiko
 3
 4
 5 class SSHConnection(object):
 6     def __init__(self, host=‘172.16.5.7‘, port=22, username=‘root‘,pwd=‘123qweASD‘):
 7         """
 8         信息初始化
 9         :return:
10         """
11         self.host = host
12         self.port = port
13         self.username = username
14         self.pwd = pwd
15         self.__k = None
16
17     def run(self):
18         self.connect()
19         pass
20         self.close()
21
22     def connect(self):
23         """
24         创建连接
25         :return:
26         """
27         transport = paramiko.Transport((self.host,self.port))
28         transport.connect(username=self.username,password=self.pwd)
29         self.__transport = transport
30
31     def close(self):
32         """
33         关闭连接
34         :return:
35         """
36         self.__transport.close()
37
38     def cmd(self, command):
39         """
40         命令执行方法
41         :return:
42         """
43         ssh = paramiko.SSHClient()
44         ssh._transport = self.__transport
45         stdin, stdout, stderr = ssh.exec_command(command)
46         result = stdout.read()
47         print(result.decode())
48
49     def upload(self,local_path, target_path):
50         """
51         上传操作方法
52         :return:
53         """
54         sftp = paramiko.SFTPClient.from_transport(self.__transport)
55         sftp.put(local_path, target_path)
56
57 ssh = SSHConnection()
58 ssh.connect()
59 # ssh.cmd(‘df‘)
60 # ssh.upload(‘s2.py‘, "/root/sss.py")
61 ssh.cmd(‘ls -l‘)
62 ssh.close()

数据库的,从单表练习开始,再用一对多,最后多对多

 1 #!/usr/bin/env python
 2 from sqlalchemy import create_engine
 3 from sqlalchemy.ext.declarative import declarative_base
 4 from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index
 5 from sqlalchemy.orm import sessionmaker, relationship
 6 engine = create_engine(‘mysql+pymysql://test:[email protected]/s13‘, max_overflow=5)
 7
 8 Base = declarative_base()
 9
10
11 class HostToHostUser(Base):
12     """
13     定义host_to_host_user表的类
14     """
15     __tablename__ = ‘host_to_host_user‘
16     nid = Column(Integer, primary_key=True, autoincrement=True)
17     host_id = Column(Integer, ForeignKey(‘host.nid‘))
18     host_user_id = Column(Integer, ForeignKey(‘host_user.nid‘))
19
20     host = relationship(‘Host‘, backref=‘h‘)
21     host_user = relationship(‘HostUser‘, backref=‘u‘)
22
23
24 class Host(Base):
25     """
26     定义host表的类
27     """
28     __tablename__ = ‘host‘
29     nid = Column(Integer, primary_key=True, autoincrement=True)
30     hostname = Column(String(32))
31     port = Column(String(32))
32     ip = Column(String(32))
33
34     host_user = relationship(‘HostUser‘, secondary=HostToHostUser.__table__, backref=‘h‘)
35
36
37 class HostUser(Base):
38     """
39     定义host_user表的类
40     """
41     __tablename__ = ‘host_user‘
42     nid = Column(Integer, primary_key=True, autoincrement=True)
43     username = Column(String(32))
44
45
46 def init_db():
47     """
48     表创建函数
49     :return:
50     """
51     Base.metadata.create_all(engine)
52
53
54 def drop_db():
55     """
56     表删除函数
57     :return:
58     """
59     Base.metadata.drop_all(engine)
60
61 # init_db()
62 # drop_db()
63
64 Session = sessionmaker(bind=engine)             # 建立会话保持连接
65 session = Session()
66
67 # 插入相关数据
68 # session.add_all([
69 #     Host(hostname=‘c1‘, port=‘22‘, ip=‘1.1.1.1‘),
70 #     Host(hostname=‘c2‘, port=‘22‘, ip=‘1.1.1.2‘),
71 #     Host(hostname=‘c3‘, port=‘22‘, ip=‘1.1.1.3‘),
72 #     Host(hostname=‘c4‘, port=‘22‘, ip=‘1.1.1.4‘),
73 #     Host(hostname=‘c5‘, port=‘22‘, ip=‘1.1.1.5‘),
74 #     HostUser(username=‘root‘),
75 #     HostUser(username=‘nb‘),
76 #     HostUser(username=‘db‘),
77 #     HostUser(username=‘sb‘),
78 #     HostToHostUser(host_id=1, host_user_id=1),
79 #     HostToHostUser(host_id=1, host_user_id=2),
80 #     HostToHostUser(host_id=1, host_user_id=3),
81 #     HostToHostUser(host_id=2, host_user_id=2),
82 #     HostToHostUser(host_id=2, host_user_id=3),
83 #     HostToHostUser(host_id=2, host_user_id=4),
84 # ])
85 #
86 # session.commit()
87 # host_obj = session.query(Host).filter(Host.hostname == ‘c1‘).first()
88 # host_2_host_user = session.query(HostToHostUser.host_user_id).filter(HostToHostUser.host_id == host_obj.nid).all()
89 # r = zip(*host_2_host_user)
90 # users = session.query(HostUser.username).filter(HostUser.nid.in_(list(r)[0])).all()
91 # print(users)
92
93 host_obj = session.query(Host).filter(Host.hostname == ‘c1‘).first()
94 # for i in host_obj.h:
95 #     print(i.host_user.username)
96
97 print(host_obj.host_user)
时间: 2024-10-14 10:32:33

北方姆Q python第十三天的相关文章

python第二十三天-----作业中

1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import os ,sys,time 5 6 from core import transaction #包含记账\还钱\取现等所有的与账户金额相关的操作 7 from core import user_pass #用户名检测相关 8 from core import log_file #日志相关 9 10 11 def login():#开始函数 12 # ti

笨办法学Python(十三)

习题 13: 参数.解包.变量 在这节练习中,我们将讲到另外一种将变量传递给脚本的方法(所谓脚本,就是你写的 .py 程序).你已经知道,如果要运行 ex13.py,只要在命令行运行 python ex13.py 就可以了.这句命令中的 ex13.py 部分就是所谓的"参数(argument)",我们现在要做的就是写一个可以接受参数的脚本. 将下面的程序写下来,后面你将看到详细解释. 1 from sys import argv 2 3 script, first, second, t

初学 Python(十三)——匿名函数

初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做对象 f = lambda x,y:x+y print f(1,2) #做参 print reduce(lambda x,y:x+y,[1,2,3,4,5,6]) #做返回值 def build(x,y): return lambda:x*x+y*y g = build(1,2) print g print g()

Python学习十三:map/reduce

map()和reduce()是Python内建的两个高阶函数.怎么理解他们呢? 用法: 1.map():map函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 2.reduce():reduce把一个函数作用在一个序列[x1, x2, x3-]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x

那些年被我坑过的Python——第十三章:一夫当关(设计堡垒机)

  堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且只能严格按守卫的分配进入指定的建筑,且每个建筑物还有自己的权限访 问控制,不同级别的人可以到建筑物里不同楼层的访问级别也是不一样的.还有就是,每个进入城堡的人的所有行为和足迹都会被严格的监控和纪录下来,一旦发生 犯罪事件,城堡管理人员就可以通过这些监控纪录来追踪责任人. 堡垒要想成功完全记到他的

python第十三章

堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 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_polic

Python爬虫(十三)_案例:使用XPath的爬虫

本篇是使用XPath的案例,更多内容请参考:Python学习指南 案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载到本地. #-*- coding:utf-8 -*- #tieba_xpath.py """ 作用:本案例使用XPath做一个简单的爬虫,我们尝试爬去某个贴吧的所有帖子 """ import os import urllib2 import urll

python 归纳 (十三)_队列Queue在多线程中使用

# -*- coding: UTF-8 -*- """ 多线程同时读队列 总结: 1. 会阻塞 if self._jobq.qsize() > 0 进入逻辑,此时被其他线程把数据取完了, 在data = self._jobq.get() 阻塞 2. 需要学习锁使用 逻辑: * 主线程提前往队列写好所有数据 * 子线程读取队列数据,没有就退出线程 """ import Queue import threading import time im

学习python第十三天

知识总结 css语法 css的四种引入方式 css选择器 css属性 一.css语法 css规则主要由两部分组成,选择器和一条或多条声明组成: 列: 1 h1 {color:red; font-size:14px;} h1为选择器,color:red为声明,其中color为属性,red为值 二.css的四种引入方式 1.内行式 在标记的style属性中设置css样式,没有将css的有时显示出来 1 p style="background-color: rebeccapurple">