分享一些个人编写(AI编写)或改良的脚本
- 添加好可执行权限后直接运行即可
- 需要Root权限
"======================================="
" Linux 用户管理系统"
"======================================="
" 1. 创建普通用户"
" 2. 创建管理员用户"
" 3. 修改用户密码"
" 4. 列出所有用户"
" 5. 删除用户"
" 6. 退出"
======================================="
通过修改iptables input链规则来放行传入端口与网段
一旦执行该脚本就会立即清空iptables input链规则(不会操作output链,forward链),请确保无其他程序依赖iptables input链,以免发生网络异常
可执行sudo iptables -S INPUT
查看iptables input链当前情况
- 启动脚本后会将iptables input链清空
- 将input设置为drop, 放行icmp, 放行已建立的连接
- 创建/etc/iptables-manager文件夹,用于存放规则文件
- 重新加载/etc/iptables-manager下的规则到iptables input链
- 启动cui 菜单界面
- 保存新的规则并添加systemctl服务开机自启动
- 重新加载规则到iptables input链
"=================================================="
" iptables 防火墙管理 (黑名单模式)"
"=================================================="
" 1. 放行TCP/UDP端口"
" 2. 取消放行端口"
" 3. 放行IP网段"
" 4. 取消放行IP网段"
" 5. 查看当前规则"
" 6. 保存规则并持久化"
" 0. 退出"
"=================================================="
- 添加好可执行权限后直接运行即可
快速创建systemctl自启动服务
- 复制
linux-systemctl-template
到随便一个地方并进入复制后的文件夹 - 重命名
./system/conf
为xxx
(xxx
自己随便起一个名) - 打开
./system/xxx
, 根据里面的注释来修改(一般只需修改Type
,WorkingDirectory
,ExecStart
就行) - (非必须) 如需要添加环境变量,则往
./env/env
里添加环境变量就行 - 运行
./ser.sh
即可(会自动执行systemctl enable xxx; systemctl start xxx) - (非必须) 可通过
systemctl status xxx
查看服务状态 - (非必须) 后续若要修改服务内容,先执行
./ser.sh clean
, 之后重复3-6即可 - (非必须) 若需要删除该服务, 执行
./ser.sh clean
- 获取
./system
文件夹中第一个文件名记为xxx
- 执行 cp
./env/env
/etc/conf.d/xxx
- 复制
./system/xxx
到/etc/systemd/system/xxx.service
- 追加下述内容到
/etc/systemd/system/xxx.service
"EnvironmentFile=/etc/conf.d/xxx.conf"
"[Install]"
"WantedBy=multi-user.target"
-
执行
systemctl enable xxx
与systemctl start xxx
-
执行
./ser.sh clean
时,会执行下列命令systemctl disable xxx
systemctl stop xxx
rm /etc/systemd/system/xxx.service
rm /etc/conf.d/xxx.conf
快速创建socat端口转发服务
需要安装好socat (注: sudo apt install socat
)
运行方式:
./port-forward.sh <本地端口> <远程地址> <远程端口>
示例:
./port-forward.sh 80 192.168.1.1 8080
- 80 -> 192.168.1.1:8080
- 绑定
0.0.0.0:80
端口,将80端口的请求转发到192.168.1.1:8080
用于简化screen操作
用法:
screen-tool.sh write <name> <command> 向名称为name的screen会话写入命令(不存在则创建)(自动添加换行符\n)
screen-tool.sh read <name> 读取名称为name的screen会话当前所有输出
screen-tool.sh del <name> 关闭名称为name的screen会话
screen-tool.sh ls 列出所有screen会话
screen-tool.sh [-h|--help] 显示此帮助信息
示例:
screen-tool.sh write myterm "ls -l"
screen-tool.sh read myterm
screen-tool.sh del myterm
向指定的screen终端写入命令并自动添加换行符\n 若不存在该终端则会后台自动创建
读取名称为name的screen终端当前所有输出
类似于剪切板一样,在同一台Linux主机上,向a终端的输入内容会展示在a,b,c,d,e,f终端上。b终端的输入内容会展示在a,b,c,d,e,f终端上,以用于在不同的终端间共享信息。
这个是我在运行虚拟机时获得的灵感。在一个场景中,宿主机无法直接将大量数据直接通过CTRL+C/CTRL+V复制到虚拟机内部,虚拟机也同样无法将大片内容直接复制到宿主机里,手动一个一个敲上去又不太现实。正好宿主机可以通过ssh连接虚拟机。此时,宿主机通过ssh新建一个终端并运行该脚本,虚拟机也开一个桌面终端并运行该脚本。复制的内容输入到a终端,b终端就能立马显示,就解决这个问题。
- 支持多个终端绑定同一个name上。每个终端既可以展示内容,也可以直接当作输入源。
- 数据会保存在/tmp/terminal_chat_<name>/chat.log上,可随时查看(注意,不会手动清除)
./terminal-clipboard.sh <name> // 随便起一个名字就好。但注意只有相同name的终端才会展示相同的内容。
//示例
// a终端
./terminal-clipboard.sh test
// b终端
./terminal-clipboard.sh test
// c终端
./terminal-clipboard.sh test
// 此时往a终端输入hello world, 回车
a,b,c终端均会显示hello world