jenkins优雅的增加一个windows节点
配置windows这里我选择使用ssh来连接windows,这样可以完全由jenkins来管理windows节点,比如agent的启动与停止、agent的更新等都不需要登录windows来操作了。
安装openssh server这里选择moba ssh server, 下载地址:https://mobassh.mobatek.net/download.html moba ssh server 基于 cygwin 和原生windows有差别,特殊情况下执行结果不一致,我放弃了,转而使用原生 openssh 服务
GitHub地址:https://github.com/PowerShell/Win32-OpenSSH/releases
最新版和jenkins兼容性有些问题,我用的是 v8.1.0.0p1-Beta 版, 下载 OpenSSH-Win64.zip 解压到 windows 的 C:\Program Files\OpenSSH 目录下,然后执行(管理员权限运行powershell)
123456789101112131415cd "C:\Program Files\ ...
Ingress Nginx 配置ssl双向认证
记录一下在kuberentes下使用ingress-nginx来配置ssl双向认证,可以参考其他几篇文章:使用certbot自动申请ssl证书
使用acme.sh来自动更新https证书
制作和使用自签名证书
Nginx配置SSL双向认证
创建CA证书执行以下命令,创建自签的CA证书。
1openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3650 -nodes -subj '/CN=Fern Cert Authority'
生成server证书
这里可以使用公共的CA签发的证书, 比如各大云服务商购买的证书。下面是自签证书的步骤。
生成Server端证书的请求文件1openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN=foo.bar.com'
使用根证书签发Server端请求文件,生成Server端证书1openssl x ...
Kubernetes创建一个只读用户
其实用到的是RBAC授权,官方文档在:https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/
生成证书12345678# 生成私钥openssl genrsa -out dev.key 2048# 基于这个私钥生成证书请求openssl req -new -key dev.key -out dev.csr -subj "/CN=dev"# 使用CA证书签发openssl x509 -req -in dev.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out dev.crt -days 3000
通过证书生成kubeconfig配置文件12345678910111213141516171819202122232425262728# 生成用户kubeconfigkubectl config set-cluster kubernetes \ # kubeco ...
shell脚本条件判断与比较运算
if 的基本语法:1234567if [ -f /tmp ];then echo "是一个普通文件"elif [ -d /tmp ];then echo "是一个目录"else echo "其他类型"fi
文件/目录 判断常用的
运算符
作用
-d
测试文件是否为目录
-e
测试文件是否存在
-f
判断是否为一般文件
-r
测试当前用户是否有权限读取
-w
测试当前用户是否有权限写入
-x
测试当前用户是否有权限执行
-s
文件长度不为零
选项
作用
[ -b FILE ]
如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ]
如果 FILE 存在且是一个字特殊文件则为真。
[ -d DIR ]
如果 FILE 存在且是一个目录则为真。
[ -e FILE ]
如果 FILE 存在则为真。
[ -f FILE ]
如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ]
如果 FILE 存在且已经设置了 ...
ArchLinux安装记录
官方文档 ArchWiki 已经写的很好了,但是每次安装的时候都要踩坑,所以开个文章记录一下。
磁盘分区与格式化123parted /dev/sda mklabel gpt mkpart ESP fat32 1M 513M set 1 boot on mkpart primary ext4 513M 100% printmkfs.fat -F 32 /dev/sda1mkfs.ext4 /dev/sda2
挂载与chroot操作chroot后相当于进入了安装后的系统内进行操作
123456mount /dev/sda2 /mntmount --mkdir /dev/sda1 /mnt/bootpacstrap -K /mnt base linux linux-firmwaregenfstab -U /mnt >> /mnt/etc/fstabarch-chroot /mnt
常用配置配置时区12ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimehwclock --systohc
配置locale1pacman ...
Fail2ban配合Docker使用解决暴力破解
fail2ban正常使用可以参考使用Fail2ban抵御暴力破解和cc攻击,但是对于使用了Docker host网络的容器来说是不生效的。原因最后说, 我们先复原一下部署情况
环境现状服务器是我自己的服务器,使用Nginx做入口,反向代理到不同的后端,后端服务和Nginx都是运行在Docker里,使用Docker的自定义网络进行互联。其中Nginx容器使用的是Host网络
配置fail2ban确定Docker版Nginx日志路径Linux内一切皆文件,Docker会将日志写入到主机的一个日志文件中。通过
1docker inspect nginx --format "{{.LogPath}}"
可以查看到容器的日志位置
创建配置文件/etc/fail2ban/jail.d/nginx-cc.conf123456789[nginx-cc]enabled = trueport = http,httpsfilter = nginx-ccaction = %(action_mwl)smaxretry = 50findtime = 1 ...
使用Fail2ban抵御暴力破解和cc攻击
fail2ban 是一款防止暴力破解和cc攻击的开源工具,采用Python编写。
常用组件
工具
作用
fail2ban-client
客户端工具
fail2ban-regex
验证正则匹配
1234567891011# 查看启用的规则fail2ban-client status# 查看规则详情fail2ban-client status sshd# 重新加载配置fail2ban-client reload# 手动解禁IPfail2ban-client set sshd unbanip 192.168.1.1
配置文件目录
作用
/etc/fail2ban/jail.d
ban的规则,如多少次触发,触发后封禁多久等
/etc/fail2ban/filter.d
过滤规则,匹配日志的正则配置
规则测试创建配置文件/etc/fail2ban/jail.d/nginx-cc.conf
123456789[nginx-cc]enabled = trueport = http,httpsfilte ...
Python遍历文件或文件夹
说明root: 当前遍历到的目录, 也就是所在的目录, 字符串dirs: 当前目录下的子目录列表files: 当前目录下的文件列表
比如文件结构 /tmp/1/ :
123451├── file1├── file2├── folder1└── folder2
脚本内容:
1234for root, dirs, files in os.walk("/tmp/1/"): print("root", root) print(dirs) print(files)
输出结果
123456789101112131415161718# 当前的root是/tmp/1/# root下的目录列表为:['folder2', 'folder1']# root下的文件列表为['file2', 'file1']# 遍历到的下一个root, 里面的文件和目录都为空./tmp/1/folder2[][]# 遍历到的下一个root/tmp/1/folder1[][]
遍历所有文 ...
Python读写文件
使用Python读写文件很方便,有多种方法,但是读写大文件还是需要优化的。
python open文件的模式:
模式
描述
r
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+
打开一个文件用于读写。文件指针将会放在文件的开头。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w
打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab
以 ...
gpg使用记录
要了解什么是GPG,就要先了解PGP。
1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。
GPG有许多用途,本文主要介绍文件加密。至于邮件的加密,不同的邮件客户端有不同的设置。
当前我的系统环境是Ubuntu 22.04 gpg版本是gpg (GnuPG) 2.2.27。
创建密钥对12345# 快速生成密钥对gpg --gen-key# 交互式创建gpg --full-gen-key
这里我们使用 –full-gen-key 来生成密钥对,首先选择密钥类型,选择 1 (默认) 即可
12345678910111213$ gpg --full-gen-keygpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc.This is free software: you are free to ...