python发送request提示can't encode character
背景
以一个python的request的demo为例,访问百度首页并打印百度首页文本信息:
12345import requestsurl = "https://baidu.com"response = requests.get(url)print(response.text)
会存在如下报错信息:
12345C:\Users\liu.ziyi\AppData\Local\Programs\Python\Python38\python.exe E:/Python/httpRunnerDemo/kom/kom_session2.pyTraceback (most recent call last): File "E:/Python/httpRunnerDemo/kom/kom_session2.py", line 8, in <module> print(r.text)UnicodeEncodeError: 'gbk' codec can't encode character '\xa ...
python+requests请求双向认证网站
背景
以一个python的request的demo为例,访问双向认证的网站并打印其首页文本信息:
12345import requestsurl = "https://pro6.aishu.cn"response = requests.get(url)print(response.text.encode("GBK", "ignore"))
会报如下错误:
123456789C:\Users\liu.ziyi\AppData\Local\Programs\Python\Python38\python.exe E:/Python/httpRunnerDemo/kom/kom_session.py<html><head><title>400 No required SSL certificate was sent</title></head><body><center><h1>400 Bad Request</h1>< ...
Flask项目启动报错cannot import name cached_property from werkzeug
背景
启动Flask项目时存在如下报错:
12345C:\Users\lzy\AppData\Local\Programs\Python\Python38\python.exe D:/Python/FlaskDemo/main.pyTraceback (most recent call last): File "D:/Python/FlaskDemo/main.py", line 1, in <module> ...ImportError: cannot import name 'cached_property' from 'werkzeug' (C:\Users\lzy\AppData\Local\Programs\Python\Python38\lib\site-packages\werkzeug\__init__.py) ...
解决
1、显示导入原因:是因为werkzeug新版本里需要显式导入该模块。
在如下文件中加入:
1from werkzeug.utils import cached_prop ...
如何去除Pipeline中参数化构建时参数的头尾空格
背景
现在一般都会使用Jenkins的Pipeline进行构建,那么不可避免要使用参数化构建,在使用参数化构建时,用户的输入都是不可靠的,自然填入的string参数可能会携带空格从而导致构建失败,那么应该如何处理这个问题?
探索
Jenkinsfile如下:
1234567891011121314151617pipeline { agent { label 'k8s' } parameters { string(name: 'Branch', defaultValue: '', description: '请指定需要构建的分支!') } stages { stage('Source') { steps { echo "${params.Branch}" } } & ...
python+allure2生成测试报告
安装allure-pytest
allure-pytest是python的一个第三方库。用于连接pytest和allure,使它们可以配合在一起使用。allure-pytest基于pytest的原始执行结果生成适用于allure的json格式结果。该json格式结果可以用于后续适用allure生成html结果。
命令行或者终端中输入 pip install allure-pytest 即可进行安装:
1$ pip install allure-pytest
allure安装可参考定制化报告插件allure2安装。
实例
基于pytest写个测试文件
1234567891011121314151617181920def func(x): return x + 3def test_func_0(): src = 0 expect = 3 assert func(src) == expectdef test_func_1(): src = 0.1 expect = 3.1 assert func(src) == expectdef test_func_2(): src = -1 exp ...
Jenkins升级
背景
在Jenkins 主页面总是提示有最新版本,要下载更新,看着很烦人
为了更好的使用最新的系统插件,更新是必要的
步骤
查看war包所在的目录:
1234567[root@lemonlzy ~]# find / -name jenkins.war/usr/lib/jenkins/jenkins.war[root@lemonlzy ~]# cd /usr/lib/jenkins/[root@lemonlzy jenkins]# lsjenkins.war
停止Jenkins 服务:
1systemctl stop jenkins
备份war包:
12cd /usr/lib/jenkins/mv jenkins.war jenkins.war.bak
在/usr/lib/jenkins/目录下下载最新war包(可在官网下载通过ftp上传,或者直接wget下载,但是需要知道具体的版本号,这里以2.263为例):
1wget https://updates.jenkins-ci.org/download/war/2.263/jenkins.war
启动Jenkins 服务:
1 ...
Linux禁止root用户直接登录
背景
每次登录自己的云服务器,就会发现就十几万的登录失败,一看就是有人在恶意破解密码,很是闹心,那么直接禁止root用户登录吧(其实这也是Linux权限管理的一部分):
1234Last failed login: Thu Oct 22 20:41:42 CST 2020 from 175.0.53.4 on ssh:nottyThere were 148991 failed login attempts since the last successful login.Last login: Wed Oct 7 23:34:49 2020 from 113.246.154.166[root@lemonlzy ~]#
在禁止root用户登录服务器前,请创建好登录服务器的子账户和密码。
创建Linux账户
创建demo账户并更新密码:
12345678[root@lemonlzy ~]# useradd demo[root@lemonlzy ~]# passwd demoChanging password for user demo.New password: BAD PASSWO ...
python项目自动生成requirement.txt
Python项目中,一般都会有一个 requirements.txt 文件,这个文件主要是用于记录当前项目下的所有依赖包及其精确的版本号,以方便在一个新环境下更快的进行部署,那么如何自动生成该文件?
使用 pip freeze 生成
一般情况,我们可以直接使用Python下的 pip 包管理工具,来生成 requirements.txt 文件,命令如下:
1PS C:\Users\liu.ziyi> pip freeze > E:\工作\git\Portal\partner\requestments.txt
其中,D:\pycharm\requirements.txt 为生成的 requirements.txt 文件的具体路径。通过这个 pip freeze 方式生成时,会把整个Python环境下的所有包都列出生成,比较适用于Python项目为虚拟环境的情况。
使用 pipreqs 生成
可以通过第三方库 pipreqs 来生成 requirements.txt 文件,这个方式有一个好处,那就是它可以只生成我们当前Python项目中所用到的依赖包及其版本号,而不是像 pip ...
Windows安装ADB
如果不想安装Android Studio,仅需要Adb、fastboot等工具,可在SDK 平台工具官方下载。
下载后加压,可见目录结构如下:
以ADB命令为例,有两种方式可以在windows下执行adb命令:
1. cmd在解压目录打开cmd窗口,可直接使用adb命令,在其他目录不可行:
1234D:\ADB>adb versionAndroid Debug Bridge version 1.0.41Version 30.0.4-6686687Installed as D:\ADB\adb.exe
2. 环境变量设置解压文件夹位置为path环境变量,如下:
设置完环境变量后可在任意位置打开cmd窗口执行adb命令:
1234PS C:\Users\liu.ziyi> adb versionAndroid Debug Bridge version 1.0.41Version 30.0.4-6686687Installed as D:\ADB\adb.exe
kubernetes之如何在POD外执行复杂shell命令
背景
查看官方文档,可以很轻易知道在POD外执行某个容器内的某个命令如下:
1kubectl exec [POD名称] -- [需要执行的命令]
演示(进入容器内并列出当前文件夹文件信息):
12345678[root@lemonlzy data]# kubectl exec -it kom-7ff799c96d-4tkqh -- ls'${catalina.base}' commons-daemon.jar shutdown.sh bootstrap.jar configtest.sh startup.sh catalina-tasks.xml daemon.sh tomcat-juli.jar catalina.sh digest.sh tool-wrapper.sh categoryWebService_Error.log error.log version.sh ciphers.sh logs commo ...