使用python控制windows鼠标和键盘
python 在 windows 下操作键盘鼠标(有点类似于按键精灵),可以使用 PyUserInput 模块,PyUserInput 依赖 pywin32 和 pyHook 模块。pyautogui 感觉很不错,可以实现 PyUserInput 的所有功能,并且可以根据提供的截图来进行图像识别。 PyUserInput安装 PyUserInputPyUserInput 模块安装前需要安装 pywin32 和 pyHook 模块pip install pywin32 pyHook 模块可从这里下载,需要下载对应版本的 whl 文件http://www.lfd.uci.edu/~gohlke/pythonlibs/安装: pip install xxx.whl PyUserInput 模块官网: https://github.com/PyUserInput/PyUserInput 这个模块官方已经不维护了,目前来看 python3.7+win11 还可以用,后续有需要的同学可以看看 Pynput 使用...
快速上手vagrant
vagrant 是一个虚拟机管理工具 (虚拟机编排工具),使用方式有点类似于 docker-compose,这个工具的优势就是可以把手动安装虚拟机这个操作转换成通过代码来控制虚拟机有点类似于使用 dockerfile 来构建 docker 镜像的感觉。 常用命令 命令 作用 vagrant init 生成 vagrantfile 文件 vagrant up 启动虚拟机 vagent halt 关闭虚拟机 vagrant box list 查看安装的 box(虚拟机镜像) vagrant box add centos/7 安装 box(虚拟机镜像) vagrant ssh (hostname) 通过 ssh 连接 常用 vagrantfile批量创建虚拟机123456789101112131415161718192021222324252627282930313233343536# -*- mode: ruby -*-# vi: set ft=ruby :servers = { :client =>...
hexo butterfly 主题使用记录
开始使用nodejs 使用 v20.17.0 版本包管理使用 npm 123456789101112# 初始化主题,第一次需要执行git submodule initgit submodule update# 安装依赖包npm i## 查看效果npx hexo s# 创建新文章npx hexo new "测试文章" 然后将 source/_posts/测试文章.md 移动到对应的分类目录下。 由于 hexo-abbrlink 和 hexo-auto-category 的冲突,需要执行 2 次 npx hexo g 才能正确生成需要的 front matter这个问题已经解决了, 替换成了包 hexo-abbrlink-iuxt 解决了这个问题, 执行 npx hexo g 即可自动生成固定链接和分类 封面图1280 x 720 或者 3:2 的比例 常用 shortcode 记录标签外挂官方文档:...
一个特殊的空格--硬空格
事情的起因我在测试一个 nginx 配置文件,配置文件来自于印象笔记网页版复制(本人用的 linux,没有印象笔记客户端可用),编辑的时候发现了蹊跷: 不过没有太在意,还有一点蹊跷的是 vim 编辑的时候该高亮的地方也不高亮了,接着改好了配置文件后,发现 nginx -t 怎么测试都不通过。 排查问题当然怀疑是 nginx 配置文件的问题,将配置文件复制到 windows 下,使用 notepad++ 编辑(显示所有符号)发现里面的空格并不是空格 真正的空格应该显示的是 .,tab 显示的应该是 ➡️。将这个 “ 空格 “ 复制出来,然后找个在线转换器http://www.hiencode.com/jinzhi.html转换成 16 进制数据,发现是 a0 然后到https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8搜了下 a0,发现是一个叫做不换行空格的东西,又叫硬空格(hard space、fixed space) 用途是禁止换行,常用于 html,比如地址 xx省xx市...
Linux网络设备命名规则及修改
命名规则centos 从 7 开始网卡名称默认不再是熟悉的 eth0、而是类似于 ens33、enps0f0 等rhel7官方文档 这么做的好处是在 Red Hat Enterprise Linux 7 中,udev 支持大量不同的命名方案。默认是根据固件、拓扑及位置信息分配固定名称。这样做的优点是命名可完全自动进行,并可预期,即使添加或删除硬件后也会保留其名称(不会出现重复枚举的情况),同时可顺利更换损坏的硬件。不足之处是,相比传统的名称,比如 eth0 或 wlan0,这些名称有时会比较难理解。例如:enp5s0。 设备命名的过程 /usr/lib/udev/rules.d/60-net.rules 文件中的规则会让 udev 帮助工具 /lib/udev/rename_device 查看所有 /etc/sysconfig/network-scripts/ifcfg-suffix 文件。如果发现包含 HWADDR 条目的 ifcfg 文件与某个接口的 MAC 地址匹配,它会将该接口重命名为 ifcfg 文件中由 DEVICE...
Puppet Server从部署到上线使用
这是一篇 todo 文章,可以快速将 puppetserver 部署起来,经常遇到的坑也会写出来,但是自己不踩吭记忆是没有成长的(不仅仅是收获经验,重要的是增加了学习的能力),如果不缺时间的话,强烈建议看官方文档:https://puppet.com/docs/puppet/7/server/install_from_packages.html 安装 master通过源来安装12sudo rpm -Uvh https://yum.puppet.com/puppet7-release-el-8.noarch.rpmsudo yum install puppetserver 启动 master 服务1sudo systemctl start puppetserver 如果报错 Found master private key '/etc/puppetlabs/puppet/ssl/private_keys/localhost.localdomain.pem' but master public key...
Linux网络管理命令
2009 年 Debian 开发者邮件列表宣布放弃使用缺乏维护的 net-tools 工具包,net-tools 包含历史悠久的 ifconfig, netstat 等网络相关的命令iproute2 用于取代 net-tools,在大部分的发行版都自带了。命令有 ip, ss, net 等命令替代了之前的网络操作命令。 命令对照表 net-tools iproute2 arp -na ip neigh ifconfig ip link ifconfig -a ip addr show ifconfig -s ip -s link ifconfig eth0 up ip link set eth0 up ipmaddr ip maddr iptunnel ip tunnel netstat ss netstat -i ip -s link netstat -g ip maddr netstat -l ss -l netstat -r ip route route add ip route add route...
我们为什么要用容器(或者说k8s)
起因或现状 公司准备上线 k8s 集群,目前在云上有微软 azure 托管的 aks,aks 上面的用来部署一些对外的业务,数据中心(有两个 - 移动和电信)是我自建的,主要是对内网服务 现在的问题是我们构使用的是 jenkins,构建方式和传统虚拟机发布没什么区别,只是换成了容器,简单来说就是: 传统发布(所有环境流程一致): 拉代码 - 构建 - 可执行文件上传服务器现在发布(所有环境流程一致): 拉容器镜像(基础环境) - 拉代码 - 构建 - 上传镜像仓库 所有环境的发布都需要准备一套环境,也就是说容器并没有解决我们的环境标准化的问题,比如: 我们的 jenkins 的 node 节点在数据中心、办公室内网、azure 云上都有,因为这些环境都需要构建一遍镜像围绕构建需要提供一些基础设施,比如我们 apt、maven、pypi 等的缓存服务(用的 nexus),容器镜像仓库(用的 jfrog)这些都需要在每个环境准备一套,每个服务还需要做高可用,简单算下来也有 6 个 nexus 和 4 个 jfrog 如果我们换成办公室构建完成,上传到公网的 jfrog...
使用 docker buildx 构建不同平台的镜像
一直使用 oracle 提供的免费 arm 云服务器,自己的 pc 又是 x86 架构,x86 构建出来的镜像不能在 arm 平台使用 使用 buildx 可以生成跨平台镜像,跨平台镜像就是同一个镜像名称,同一个 tag,但是 arm 机器和 amd64 机器拉下来的镜像 hash 是不一样的 创建 docker buildx 构建环境 这里的 driver 有两种,一种是 docker-container,一种是 docker,构建多平台版本只能使用 docker-container, –use 是将切换为默认 1docker buildx create --use --name buildx --node buildx --driver-opt network=host 准备 qemu 模拟器构建不通架构的镜像是通过 qemu 来模拟的,你会发现构建过程中,和 build 机器同架构的会构建很快,不同架构构建很慢。 12345678# 安装全部模拟器docker run --privileged --rm tonistiigi/binfmt --install...
使用certbot自动申请ssl证书
certbot 可以自动申请 let’s encrypt https 证书, 并且可以自动续期,另见:使用acme.sh来自动更新https证书 申请证书前准备添加 DNS 解析域名为你需要申请 https 证书的域名,添加 A 记录到服务器 IP 安装 certbot 和 certbot nginx plugin12sudo apt install certbotsudo apt install python3-certbot-nginx 申请证书1sudo certbot --non-interactive --redirect --agree-tos --nginx -d password.zahui.fan -m captain@zahui.fan 以上操作除了申请证书外,还可以自动添加 https 配置到 nginx,很方便。 证书续期1sudo certbot renew 添加到 root 用户的 crontab 里面就可以实现自动续期,距离到期时间太长会自动跳过续期 删除证书1sudo certbot delete