pass

Kubernetes的Secret对象的使用

。_饼干妹妹 提交于 2019-11-30 15:15:32
Secret可以把想要访问的加密数据,存放到Etcd中,然后Pod可以通过的Volume的方式,访问到Secret保存的信息 ,每当数据修改的时候,Pod挂载的Secret文件也会被修改,特别适合用来存放账户密码 一、创建Secret对象 1. 通过文件创建 生成两个文件,分别是username.txt和password.txt echo "chenqionghe" > ./username.txt echo "111111" > ./password.txt 创建 kubectl create secret generic user --from-file=./username.txt kubectl create secret generic pass --from-file=./password.txt 2. 通过yaml创建 注意:值必须是base64转码 apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: user: Y2hlbnFpb25naGUK pass: MTExMTExCg== 创建 kubectl apply -f mysecret.yaml 二、获取secret对象 root@VM-0-8-ubuntu:/home/ubuntu/project-volume#

20190919-4 单元测试 结对

混江龙づ霸主 提交于 2019-11-30 12:07:16
作业要求参见: https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629 。 结对伙伴:徐姗姗 要求1:对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 功能一: 测试用例 预期结果 在命令行输入f4并回车。 程序运行,打印出第一道四则运算题,换行打印“?”,用户可在“?”后输入答案。 输入正确答案并回车。 提示“答对啦,你真是个天才!”,并打印下一道随机四则运算题。 输入错误答案并回车。 提示“再想想吧,答案似乎是xxx(正确答案)喔!”,并打印下一道随机四则运算题。 回答完20道题并回车。 提示“你一共答对xxx(回答正确数)道题,共20道题。”,并结束程序。 功能二: 测试用例 预期结果 在命令行输入f4并回车。 程序运行,随机生成的四则运算题目中包含位置合理的括号。 输入正确答案并回车。 提示“答对啦,你真是个天才!”,并打印下一道带有括号的四则运算题。 输入错误答案并回车。 提示“再想想吧,答案似乎是xxx(正确答案)喔!”,并打印下一道带有括号的四则运算题。 回答完20道题并回车。 提示“你一共答对xxx(回答正确数)道题,共20道题。”,并结束程序。 功能三: 测试用例 预期结果 在命令行输入f4 -c -3。 提示“题目数量必须是 正整数”。 在命令行输入f4 -c

运维面试笔试题

瘦欲@ 提交于 2019-11-30 12:00:08
一.基础面试 (一).linux面试题 1.写一个脚本查找最后创建时间是三天前,后缀是*.log的文件并删除 find . -ctime +3 -name ‘*.log’|rm -rf 2.统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip cat access.log|awk’{print$1}’|uniq -c|sort -rn|head -10 3.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log。 tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log tcpdump -w test host 192.168.1.1 and tcp port 22 > tcpdump.log 4.查出哪个IP地址连接最多 netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort - netstat -na|grep SYN|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -r 5.对服务器各种状态下的连接数分组并查询得到结 netstat -n|awk ‘/^tcp/{

面向对象3-继承

别等时光非礼了梦想. 提交于 2019-11-30 09:28:34
一、多继承 MRO 即 method resolution order (方法解释顺序),主要用于在多继承时判断属性的路径。 python新式类的多继承顺序采用 c3算法 如果继承至一个基类: class B(A) 这时B的mro序列为[B,A] 如果继承至多个基类 class B(A1,A2,A3 ...) 这时B的mro序列 mro(B) = [B] + merge(mro(A1), mro(A2), mro(A3) ..., [A1,A2,A3]) merge操作就是C3算法的核心。 遍历执行merge操作的序列, 如果一个序列的第一个元素,是其他序列中的第一个元素,或不在其他序列出现,则从所有执行merge操作序列中删除这个元素,合并到当前的mro中。 即使满足:序列中第一个元素,且在其他序列要么也出现在第一个位置,要么不出现 merge操作后的序列,继续执行merge操作,直到merge操作的序列为空。 如果merge操作的序列无法为空,则说明不合法 python官方网站相关 例子: class A(O):pass class B(O):pass class C(O):pass class E(A,B):pass class F(B,C):pass class G(E,F):pass A、B、C都继承至一个基类,所以mro序列依次为[A,O]、[B,O]、[C,O]

Pandas 第三部分

我的未来我决定 提交于 2019-11-30 06:15:24
1 import numpy as np 2 import pandas as pd 3 4 df = pd.read_excel("d:/test.xlsx") 5 #数据重塑和轴向旋转 6 if 0: 7 #1,层次化索引 8 if 0: 9 #层次化索引是pandas 的一项重要功能,它能使我们在一个轴上拥有多个索引 10 11 #Series 的层次化索引 12 if 0: 13 s = pd.Series(np.arange(1,10),index=[['a','a','a','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,3]]) 14 print(s) 15 if 0: 16 print(s.index) 17 pass 18 if 0: 19 #对外层索引进行操作 20 print(s['a']) 21 print(s['a':'b']) 22 if 0: 23 #对内层索引进行操作 24 print(s[:,1]) 25 26 #索引具体的值 27 print(s['a',1]) 28 pass 29 30 if 0: 31 #通过unstack 方法可以将Series 变成 DataFrame 32 ret = s.unstack() 33 print(ret) #这时外层索引就成了行标签 ,内层索引就成了列标签 34 if

模块基础-07包

爱⌒轻易说出口 提交于 2019-11-30 03:40:21
一丶什么是包 包是模块的一种形式,包的本质就是一个含有.py的文件的文件夹。 二丶为什么要有包 模块的第一个版本只有10个功能,但是未来在扩展版本的时候,模块名和用法应该最好不要去修改,但是这只是对使用者友好,而由于版本扩展,文件越来越大,模块设计者对模块的管理、维护会越来越复杂,因此我们可以使用包来扩展模块的功能。 三丶如何用包 3.1 模块和包 导入模块发生的三件事:  1.创建一个包的名称空间  2.执行py文件,将执行过程中产生的名字存放于名称空间中。  3.在当前执行文件中拿到一个名字aaa,aaa是指向包的名称空间的 导入包发生的三件事:  1.创建一个包的名称空间  2.由于包是一个文件夹,无法执行包,因此执行包下的.py文件,将执行过程中产生的名字存放于包名称空间中(即包名称空间中存放的名字都是来自于.py)  3.在当前执行文件中拿到一个名字aaa,aaa是指向包的名称空间的 导入包就是在导入包下的.py,并且可以使用以下两种方式导入:  1.import ...  2.from ... import... 3.2扩展模块功能 如下我们如果需要扩展aaa.py模块,需要建立一个aaa的目录文件,并且删除aaa.py文件,将aaa.py修改成m1.py和m2.py两个文件,让模块的功能使用方法不改变。 # aaa.py def func1(): pass def

安卓对apk签名(检测是否签名)+安卓对apk进行反编译

我与影子孤独终老i 提交于 2019-11-30 03:10:51
1、使用apksigner检测apk是否签名 path:Android\Sdk\build-tools\version>25\lib, apksigner是7.0以后推出的,因此需大于25 命令:java -jar apksigner.jar verify -v test.apk 其中test.apk可以是完整路径 2、使用apksigner对apk签名 path同上: 命令:java -jar apksigner.jar sign --ks 替换为keystore完整路径 --ks-key-alias 替换为keystore别名 --ks-pass pass:替换为key --key-pass pass:替换为key --out 替换为输出路径 替换为签名apk路径 简单的例子: java -jar apksigner.jar sign --ks test.jks --ks-key-alias releasekey --ks-pass pass:tttest --key-pass pass:tttest --out signed.apk input.apk 3、利用apktool进行反编译 需要下载apktool.bat和apktool.jar传送门 https://ibotpeaches.github.io/Apktool/install/ apktool.bat 获取

Hydra之暴力破解二

房东的猫 提交于 2019-11-30 01:41:31
工具:Kali 版本:Kali 内置工具 Hydra 概要:介绍Hydra相关服务爆破的简单示例 SSH服务破解 hydra -l root -P /usr/share/wordlist/passwd.txt -V46 -e nsr -t 4 -s 22 192.168.223.10 ssh hydra -L /tmp/username -x 6:6:a -vVd46 -e ns -t 10 -f -t 1 -o /tmp/result -b text ssh://192.168.223.10 FTP/FTPS服务破解 hydra -L /username -P /passwd -f -V -e nsr -o /tmp/result -b jsonv1 ftp://192.168.223.10:21 Http-Proxy服务破解 hydra -l admin -P /passwd -V -e nsr -o /tmp/result -b text http-proxy://192.168.223.10 hydra -L /username -P /passwd -V -e nsr http-proxy://192.168.223.10:8080 Imap服务破解 hydra -l admin -p pass -V -e ns 192.168.223.10 -s 143 imap

How to pass common dictionary data to every page in django

感情迁移 提交于 2019-11-30 00:17:32
I have a common data {the logged-in user's message number) to display on every page. I can simply pass to template as dict={'messagenumber':5} return render_to_response('template.html',dict,context_instance=RequestContext(request)) But it looks tedious if i have this dict data pass to very page. Is there an easier way to pass common data to every page? Thanks django django-templates share | improve this question edited Sep 27 '11 at 12:41 Evgeny 3,669 2 2 gold badges 42 42 silver badges 53 53 bronze badges asked Jul 11 '10 at 2:13 icn icn 6,518 31 31 gold badges 87 87 silver badges 126 126

ajax与jsonp中的几个封装函数

时光毁灭记忆、已成空白 提交于 2019-11-29 16:42:05
首先是ajax里的get 在页面上添加几个标签用作测试 <body> <input type="text" id="user"> <input type="text" id="pass"> <input type="button" id="btn"> </body> js部分: var ouser = document.getElementById("user") var opass = document.getElementById("pass") var obtn = document.getElementById("btn") obtn.onclick = function(){ var url = "http://localhost/ajax/data/data.php"; ajaxGet(url,function(res){ console.log(res) },{ user:ouser.value, pass:opass.value }); } function ajaxGet(url,cb,data){ // 1.处理data的默认值 data = data || {}; // "url?user=admin&pass=123" // 2.解析要发送的数据 var str = ""; for(var i in data){ str += `${i}=${data[i]