Flask之服务端持久化session
需求如下:开发一个web界面,用户经过oauth认证后,给用户生成一个随机密码显示出来,并将用户名和密码发送给radiusserver用来当作WIFI密码。因为希望密码不要随便就更换,那样员工出去再进来,手机就需要重新输入新密码才能连WIFI,容易被人打。所以用session存储的方式,将密码保存一定时间。
什么是sessionsession基于cookie实现,保存在服务端的键值对(dict类型),同时在浏览器中的cookie中也对应一相同的随机字符串,用来再次请求的时候验证Flask中的session是加密的,所以需要配置SECRET_KEY
开始使用导入模块1from flask import Flask, render_template, request, session
配置SECRET_KEY1app.secret_key = os.getenv("SECRET_KEY", "not set key")
设置session类型可以存临时文件,还可以存redis、memcached、mongodb等
app.config[‘SESS ...
检查端口是否能通的几种方法
服务器上运行了一个服务,想测试一下端口通不通,可以通过以下一些方法来测试。
telnet常见的tcp端口测试都是用的telnet,用法也很简单
1telnet 10.0.0.7 22
成功会显示:
1234Trying 10.0.0.7...Connected to 10.0.0.7.Escape character is '^]'.SSH-2.0-OpenSSH_7.4
失败会显示:
12Trying 10.0.0.7...telnet: Unable to connect to remote host: Connection refused
ssh使用
1ssh root@localhost -p 8000
失败会显示
1ssh: connect to host localhost port 8001: Connection refused
curlcurl ip:port
失败会显示
1curl: (7) Failed to connect to localhost port 8001: Connection refused
netcat检查T ...
使用radius和OpenLDAP来认证unifi AP
公司目前用的WIFI是unifi的AP,员工离职后仍然可以连接公司WIFI,是一个安全隐患,所以准备将AP接入radius来认证,数据取自openldap,员工离职删除openldap账号即可。
本次操作系统使用的是CentOS 7
OpenLDAP
参考文章:https://www.server-world.info/en/note?os=CentOS_7&p=openldap
安装OpenLDAP1234yum install -y openldap openldap-clients openldap-serverscp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown ldap. /var/lib/ldap/DB_CONFIGsystemctl enable --now slapd
OpenLDAP基础配置
生成一个密码 slappasswd 将生成的密码复制保存
设置root密码
chrootpw.ldif
1234dn: olcDatabase={ ...
将wsl里的文件挂载进虚拟机
虽然不同操作系统使用起来大致类似,很多开源软件同时支持Linux和Windows,就算不支持,Windows还有cygwin或WSL,Linux也有wine,但是我感觉这两种系统最大的区别还是文件系统,比如将Linux下的文件复制到Windows,然后再复制回Linux,得到的文件和原来的是一样的吗,答案是否定的,因为文件权限可能已经发生了变化,另外Windows的NTFS大小写不敏感,导致很多时候从Linux复制文件到Windows的时候总会弹个窗问我是否覆盖,还有Linux的软链接也无法复制到Windows里面。本人平时写代码等都是在linux上运行的,不过最近系统换成了Windows,为了避免以上问题,将文件放进了WSL里面,同时用到了虚拟机做测试,所以想将wsl和虚拟机的目录进行同步,才有了这篇文章。
在Windows环境下找到想要共享的目录
以下3种都可以
在Windows下可以这样访问WSL\\wsl$\发行版名,比如\\wsl$\Ubuntu,将完整的链接复制下来。
将\wsl$\Ubuntu映射到一个虚拟盘符,比如Z:,这种方法可以用在比如vagrant上面- ...
最后一个Typora免费版0.11.18
Typora是一个所见即所得的Markdown跨平台写作工具,目前已经发布正式版,并且更改为付费模式,0.11.18_beta是最后一个免费的测试版,有需要的可以选择下载。
Windows用户下载地址: https://github.com/iuxt/src/releases/download/2.0/typora-0-11-18.exe
0.11.18现在被远程施法了,会提示过期无法使用,可以使用0.9.96版
下载地址1:https://github.com/iuxt/src/releases/download/2.0/typora-setup-x64_0.9.96.exe
下载地址2:https://file.babudiu.com/f/x2ux/typora-setup-x64_0.9.96.exe
Mac用户下载地址1: https://github.com/iuxt/src/releases/download/2.0/typora-0-11-18.dmg
下载地址2:https://file.babudiu.com/f/vlsA/typora-0-11-18.dmg
U ...
Python使用dotenv来管理环境变量
管理环境变量是一件比较麻烦的事情,好在python有python-dotenv可以帮助我们来简化这个操作
安装直接pip来安装就好
1pip install python-dotenv
使用创建.env文件,记得添加到.gitignore里面
.env文件内容为键值对形式
12#这是注释FOO="BAR"
123456import dotenvimport osdotenv.load_dotenv()print(os.getenv("FOO"))
shell脚本怎么使用.env文件123source .envecho $FOO
笔记本电脑CPU性能被锁定在0.78GHz的原因及解决方案
家里的旧笔记本电脑使用电池正常工作,但是插上电源就锁频率800MHz,非常的卡,Google了一下,总结如下。
出现这种情况的原因
可能是由于供电不好,比如充电器非原装,或者散热不行系统会自动降低cpu频率来保证系统稳定
一劳永逸的解决方案
使用原装的充电器
定期清理笔记本电脑灰尘
看看bios里面有没有相关的设置BD PROCHOT,把它关掉,或者升级bios试试看看。
Windows系统怎么解决Just download throttlestop and Disable BD PROCHOT and Turbo不过每次重启都需要重新设置一下官网下载地址:https://www.techpowerup.com/download/techpowerup-throttlestop/
Ubuntu系统怎么解决1234567apt install cpufrequtils msr-tools -ycpufreq-set -c 0 -g performancecpufreq-set -c 1 -g performancecpufreq-set -c 2 -g performancecp ...
使用typora更好更快地写hugo博客
hugo是一个静态博客生成工具,自己有自己的文件组织方式,所以导致的结果就是使用typora不能正常显示图片,插入图片也不能放在正确的位置上。typora 已经成为收费软件了,有能力请支持正版,或者使用旧版本最后一个Typora免费版0.11.18
图片管理
按照图示设置后,即可正常显示图片,复制粘贴图片也能复制到正确的位置,设置完成后,发现markdown的frontmatter增加了2行:
12typora-root-url: ../../statictypora-copy-images-to: ../../static/img
意思是将图片放在static的img目录里。每次都在markdown文件添加上这两行即可,那么有没有办法自动添加呢?
当然有~
编辑hugo目录下的archetypes/default.md,这个文件是默认创建的模版。在里面添加上上述内容。
自动生成分类
不想让所有的markdown文件都在一个文件夹内,比如想按文件夹分类,A文件夹内的文章发布后就是在A分类下。
可以将archetypes/default.md里面的categories修改成
1c ...
vagrant常见报错解决方案
vagrant是一款虚拟机管理工具,可以通过代码来控制虚拟机的状态,帮助提升开发效率
提示umount: /mnt: not mounted
出现这种情况一般是由于安装了vagrant-vbguest插件, 但是这个插件并不能自动帮助我们安装vbguest这种情况可能是由于内核版本比较低导致的
方案1: 升级内核 vagrantfile增加一行
1config.vbguest.installer_options = { allow_kernel_upgrade: true }
方案2: 降级vagrant-vbguest
12vagrant plugin uninstall vagrant-vbguestvagrant plugin install vagrant-vbguest --plugin-version 0.21
报错网段不在nat网段里面vagrantfile 添加virtualbox__intnet参数
1node.vm.network "private_network", ip: "10.0.0. ...
使用expect来解决命令交互问题
linux里面很多命令都是需要人为交互的,对于做成脚本来说,有点不合适了,比如通过密码连接SSH必须要在控制台输入密码(安全起见还是用rsa key),expect是预期的意思,它可以实现我们预期的结果。
安装
ubuntu/debian
1sudo apt install -y expect
centos/rhel
1sudo yum install -y ecpect
解释器使用expect12345678910111213141516#!/usr/bin/expectset IP [lindex $argv 0] # 读取第1个参数设置为 IP 变量set PASSWD [lindex $argv 1] # 读取第2个参数设置为 PASSWD 变量set CMD [lindex $argv 2] # 读取第3个参数设置为 CMD 变量spawn ssh $IP $CMD # spawn 来给命令加壳,以便于断言输出expect { # expect 是断言命令 # 如果读取到屏幕上输出 (yes/no) 信息,则输入 " ...