博文

目前显示的是标签为“shell”的博文

Linux nano 文本编辑器 用 Ctrl+K 删除一行

vi 编辑器中,  dd (连按两次 d 键) 就可以删除一行 觉得非常方便, 特别是在 SSH 比较卡的 VPS上 nano 编辑器适合小白使用, 我自己也觉得挺好, 自己也在用.  但是一直没找到快捷地删除一行的方式 后来, 某天在网上逛来逛去, 偶然发现 用 Ctrl+K 是剪切当前行, 当然当前行也删除了呗 所以就拿 Ctrl+K 当删除用了. 当然了, 副作用就是剪切板里面有东西了. 哈哈

更自由地使用 各种一键脚本(未裁剪)

 像我这样的小白们, 入门的第一步, 最常见的就是使用各种一键脚本先实现自己的基本需求. 接着随着时间的推移, 我们慢慢会觉得这些一键脚本有各种各样"不爽"的地方. 那么, 我们可以利用linux的文本修改工具sed, 达到查找替换, 添加, 删除等效果. 极简一键脚本带参数使用时, 跳过确认参数的步骤 bash <(curl -L https://github.com/crazypeace/xray-vless-reality/raw/main/install.sh | sed '/pause()\s*{/a return') 4 8443 原理解释  https://zelikk.blogspot.com/2024/10/cp-bash-skip-pause.html 强行重装233boy的sing-box脚本 bash <(wget -qO- -o- https://github.com/233boy/sing-box/raw/main/install.sh | sed '/err()\s*{/a return') 强行重装233boy的v2ray脚本 bash <(wget -qO- -o- https://git.io/v2ray.sh | sed '/err()\s*{/a return') 强行重装233boy的xray脚本 bash <(wget -qO- -o- https://github.com/233boy/Xray/raw/main/install.sh | sed '/err()\s*{/a return') 原理解释  https://zelikk.blogspot.com/2024/12/233boy-sing-box-install-err-skip.html 233boy的sing-box脚本安装完成后, 修改配置时强行跳过验证域名DNS解析报错 安装完后, 先执行 find /etc/sing-box/sh -type f -name "*.sh" -exec sed -i '/err()\s*{/a return' {} + 再按正常操作修改配置. 原理解释  https://zeli...

在Linux上用socat进行网络环境测试 UDP端口

图片
前面介绍过怎么测试tcp端口, tcping https://zelikk.blogspot.com/2022/05/linux-socat-tcp-udp-ipv4-ipv6-localhost.html https://zelikk.blogspot.com/2024/09/socat-tcping.html 现在搭Hysteria2 HY2翻墙协议的越来越多, 那么我们怎么测试UDP端口是否正常工作呢? UPD 监听 还是用 socat socat -v UDP-LISTEN:端口号,fork PIPE socat -v UDP-LISTEN:4000,fork PIPE * 如果你的环境没有socat, 你需要安装一下 apt install -y socat 检测 网络在线检测 https://check-host.net/ 从另一个VPS Linux命令行检测 用到这个项目 https://github.com/wangyu-/UDPping 先下载测试脚本(python) wget -L https://github.com/wangyu-/UDPping/raw/refs/heads/master/udpping.py 执行方式为 python3 udpping.py IP地址 UDP端口 python3 udpping.py 134.195.211.170 4000 windows环境测试工具 https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/portqry-command-line-port-scanner-v2

Linux sed 命令添加多行文本 写在一行命令里

图片
TL;DR sed ' /要搜索的内容/   a  第1行 \\n 第2行 \\n 第3行' kejilion的脚本, 考虑使用者有可能在墙内, 或者是纯ipv6的网络环境,  1) 在Docker包管理器时会使用国内的源,  2) 在获取 github 资源时, 会加上 ghproxy. 脚本会根据一些条件来帮助使用者进行判断, 是否应该使用这些特殊处理. 但是, 使用者的环境千奇百怪, 脚本的判断并不一定是最优的处理. 那么群里就会冒一条消息. 唉呀, 脚本卡住啦, 脚本出错啦, 求求大神快来解救我呀. 如果我们不想等"大神"来救, 那么我们可以自己决定是否要做这些特殊处理. 思路和 以前类似 , 也是用sed修改文本流的内容, 再灌到bash里面去执行. 我们要在文本中找到 quanju_canshu() { 然后在下面添加3行 zhushi=0 gh_proxy="https://gh.kejilion.pro/" return 当然了, 根据你的需求, 这2个参数的值是可以修改的. 比如, zhushi=1, 或者 gh_proxy="" 到此为止, 和以前都差不多, 写一篇文出来太水了. 我想写文的原因是, 如何使用sed添加多行文本, 写在一行命令里. 要用sed添加多行文本, 我找到的资料都是写成多行命令的, 我的意思是这样的: https://www.runoob.com/linux/linux-comm-sed.html man sed 查出来的官方帮助文档 a \ - append - 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用\续行 但是, 如果我要基于 bash <(...) 的模式修改, 我想还是保持一行命令的形式, 应该怎么写呢? 又经过一些搜索和尝试, 在 sed v4.9 版本下, 我实践成功的写法是这样的 sed ' /要搜索的内容/ a 第1行 \\n 第2行 \\n 第3行' 其中 /***/ 就是 搜索并定位 的功能, a 就是在下1行添加文本  的功能, \\n 实现了换行符. 回到我们的原始问题. bash <( curl -L "https://gh.kejilion.pro/h...

在Linux上用socat进行网络环境测试 从外部测试TCP端口是否可用

图片
上一篇 里介绍了怎么在linux环境测试端口是否可用.  可以从 B linux VPS去测试 A linux VPS. 但是当我们使用常用的第三方测试 tcping.ping.pe, 或者从自己本地发起 tcping 测试 ( https://github.com/pouriyajamshidi/tcping ). 会遇到一个问题, socat 监听的端口只能连接一次. socat tcp4-listen:端口号 - 换句话说, tcping测试只有第一次连接成功, 然后linux端可以看到 socat 运行结束了, tcping也会看到后续测试都是失败的.

屏蔽 kejilion 脚本上传信息

图片
如果你不喜欢 kejilion 的脚本默认打开上传信息 打开脚本, 找到 send_stats() { 在下面一行写上 return 再保存, 就行了. 

屏蔽 kejilion 脚本同意许可协议

图片
如果你不喜欢 kejilion 的脚本要同意许可协议才能使用 打开脚本, 找到 UserLicenseAgreement() { 在下面一行写上 return 再保存, 就行了. 

解密rwkgyg-CFwarp脚本 原理与实践

图片
wget -N https://gitlab.com/rwkgyg/CFwarp/raw/main/CFwarp.sh 看第一眼, 就是 上次的加密方法 . 用上次的方法解密,  bash <(curl https://gitlab.com/crazypeace/tuic-yg-unpack/-/raw/main/unpack.sh) CFwarp.sh 发现脚本为分2部分. 前面部分是安装 bzip2, 后面部分是下载这个脚本并执行 wget -qN https://gitlab.com/rwkgyg/CFwarp/raw/main/1CFwarp.sh 那么就是说, 这个 1CFwarp.sh 才是本体. 下载了打开看一看.

bash脚本创建临时文件和目录 并在执行后删除 | 获取bz2-shell项目生成的临时解压文件

图片
有一种脚本加密的方法是通过 bzip2 加密后的脚本整体分为2部分, 前面部分是通用的解压流程, 后面部分是原脚本用bzip2压缩后的数据. 项目: https://github.com/FajarKim/bz2-shell 加密后的脚本示例: https://gitlab.com/rwkgyg/CFwarp/-/blob/main/1CFwarp.sh

Linux 命令行 curl 用POST方法 调用图床系统 API 添加二进制文件

图片
之前, 我们利用pastebin系统实现了用API添加文本文件 . 如果我们想保存二进制文件, 要怎么办呢? 这里, 我们利用图床系统imghost.

Linux 命令行 curl 用POST方法 调用pastebin系统 API 添加文本文件

图片
我们已经有了 利用免费worker搭建的短链系统 , 通过 配置参数设置为网络记事本 Pastebin , 用于保存自己的翻墙节点订阅信息, 或者是clash的配置文件. 在某些场景下, 你在Linux环境下已经有了订阅信息的文件(或者clash的配置文件), 不想搞什么复制粘贴, 鼠标点点点, 就想命令行直接一键上传到短链系统(网络记事本 Pastebin)中. 那么, 可以使用 curl 命令, 用POST方法 调用短链系统的 API

修改systemctl Service配置文件 要在 xxxx.service.d/ 目录下添加 .conf 文件

图片
今天 重装VPS , 在备份 xray 和 v2ray 配置文件时候, 因为都是 config.json, 保存的时候就改了下文件名. 比如叫, xray.json, v2ray.json. 恢复时候, 冒出个奇怪的想法, 传上去就不改回 config.json 了, 想通过修改 service 文件来加载 xray.json, v2ray.json 没想到踩了一个systemctl Service配置文件修改的坑。

vnstat 统计 VPS 流量

安装 apt install -y vnstat 运行一段时间后, 不带参数查看默认网卡流量 vnstat

解密tuic-yg脚本 原理与实践 同理naiveproxy-yg

图片
wget -N https://gitlab.com/rwkgyg/tuic-yg/raw/main/tuic.sh 下载一看, 第一眼感觉像是乱码.

用grep -oP仅显示符合正则表达式的部分, 每个一行, 特别是在一行中有多个命中的情况

图片
上一篇在blkid的结果中查找UUID 时,  我们把UUID的目标正则表达式设置为 ([^-]{8}-[^-]{4}-[^-]{4}-[^-]{4}-[^-]{12}

curl 设置超时 --connect-timeout

如果是在一个纯IPV6的VPS上,用 curl -4 方法去查本机IP地址的时候。有可能会遇到等很久的情况。所以要加上一个超时的设定。找到这个参数是 --connect-timeout 示例: curl -4s --connect-timeout 3 https://www.cloudflare.com/cdn-cgi/trace | grep ip= | sed -e "s/ip=//g"   https://poe.com/s/skXHAkmZ2hPx8c7NgU9f --connect-timeout 和 -m 参数 --connect-timeout 和 -m 参数都是 curl 中用于控制请求时间的选项,但它们的作用略有不同: --connect-timeout     含义: 指定连接到服务器的最大等待时间(以秒为单位)。     作用: 如果在指定的时间内未能建立连接,curl 将会终止请求。这是用于控制连接阶段的超时。     示例: --connect-timeout 5 表示连接超时时间为 5 秒。 -m 或 --max-time     含义: 设置整个请求的最大执行时间(以秒为单位)。     作用: 包括连接时间、数据传输时间等。如果在指定的时间内请求未完成,curl 将会终止请求。     示例: -m 10 表示整个请求的最大执行时间为 10 秒。 总结     --connect-timeout 控制的是连接阶段的超时,而 -m 控制的是整个请求的总超时。     通常,可以将这两个参数结合使用,以确保在连接和请求阶段都不会超时。

用xargs让xray x25519 -i支持Linux管道 以私钥计算公钥

图片
xray支持用x25519 -i带私钥来计算公钥。帮助信息如下: ubuntu@ubuntu22:~$ xray help x25519 usage: xray x25519 [-i "private key (base64.RawURLEncoding)"] Generate key pair for x25519 key exchange. Random: xray x25519 From private key: xray x25519 -i "private key (base64.RawURLEncoding)" 实际使用起来,像是下面这样: ubuntu@ubuntu22:~$ xray x25519 -i X23TSjifyqPQ-BVFdosjJqSz_i4O7pCFomPlkzX7DTM Private key: WG3TSjifyqPQ-BVFdosjJqSz_i4O7pCFomPlkzX7DXM Public key: 1wwKZV_IxO4W4wcGJ9dgzBMMaZ3mNOJZcy_MVVmC-1M 那么结合 上一篇 生成随机私钥的方法,像下面这样: ubuntu@ubuntu22:~$ head -c 32 /dev/random | base64 -w 0 | tr '+/' '-_' | tr -d '=' 90L0JJmD721jKRtVSVOqMQZQ6j8VFO2Hl168XfFzWyY 而当我们想使用Linux的管道来将上面的结合起来时,却遇到报错,像下面这样: ubuntu@ubuntu22:~$ head -c 32 /dev/random | base64 -w 0 | tr '+/' '-_' | tr -d '=' | xray x25519 -i flag needs an argument: -i usage: xray x25519 [-i "private key (base64.RawURLEncoding)"] Run 'xray help x25519' for details. 经过一番学习,感谢  yichya   的解答  ...

Xray x25519 密钥对、linux中的base64、golang中的base64.RawURLEncoding

图片
玩了一下 Xray 上面的 Reality, 对其中生成 x2519 密钥对的过程感兴趣,拿到源码一看,还可以用 -i 参数带私钥进去计算公钥。

用双引号" 在shell脚本中包住$()调用 解决sed命令报错问题

图片
问题 在  Free.vps.vc 访问GitHub资源出错 用GithubProxy代理 用sed修改脚本内容  的过程中,发生一件奇怪的事情。 curl -L https://github.com/crazypeace/v2ray_wss/raw/main/install.sh | sed -E $(curl -L https://github.com/crazypeace/gh-proxy/raw/master/sed-E-para1) 正常执行,但下面这个就报错 curl -L https://github.com/crazypeace/v2ray_wss/raw/main/install.sh | sed -E $(curl -L https://github.com/crazypeace/gh-proxy/raw/master/sed-E-para) GitHub上面的文件内容分别为: sed-E-para1: s#(http.*github[^/]*/)#https://github.crazypeace.workers.dev/\1#g sed-E-para : s#(curl.*\.sh)([^/])#\1 | sed -E "$(curl -L https://github.com/crazypeace/gh-proxy/raw/master/sed-E-para)" \2#g; s#(http.*github[^/]*/)#https://github.crazypeace.workers.dev/\1#g 在TG上问了一圈之后, fscarmen https://t.me/fscarmen2  给出了解决方案,用双引用把 $() 调用包起来。 解决方案 curl -L https://github.com/crazypeace/v2ray_wss/raw/main/install.sh | sed -E " $(curl -L https://github.com/crazypeace/gh-proxy/raw/master/sed-E-para) "

sed不支持非贪婪匹配 改用perl

问题 之前   Free.vps.vc 访问GitHub资源出错 用GithubProxy代理 用sed修改脚本内容 实践: bash <(curl -L  https://github.crazypeace.workers.dev/ https://github.com/crazypeace/v2ray_wss/raw/main/install.sh   | sed -E "$(curl -L  https://github.crazypeace.workers.dev/ https://github.com/crazypeace/gh-proxy/raw/master/sed-E-para )" ) 发现这个处理方法并不完美。 用grep github把涉及修改的地方输出一下。 curl -L  https://github.crazypeace.workers.dev/ https://github.com/crazypeace/v2ray_wss/raw/main/install.sh   | sed -E "$(curl -L  https://github.crazypeace.workers.dev/ https://github.com/crazypeace/gh-proxy/raw/master/sed-E-para )" | grep github 发现,.sh 的部分, bash <(curl -L https://github.crazypeace.workers.dev/ https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh | sed -E "$(curl -L https://github.com/crazypeace/gh-proxy/raw/master/sed-E-para)" ) --version 4.45.2 只在前面加了 github proxy,后面调用 GitHub 资源的部分并没有处理。 分析 查了一下资料发现,sed只有贪婪匹配,所以改用 perl 实操 perl用来做正则替换的参数为 -pe,里面同样支持sed语...

The Hot3 in Last 30 Days

RackNerd VPS搭Hysteria2 HY2梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存