首页 > 系统相关 >Linux下使用makeself制作一键安装包

Linux下使用makeself制作一键安装包

时间:2024-11-10 22:47:02浏览次数:5  
标签:iptables ip echo 安装包 rpm Linux root makeself

Linux下使用makeself制作一键安装包

下载makeself

yum -y install makeself

makeself 命令和参数

makeself.sh --gzip . <output_file.run> "<display_name>" <startup_script>
  • . 表示当前目录,这样 makeself 将会打包当前目录下的所有文件和子目录。该目录最好使用绝对路径

  • output_file.run: 生成的自解压脚本的输出文件名。

  • "display_name": 在脚本运行时显示的名称。

  • startup_script (可选): 在解压后执行的启动脚本。包括shell 和 python 等

  • 注 --gzip 可不指定 是默认的压缩和解压算法 可指定其他算法

准备环境与脚本

[root@zookeeper1 ~/fire]#pwd
/root/fire


[root@zookeeper1 ~/fire]#ll
total 472
-rwxr-xr-x 1 root root   2349 Nov 10 21:39 add_iptables_rules.sh
-rw-r--r-- 1 root root  76116 Aug 10  2017 dos2unix-6.0.3-7.el7.x86_64.rpm
-rw-rw-rw- 1 root root     91 Nov 10 16:37 ip_list.txt
-rw-r--r-- 1 root root  53704 Oct 15  2020 iptables-services-1.4.21-35.el7.x86_64.rpm

下载了相关rpm包和shell脚本

需要将上述的rpm包和shell脚本打包成为一键安装包.run

makeself 目录路径 打包成的.run文件名  "显示名称"  ./add_iptables_rules.sh(执行脚本)

[root@zookeeper1 ~/fire]#makeself ~/fire fire.run "添加防火墙规则" ./add_iptables_rules.sh 

# 将家目录下的fire目录打包成为  fire.run 文件
add_iptables_rules.sh 是执行脚本  内容如下

add_iptables_rules.sh脚本内容

  • 此脚本是从ip_list.txt文件中读取ip 并使用iptables 添加防火墙规则,旨在允许ip_list.txt
  • 中的ip访问 其余ip全部拒绝
  • 包含iptables安装启动 一整套的流程 只需要更改的ip_list.txt的ip地址即可
#!/bin/bash

# 指定存储 IP 列表的文件名
IP_FILE="ip_list.txt"

# 关闭 firewalld 服务
systemctl stop firewalld
systemctl disable firewalld

# 定义一个函数用于安装本地 RPM 并检查结果
install_rpm() {
   local package="$1"
   local rpm_file="$2"

   if rpm -qa | grep -qw "$package"; then
       echo "$package 已经成功安装"
   else
       echo "正在安装 $package"
       if rpm -ivh "$rpm_file"; then
           echo "$package 安装成功"
       else
           echo "无法安装 $package:出现未知错误" >&2
           exit 1
       fi
   fi
}

# 安装所需的软件包
install_rpm "iptables-services" "iptables-services-1.4.21-35.el7.x86_64.rpm"
install_rpm "dos2unix" "dos2unix-6.0.3-7.el7.x86_64.rpm"


# 添加防火墙核心模块到内核中
echo "加载 iptables 模块"
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state

# 设置系统在启动时加载这些模块
echo "确保系统在启动时加载这些模块"
cat <<EOF | sudo tee -a /etc/rc.d/rc.local
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF

# 赋予 rc.local 文件执行权限
chmod +x /etc/rc.d/rc.local

# 启动并启用 iptables 服务
systemctl start iptables
systemctl enable iptables

iptables -F
iptables -X
iptables -Z

# 校正ip_list文件格式,确保结尾为 \n
dos2unix $IP_FILE

# 检查文件是否存在
if [[ ! -f "$IP_FILE" ]]; then
   echo "IP 地址文件 '$IP_FILE' 未找到!" >&2
   exit 1
fi



# 为每个 IP 生成 iptables 规则
while IFS= read -r ip; do
   # 忽略空行和以 # 开头的注释行
   if [[ -z "$ip" || "$ip" == \#* ]]; then
       continue
   fi

   # 为读取的每个 IP 地址插入一条允许规则
   iptables -I INPUT -s "$ip" -j ACCEPT
   echo "已插入规则以接受来自 $ip 的流量"

done < "$IP_FILE"

# 插入全局拒绝所有其他入站流量的规则
iptables -P INPUT DROP
echo "所有指定的 iptables 规则已更新。"

# 保存并重启 iptables 服务以确保规则生效
# iptables-save > /etc/sysconfig/iptables
# systemctl restart iptables

标签:iptables,ip,echo,安装包,rpm,Linux,root,makeself
From: https://www.cnblogs.com/xyff/p/18538683

相关文章

  • Linux之sed命令详解
    文章目录......
  • 【读懂Linux】基础IO
      学习编程就得循环渐进,扎实基础,勿在浮沙筑高台   循环渐进Forward-CSDN博客目录 循环渐进Forward-CSDN博客系统文件I/O接口介绍writereadcloselseek,类比C文件相关接口open函数返回值文件描述符fd文件描述符的分配规则重定向使用dup2系统调用FILE......
  • shell脚本在linux无法运行
    shell脚本在linux无法运行在windows写的.sh脚本,直接把文件传到Linux之后运行,报错:$bash./v_1.sh:commandnotfound'/v_1.sh:line4:syntaxerrornearunexpectedtoken`do'/v_1.sh:line4:`do脚本内容是:#shellvirusI#forfilein./infect/*docp$0$fi......
  • Linux下解压命令大全
    文章目录1、tar2、zip3、rar4、gz5、tar.gz和.tgz6、bz27、tar.bz28、bz9、tar.bz10、Z11、lha12、rpm13、debLinux主要根据后缀名,选择解压和打包的命令想了解更多内容,请跟上向导的步伐吧:Eg:mantar1、tar解包:tarxvfFileName.tar打包:tarcvfFileName.tar......
  • Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置
    文章目录一、Linux用户管理1、用户(user)、用户组(group)、其他用户概念(other)1.1理解Linux的`单用户多任务`,`多用户多任务`概念1.2用户(user)和用户组(group)概念;查看主机名和修改主机名需要root权限(然后输入密码)2.1创建用户2.1.1用adduser创建用户3、删除用户查看用户列......
  • Linux基础
     声明:学习视频来自b站up主泷羽sec,如涉及侵权马上删除文章声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。感谢泷羽sec团队的教学视频地址:linux基础(1)_哔哩哔哩_bilibili ......
  • linux进程控制
    目录一、进程退出1.创建一批进程2.进程退出场景二、进程等待1.等待一个进程2.等待一批进程3.wait等待的进程一个都不退4.waitpid5.非阻塞轮询​编辑6.waitpid的原理三、进程替换 1.单进程的程序替换2. 多进程的程序替换3.execlp​编辑4.execle5.execv6.ex......
  • 【Linux】常用命令(2.6万字汇总)
    文章目录Linux常用命令汇总1.基础知识1.1.Linux系统命令行的含义1.2.命令的组成2.基础知识2.1.关闭系统2.2.关闭重启2.3.帮助命令(help)2.4.命令说明书(man)2.5.切换用户(su)2.6.历史指令3.目录操作3.1.切换目录(cd)3.2.查看目录(ls)3.3.创建目录(mkdir)3.4.删除目录......
  • Linux 操作系统下 edquota 命令介绍和使用案例
    Linux操作系统下edquota命令介绍和使用案例edquota命令是Linux系统中用于管理用户或组的磁盘配额的工具。通过该命令,系统管理员可以设置和编辑用户或组在文件系统中使用的磁盘空间限制edquota命令简介功能:edquota允许管理员为指定用户或组设置磁盘配额,限制他们可以......
  • 轻松理解操作系统 - Linux的数据块是如何储存数据的?
    python入门C++入门Linux由于其开源、比较稳定等特点统治了服务端领域。也因此,学习Linux系统相关知识在后端开发等岗位中变得越来越重要,甚至可以说是必不可少的。因为它的广泛应用,所以在程序员的日常工作和面试中,它都是经常出现的。它的开源特性也让它适合于让对于计算......