Category: newest
-

-

mac check local dns after ikev2
ping not ok ,it’s normal https://www.dnsleaktest.com ,Standard test , look you strongswan public IP mac: scutil –dns | grep -A 5 “resolver”|grep nameservernameserver is you swanctl.conf dns dig google.com ,look SERVER is you swanctl.conf dns
-

mac ikev2 authentication of ‘moneyslow.com’ (myself) with RSA signature failed
swanctl –log reason: Mac IKEv2 still force SHA-1 , but Rocky Linux 9 (Crypto Policies)not support SHA-1 ,so :
-

-

Batch generation of nginx configuration files
first,need a template file like this: all the domain in file : domain_moneyslow.txt next , a shell for create config file from domain_moneyslow.txt and template :
-

-
ubuntu22.04 strongswan swanctl
https://pcvogel.sarakura.net/2024/05/01/42720 只允许用户从一个终端登录上来(第二个终端登录,会踢掉第一个终端): monitor connections: https://medium.com/@prasanth.swaminathan/tiny-experiments-2-exploring-strongswans-commands-to-manage-and-monitor-ipsec-connections-63c5c7c3ea1c
-

-

ubuntu22.04 auto run on startup iptables -t nat -A POSTROUTING -j MASQUERADE
在 Ubuntu 22.04 中,由于系统默认使用 systemd 且 iptables 规则重启后会丢失,要实现开机自动执行这条 NAT 转发规则,最可靠的方式是通过 systemd 服务来实现。以下是详细步骤: 新建一个文件 /usr/local/bin/iptables-nat.sh ,内容: chmod +x /usr/local/bin/iptables-nat.sh 再新建一个启动文件:/etc/systemd/system/iptables-nat.service systemctl daemon-reloadsystemctl enable iptables-nat.servicesystemctl start iptables-nat.service 以下是验证:
-

-

-
wordpress升级插件失败导致网站故障,提示“Briefly unavailable for scheduled maintenance. Check back in a minute”
尤其是国内的worepress网站,升级插件连不到外网,很容易发生错误:Briefly unavailable for scheduled maintenance. Check back in a minute 方法1:登录到你网站根目录,然后找到.maintenance文件删除即可。 方法2:修改wp-activate.php文件如果你找不到上面说的这个.maintenance文件,那么可以在网站根目录找到wp-activate.php这个文件:在第9行,define( ‘WP_INSTALLING’, true );修改为:define( ‘WP_INSTALLING’, false); 最终解决办法:升级的时候想办法让你的网站可以临时上外网。
-

-

-

-

linux compress pdf command gs,to 10%
使用 Ghostscript(推荐)Ghostscript 是 Linux 下处理 PDF 最常用的工具之一,通过重新渲染 PDF 内容来压缩文件。 命令示例: 参数说明: -dPDFSETTINGS=/ebook:压缩级别,可选值:/screen:最低质量,最小文件(适用于屏幕查看)/ebook:中等质量(默认推荐)/printer:高质量打印/prepress:最高质量,用于印刷-dCompatibilityLevel=1.4:兼容 PDF 1.4 版本。 优点:压缩效果显著,支持自定义质量。缺点:重新渲染可能导致某些复杂内容(如高精度图像)轻微失真。 实际操作可以证明,30M的文件可以压缩到3M。
-

-

Discuz3.4升级3.5报错Error:Can’t DROP ’email’; check that column/key exists
在确定利用phpmyadmin升级cdb_members表里的email索引后,如果仍然报错,那么把你升级过程中的url的id自己加1,跳过去继续就行。
-

source install Python2
安装编译依赖: sudo yum groupinstall “Development Tools”sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel 从 Python 官方 FTP 下载 Python 2.7.x 的源代码: wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz解压并编译: tar xzf Python-2.7.18.tgzcd Python-2.7.18./configure –enable-optimizationsmakesudo make altinstall验证安装:检查 Python 2 是否安装成功: python2.7 –version cd /usr/binln -s /usr/local/bin/python2.7 python
-

dns bind 的二进制zone文件查看工具named-compilezone
zone文件二进制形式,一般发生在linux同步windows的dns的情况,格式自动转为二进制,下面是查看二进制工具
-

Nginx 根据请求来源 IP 地址决定是否进行 301 跳转
如果ip很少的情况: 解释:if ($remote_addr = “192.168.0.1”):判断请求的来源 IP 是否为 192.168.0.1。break;:如果条件成立,则不进行跳转,继续处理请求。return 301 https://x.com$request_uri;:如果条件不成立,则执行 301 跳转。注意事项:使用 if 指令时要注意性能问题,尤其是在高并发场景下。if 指令在某些情况下可能会导致性能下降,因此建议在测试环境中充分测试后再应用到生产环境。如果有多个 IP 需要排除跳转,可以使用 map 指令来优化配置,避免多个 if 语句。 如果有多个 IP 需要排除跳转,可以使用 map 指令来优化配置: 在这个配置中,map 指令用于定义一个变量 $skip_redirect,根据 $remote_addr 的值来决定是否跳过跳转。这样可以更高效地处理多个 IP 的情况。
-

git clone 不能ssh拉取代码Connection to gitlab.com closed
代码仓库是gitlab搭建的,通过密钥配置,ssh -T git@gitlab.com 是可以识别到密钥代表的用户名的,项目上已经添加用户的权限,但是拉取报错,debug信息如下: 可尝试在当前目录下配置文件修改:.ssh/config 猜测是环境变量发生了混乱,需要指明服务器,主机,用户,密钥,精准验证配置后就正常了。
-
haproxy代理后端是https并且忽略域名证书验证
对于后端是强制https认证,但是是IP地址的情况:https://192.168.0.2,在前面加haproxy配置证书,haproxy的配置文件例子: 检查配置文件语法: systemctl start haproxy保障启动服务后的状态正确:
-

haproxy配置开启日志(Red Hat Enterprise Linux 8.6)
在默认情况haproxy是不记录日志的;通过配置haproxy.cfg使其记录日志haproxy.cfg:开启haproxy日志记录log 127.0.0.1 local2/etc/rsyslog.conf:利用rsyslog接收日志:去掉这两行的注释: 也有可能是如下形式: 重启rsyslog,查看udp的514端口是否开启: netstat -anlp|grep 514 udp 0 0 0.0.0.0:514 0.0.0.0:* 14592/rsyslogdudp6 0 0 :::514 :::* 14592/rsyslogd systemctl status rsyslog ● rsyslog.service – System Logging ServiceLoaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2025-02-17 16:07:30 CST; 16h ago tail -f haproxy.log 如果是ubuntu系统,可以参考:
-

Internet phone number form
美国的电话号码格式通常为:+1-XXX-XXX-XXXX 或 1-XXX-XXX-XXXX,其中: +1 或 1 是美国的国家代码。 XXX-XXX-XXXX 是具体的电话号码,前三位是区号,后七位是用户号码。 注意事项:国家代码:拨打国际电话时,需加 +1 或 001。 区号:不同地区有不同的区号,拨打本地电话时可不加区号。 格式:通常用连字符分隔,如 XXX-XXX-XXXX。 时区:美国有多个时区,拨打时需注意时间。 国际通话费用:拨打美国号码可能产生额外费用,需提前了解资费。 隐私:处理电话号码时,需遵守隐私保护法规。 示例:+1-212-555-1234 1-212-555-1234 国内购买电话充值卡时,一般要求提供美国电话号码,看具体要求,一般是最前面加1的,比如:14255550100 要呼叫的国家/地区 要呼叫的区域 电话号码格式 美国 雷德蒙德 +(1)(425) 555-0100 或 +14255550100 英国 伦敦 +(44)(20) 1234 5678 或 +442912345678 中华人民共和国 北京 +(86)(10) 1234 5678 或 +861012345678 新加坡共和国 不适用 +(65) 1234 5678 或 +6512345678
-
html speacial character list
list: 原始字符 entity 原始字符 entity ” " & & ‘ ' < < > > ¡ ¡ ¢ ¢ £ £ ¤ ¤ ¥ ¥ ¦ ¦ § § ¨ ¨ © © ª ª « « ¬ ¬ ­ ® ® ¯ ¯ ° ° ± ± ² ² ³ ³…
-

签署let’s encrypt证书报错 code”:9109,”message”:”Max auth failures reached, please check your Authorization header
一看到报错中包含Authorization,必定是认证错误,所以考虑是授权错误,此次签署证书是用的cloudflare 的token,顺思路想到是cf的认证不通过,手动执行认证token的命令: 是顺利通过的,没问题。 按照警察破案的思路,所以必须去案发现场看,登陆到cloudflare的token页面: https://dash.cloudflare.com/profile/api-tokens 立刻明白了,自己添加了Client IP Address Filtering ,新签署证书的Ip地址不在范围内。 这种低级错误很常见,比如你即使之前添加过IPv4地址,但是你服务器加了IPv6地址,你忘记了,系统会优先使用IPv6地址通信,所以就认证不过。 对于个人,在做好token保密的情况下,可以去掉 Client IP Address Filtering 的功能,没有必要。
-

-

forbiden AI Spider GPTBot|Claude-Web|ClaudeBot
可以用nginx的配置文件规则(放到server段里): 但是以上方法毕竟还是耗费服务器网络流量和nginx资源,在日志中仍然可以看到,不如下面的封禁IP地址段的方法: 手工人肉整理出claudebot的IP地址AS number的ip地址段如下: 可以通过防火墙进行屏蔽,例如ufw: 基本上清理的非常干净,不再有claudebot 的访问痕迹。
-

-

ubuntu22.04下haproxy的日志记录到rsyslog配置方法
ubuntu22.04 用apt install haproxy 进行安装后,/etc/haproxy/haproxy.cfg的配置中包含的日志选项: 其中 log /dev/log local0 的意思就是haproxy日志进入到本地日志系统中 (/dev/log).log: 全局的日志配置,local0是日志设备,info 表示日志级别。其中日志级别有 err、warning、info、debug 四种可选。这个配置表示使用 127.0.0.1 上的 rsyslog 服务中的 local0 日志设备,记录日志等级为 info;log 指定收集哪个机器的 log,log 的收集是通过系统工具来实现的,在 centos6 版本之前以 syslog 来收集日志,6版本变为了 rsysylog。这些都是用于收集系统的日志,local0 指定设备,info 表示输出日志的级别,error 级别是在报错的时候才会输出。info 只要有正常信息都会进行输出,生产环境建议设置 为 notice 级别。 安装rsyslog系统,apt install rsyslog,并启动:systemctl start rsyslog, 查看状态: systemctl status rsyslog ,确保没有报错: 编辑 /etc/rsyslog.conf 这个配置文件,在最后加两行: 重启服务: systemctl restart rsyslog 先确保日志文件的权限正确:…
-

pdf每页分割横着劈竖着劈
安装工具:apt-get install mupdf-tools 每页都竖着劈成2份: 原始文档: 处理后: https://askubuntu.com/questions/56853/splitting-a-pdf-page-in-two
-

-

Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dssssh
Centos 6.8 操作系统下生成的 SSH Key,下载并添加至客户端,使用 OpenSSH v7.0 及以上的版本的 Linux 客户端进行访问时,提示如下内容:Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss。 其主要原因在于 OpenSSH v7.0 及以上的版本 不再支持 ssh-dss 加密算法,导致 Centos 6.8 操作系统下生成的 SSH 密钥在较高版本的 Linux 操作系统中无法适配。可参考以下操作步骤进行解决。 操作步骤: 登录客户端主机的终端,修改 /etc/ssh/ssh_config 配置文件。 vi /etc/ssh/ssh_config 如果是比较新的操作系统,比如阿里云的等保三级操作系统,有严格的加密要求,终极解决方案就是降低适配:
-

-
Normal user exec Docker command
检查是否有docker用户组,如果没有,则创建。Docker安装时一般都会创建docker用户组cat /etc/group | grep docker创建docker用户组,如果docker用户组存在可以忽略sudo groupadd docker把用户添加进docker组中sudo gpasswd -a ${USER} docker重启Dockersystemctl restart docker普通用户执行docker命令,如果提示以下错误,则修改/var/run/docker.sock权限使用root用户执行如下命令sudo chmod a+rw /var/run/docker.sock
-

tmp目录下puppeteer_dev_chrome_profile 占用磁盘空间问题
有安装截图工具puppeteer 的,看看:/tmp目录下 ,直接干到100%磁盘 puppeteer_dev_profile是透过puppeteer操作Headless Chrome时会在 /tmp 自动产生的文件夹。倘若程序没有正确关闭chrome进程﹐/tmp/puppeteer_dev_profile-* 将无法自动回收并残留在操作系统上,佔用不必要的硬盘空间。 Github上已有人提出这个问题 ,而其解决方法 是程序在关闭headless chrome后接着移除相关文件夹。办法不错,前提是完成任务后需要主动关闭chrome,而且在移除puppeteer_dev_profile之前要祈求程序不要崩溃。 可惜我这边的是长时间运行的web service,chrome不会关 ,使用pm2管理程序重启,想简单一点移除多余的文件夹就可以了 (每个puppeteer_dev_profile佔 1 ~ 2 GB 不等,机器真的吃不消~)所以就组装一下以下shell command︰ 合共5个步骤用pipe串接︰ 首先ls -t /tmp按最近修改时间 (modification time) 逐一列出/tmp下的档案名字; grep puppeteer_dev_profile筛选出名字包含puppeteer_dev_profile的行; tail -n 2截取由第2行 (包括第2行) 至最后一行 (包括最后一行),因為第1个puppeteer_dev_profile文件通常正在被程序使用中; awk ‘{print “/tmp/”$1}’把每行文件名字加上前缀/tmp/,变成full path; 最后透过xargs -l1把每行full path接在rm -rf后执行,逐一永久移除/tmp/puppeteer_dev_profile-* 文件。 把这个放进crontab,视情况我每天执行一次,注意权限是否足够,每个指令建议改用full path,例如ls改为/usr/bin/ls。
-

About SSH tunnel jump Multiplexing
客户端使用ssh-keygen生成一对公私钥,然后将公钥存到登陆用户家目录的.ssh/authorized_keys这样客户端就能用公私钥登陆了,使用ssh客户端的-i选项可以指定私钥路径。 ssh -i /path/to/file.pem user@moneyslow.com如果没有指定文件路径,默认会找客户端用户目录下的~/.ssh/id_dsa或~/.ssh/id_rsa。 需要注意的是,私钥的权限应该是600(当前用户可读可写) 使用ssh-keygen创建私钥时可能设置了密码,可以使用ssh-agent管理这些密钥将密钥交给ssh-agent管理 ssh-add ~/.ssh/id_rsa如果设置了密码,这个命令会让你输入密钥的密码,之后使用ssh登陆就不用输入密码了。 Port 2222 #这个端口默认是22,改成不容易猜的这时候客户端需要加上-p选项 ssh -p 2222 user@moneyslow.com也可以使用ssh URI方式来指定端口 ssh ssh://user@moneyslow.com:2222和http://xxx的80端口类似,ssh://xxx不指定端口默认就是22号端口 ssh user@moneyslow.com “ps aux”除此之外,我们还可以将命令的输出与客户端的命令进行交互 ssh user@moneyslow.com “ps aux” | less甚至可以从远端拷贝文件夹到客户端 ssh user@moneyslow.com ‘tar cz /usr/share/nginx/html/’ | tar xzv这里压缩是为了加快传输速度 ssh user@moneyslow.com ‘tar -C /usr/share/nginx/html/ zcf – 404.html 50x.html’ | tar zxf -同样,我们可以使用ssh自己实现一个带压缩的scp的功能 tar czv src | ssh…