Skip to content

hvhghv/se-script

Repository files navigation

se-script

分享一些个人编写(AI编写)或改良的脚本

用户管理

脚本

  • 添加好可执行权限后直接运行即可
  • 需要Root权限

cui菜单如下

"======================================="
"      Linux 用户管理系统"
"======================================="
"  1. 创建普通用户"
"  2. 创建管理员用户"
"  3. 修改用户密码"
"  4. 列出所有用户"
"  5. 删除用户"
"  6. 退出"
======================================="

防火墙

脚本

通过修改iptables input链规则来放行传入端口与网段

警告

一旦执行该脚本就会立即清空iptables input链规则(不会操作output链,forward链),请确保无其他程序依赖iptables input链,以免发生网络异常

可执行sudo iptables -S INPUT查看iptables input链当前情况

原理

  1. 启动脚本后会将iptables input链清空
  2. 将input设置为drop, 放行icmp, 放行已建立的连接
  3. 创建/etc/iptables-manager文件夹,用于存放规则文件
  4. 重新加载/etc/iptables-manager下的规则到iptables input链
  5. 启动cui 菜单界面
  6. 保存新的规则并添加systemctl服务开机自启动
  7. 重新加载规则到iptables input链

CUI 菜单界面

"=================================================="
"           iptables 防火墙管理 (黑名单模式)"
"=================================================="
" 1. 放行TCP/UDP端口"
" 2. 取消放行端口"
" 3. 放行IP网段"
" 4. 取消放行IP网段"
" 5. 查看当前规则"
" 6. 保存规则并持久化"
" 0. 退出"
"=================================================="

运行方式

  • 添加好可执行权限后直接运行即可

systemctl服务模版

脚本路径

快速创建systemctl自启动服务

使用方式

  1. 复制linux-systemctl-template到随便一个地方并进入复制后的文件夹
  2. 重命名./system/confxxx(xxx自己随便起一个名)
  3. 打开./system/xxx, 根据里面的注释来修改(一般只需修改TypeWorkingDirectoryExecStart就行)
  4. (非必须) 如需要添加环境变量,则往./env/env里添加环境变量就行
  5. 运行./ser.sh即可(会自动执行systemctl enable xxx; systemctl start xxx)
  6. (非必须) 可通过systemctl status xxx查看服务状态
  7. (非必须) 后续若要修改服务内容,先执行./ser.sh clean, 之后重复3-6即可
  8. (非必须) 若需要删除该服务, 执行./ser.sh clean

原理

  1. 获取./system文件夹中第一个文件名记为xxx
  2. 执行 cp ./env/env /etc/conf.d/xxx
  3. 复制./system/xxx/etc/systemd/system/xxx.service
  4. 追加下述内容到/etc/systemd/system/xxx.service
"EnvironmentFile=/etc/conf.d/xxx.conf"
"[Install]"
"WantedBy=multi-user.target"
  1. 执行systemctl enable xxxsystemctl start xxx

  2. 执行./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操作

用法:
  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-tool.sh write

向指定的screen终端写入命令并自动添加换行符\n 若不存在该终端则会后台自动创建

screen-tool.sh read

读取名称为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

About

分享一些个人编写(AI编写)或改良的脚本

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages