Linux学习环境系统初始化脚本(纯分享)

1、Linux学习环境系统快速配置脚本

  • 在 Linux 系统安装完成后,通常需要进行一系列的配置和优化操作,以确保系统能够顺利运行并满足特定的使用需求。这个过程可能会涉及到网络设置、SELinux 状态管理、防火墙配置以及安装必要的软件包等。为了简化这一过程,我编写了一个自动化脚本来执行这些常规任务。

2、脚本功能概览:

  • 系统信息展示:显示当前系统的发行版、网络接口名称、本机 IP 地址和主机名。 网络配置:检查并设置网络接口为开机自动连接,配置静态 IP地址,并确保网络连通性。

  • SELinux 管理:自动检测 SELinux 状态,并在必要时将其关闭,以避免潜在的安全策略冲突。

  • 防火墙管理:关闭系统防火墙,以减少不必要的网络通信限制。

  • 软件安装:安装一系列常用的系统管理软件,如 vim、wget、net-tools等,以提高工作效率。

  • 系统操作选项:提供关机、重启或退出的选项,以便用户根据需要进行选择。

3、使用说明:

  • 将脚本保存为 .sh 文件,bash file.sh即可。

4、注意:

  • 请根据实际系统环境和需求调整脚本中的配置选项。
  • 在生产环境中使用前,请确保充分测试脚本以避免意外情况。
  • 这个脚本是我个人在学习 Linux 过程中为了提高工作效率而编写的,现在分享出来,希望对同样在学习 Linux 的你有所帮助。如果你有任何改进建议或遇到问题,欢迎交流讨论!

5、脚本内容

#!/bin/bash

echo_red() { echo -e "\e[31m$1\e[0m"; }
echo_green() { echo -e "\e[32m$1\e[0m"; }
echo_yellow() { echo -e "\e[33m$1\e[0m"; }

interface=$(ip route | grep default | sed -e "s/^.*dev.//" -e "s/.proto.*//")
LocalIP=$(ip addr show $interface | awk '/inet / {print $2}' | cut -d/ -f1 | tail -1)
linux=$(awk -F "("  '{print $1}' /etc/redhat-release)
hostname=$(hostname)

echo_yellow "当前系统发行版为  $linux"
echo_yellow "当前系统网卡名为  $interface"
echo_yellow "本机IP地址为  $LocalIP"
echo_yellow "本机主机名为  $hostname"

sleep 2
echo_yellow '正在初始化请稍后...'

autoconnect=$(nmcli dev show $interface | grep 'GENERAL.AUTOCONNECT:' | awk '{print $2}')
if [[ "$autoconnect" != "yes" ]]; then
    echo_yellow "检查网卡是否为开机自动连接..."
    nmcli con mod $interface connection.autoconnect yes
    nmcli con up $interface &>/dev/null
    sed -i '/^ONBOOT/ c ONBOOT=yes' /etc/sysconfig/network-scripts/"ifcfg-${interface}"
    systemctl restart network &>/dev/null
    echo_green "网卡已设置为开机自动连接"
else
    echo_green "网卡已设置为开机自动连接"
fi

ip_mode=$(nmcli dev show $interface | grep 'IP4.ADDRESS[1]' | awk '{print $2}')
gateway_dns=$(ip addr show $interface | awk '/inet / {split($2,a,"."); print a[1]"."a[2]"."a[3]}')
ip_mode2=$(grep BOOTPROTO /etc/sysconfig/network-scripts/"ifcfg-$interface" | awk -F "=" '{print $2}')

if [[ -z "$ip_mode" ]] || [ "$ip_mode2" != static ] ; then
    echo_green "正在检查网卡是否为静态IP地址..."
    nmcli con mod $interface ipv4.addresses "${LocalIP}/24" &>/dev/null
    nmcli con mod $interface ipv4.gateway "${gateway_dns}.2" &>/dev/null
    nmcli con mod $interface ipv4.dns "${gateway_dns}.2" &>/dev/null
    nmcli con mod $interface ipv4.method manual &>/dev/null
    nmcli con up $interface &>/dev/null
    sed -i '/^BOOTPROTO/ c BOOTPROTO=static' /etc/sysconfig/network-scripts/"ifcfg-${interface}"
    systemctl restart network &>/dev/null
    echo_green "网卡已设置静态IP"
else
    echo_green "网卡已设置静态IP"
fi


for i in {1..3}; do
    if ping -c 4 -i 0.2 223.5.5.5 &>/dev/null; then
        echo_green "网络连通性正常"
        break
    else
        echo_red "网络错误请检查网络配置"
        echo_yellow "正在尝试重启网络(尝试次数:$i)"
        systemctl restart network &>/dev/null
        nmcli con up $interface &>/dev/null
        sleep 5
    fi
done

manage_selinux_firewall() {
    SELINUXSTATUS=$(getenforce)

    if [[ "$SELINUXSTATUS" == "Disabled" ]] || [[ "$SELINUXSTATUS" == "Permissive" ]]; then
        echo_green "SELinux已成功关闭或当前处于宽容模式"
    else
        echo_red "SELinux未能关闭,正在尝试手动关闭..."
        sed -i '/^SELINUX=/ c\SELINUX=disabled' /etc/selinux/config
        setenforce 0
        if [[ "$(getenforce)" == "Disabled" ]] || [[ "$(getenforce)" == "Permissive" ]]; then
            echo_green "SELinux已成功关闭"
        else
            echo_red "SELinux未能关闭,请手动解决"
        fi
    fi
}

manage_selinux_firewall

FIREWALLSTATUS=$(systemctl is-active firewalld)

if [[ "$FIREWALLSTATUS" == "active" ]]; then
    echo_yellow "防火墙状态为开启,正在关闭防火墙..."
    systemctl disable --now firewalld &>/dev/null
    echo_green "防火墙已关闭"
else
    echo_green "防火墙无需操作"
fi

PACKAGES="lrzsz ntpdate sysstat net-tools wget vim bash-completion dos2unix tree psmisc chrony epel-release.noarch"
echo_yellow "正在安装常用软件..."
yum -y install $PACKAGES &>/dev/null

if [ $? -eq 0 ]; then
    echo_green "安装成功"
else
    echo_red "安装失败,请检测yum镜像仓库"
fi

sleep 5
echo_yellow "准备开启 $linux 系统的体验吧!!!"

# Prompt for shutdown, reboot, or exit
echo_yellow "请选择一个操作:"
echo_yellow "          关机 : 1"
echo_yellow "          重启 : 2"
echo_yellow "          退出 : 3"

read -p "请输入您的选择: " choice

case $choice in
    1)
        echo_yellow "正在执行关机操作..."
        init 0
        ;;
    2)
        echo_green "正在执行重启操作..."
        reboot
        ;;
    3)
        echo_yellow "请继续操作,脚本将退出。"
        ;;
    *)
        echo_red "无效的输入"
        ;;
esac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/574406.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rust中结构体的属性默认是不能修改的,要想修改可以有两种方式

Rust中结构体里面的属性默认是不支持修改的,而且默认不是pub的,要想修改的话,有两种方式,我以为和python里面的类似呢,但是还是需要一点技术含量的。如果想在引到外部修改,需要声明pub,如果想在…

专利视角下的量子竞赛:《2024全球专利格局白皮书》

2024年1月,欧洲量子产业联盟(QuIC)发布了题为《全球量子技术专利格局描述》的综合白皮书。 该文件以透明的视角展示了当今的知识产权格局,包括知识产权持有人的地理分布。该文件由 QuIC 知识产权(IP)与贸易…

【C++】图的存储 -- 邻接表

目录 邻接表的创建使用dfs遍历图dfs遍历图的递归思想 邻接表的创建 #include <iostream> using namespace std; #include <vector>struct edge//创建边集类型 {int v;//出边int w;//权值 }; const int N 100010;//顶点数量 vector<edge> e[N];//邻接表int m…

淘宝新店有流量扶持吗

淘宝新店有流量扶持 淘宝新店需要做些推广提高店铺权重 淘宝新店用3an推客做推广比较好 3an推客是给商家提供的营销工具&#xff0c;3an推客CPS推广模式由商家自主设置佣金比例&#xff0c;以及设置商品优惠券&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最…

初步认识泛型

文章目录 泛型的编译擦除机制 泛型的上界泛型方法 泛型的编译 擦除机制 泛型到底是怎么编译的&#xff1f;这个问题&#xff0c;也是曾经的一个面试问题。泛型本质是非常难的语法 通过命令&#xff1a;javap -c 查看字节码文件&#xff0c;所有的T都是Object。 在编译的过程当…

“量子谷”启程!数亿资金注入,加速量子、人工智能创新

2024年4月23日&#xff0c;欧洲委员会启动了新一轮“地平线欧洲”&#xff08;Horizon Europe&#xff09;项目征集&#xff0c;动用资金总额超过1.12亿欧元&#xff08;约8.67亿人民币&#xff09;。此次征集活动主要面向人工智能&#xff08;AI&#xff09;与量子技术领域的前…

面试:JVM垃圾回收

一、三种垃圾回收算法 1、标记清除&#xff08;已废弃&#xff09; 找到根对象&#xff08;局部变量正在引用的对象、静态变量正在引用的对象&#xff09;&#xff1b;沿着根对象的引用链&#xff0c;查看当前的对象是否被根对象所引用&#xff0c;若被引用&#xff0c;则加上…

redis和mysql数据一致性方案

请求 A 更新数据 请求B读数据 在高并发情况下&#xff0c;A、B请求过程步骤相互穿插&#xff0c;就会出现图中的问题。 期望redis 的数据是11&#xff0c;最后变成了10 场景&#xff1a;先删除Redis&#xff0c;再更新 MySQL&#xff0c;不主动更新Redis&#xff0c;访问redi…

软件企业质量保证的基石――QA,QC的良性协作

软件企业质量保证的基石――QA、QC的良性协作 国内的软件产业发展了20多年的时间&#xff0c;已经由个人英雄时代步入到中、小团队协作时代。相信不久的将来&#xff0c;国内一定会出现航母级的软件企业&#xff0c;那时候我们会迎来集团军作战的时代。不同的时代表明软件规模…

【AI相关】数学和统计学知识

数学和统计学的知识可以分为两部分&#xff1a; 一部分是线性代数中的基础概念&#xff0c;比如标量、向量和张量。 另一部分是概率统计中常见的分布类型&#xff0c;比如正态分布和伯努利分布。 线性代数 什么是标量&#xff1f; 标量是一个单独的数&#xff0c;可以是整…

PLC基本原理及其接线

目录&#xff1a; 一、PLC的简介与起源 二、PLC的基本结构 1、MCU模块 2、输入与输出模块 3、电源模块 4、编程设备 三、PLC的外部接线 1、PNP与NPN接线 2、三菱PLC的NPN与PNP设置 下续&#xff1a;三菱FX系列PLC-编程1 一、PLC的简介与起源 1、PLC简介 PLC的全称为…

Prompt之美:如何设计提示词让大模型变“聪明”

目录 一. Prompt关键要素 二. Prompt技巧 三. 实战中的Prompt优化 四. 参考文献 一. Prompt关键要素 Prompt是一个简短的文本输入&#xff0c;用于引导AI模型生成特定的回答或执行特定任务。换句话说&#xff0c;Prompt是你与AI模型沟通的方式。一个好的Prompt可以让AI更准…

猫头虎分享已解决Bug || **Error: ‘Promise‘ is undefined**

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【SpringBoot】00 Maven配置及创建项目

一、Maven配置 1、下载Maven 进入官网下载&#xff1a;Maven – Welcome to Apache MavenMaven – Download Apache Maven 本文以最新版为例&#xff0c;可按需选择版本 Maven – Welcome to Apache Maven 2、解压下载好的安装包 将安装包解压到自己设置的空文件夹中 3、…

抽象的代理模式1.0版本

前言&#xff1a; 在阅读Spring Security官方文档时&#xff0c;里面设计到了一种设计模式——代理模式Proxy 众里寻她千百度&#xff0c;蓦然回首&#xff0c;那人却在灯火阑珊处 开始 在之前的文章里陈述了一个观点——编程语言和语言没有区别 现看看我们日常生活中的代理…

利用 easycode 自动生成 数据库表 对应 类文件

1、安装easycode 打开settings&#xff0c;在plugins中搜索easycode进行安装&#xff0c;安装完成后重启idea。 2、连接数据库 连接数据库&#xff0c;填写数据库配置信息 点解Test connetction测试连接&#xff0c; 3、生成文件 右键数据库表格&#xff0c;生成对应文件 4…

说方法不如传授经验向媒体投稿你可以这样

在信息爆炸的时代,作为单位的信息宣传员,肩负着将本单位的重要资讯、活动成果、政策解读等内容有效传播至公众视野的重任。其中,向各类媒体投稿无疑是实现这一目标的重要途径。然而,传统的邮件投稿方式常常让我深感力不从心,费时费力不说,成功率低、出稿慢等问题更是让我和领导…

商标申请注册交费就一定会下注册证?

近日遇到一个网友说普推知产老杨说&#xff0c;他以为商标交钱就一定会下商标注册证&#xff0c;这个不管找哪家也做不到的。商标申请注册时要给商标局交费用&#xff0c;交完费用商标才有商标的形式审查&#xff0c;通过后下受理书&#xff0c;才有后面商标实质审查&#xff0…

[柏鹭杯 2021]试试大数据分解?

题目&#xff1a;&#xff08;NSSCTF | 在线CTF平台&#xff09; 题目就是如此&#xff0c;我没看到有5个不同的文本&#xff0c;其中最后一个文本以pem后缀&#xff0c;所以我们先来了解一下什么是pem格式。 PEM 格式 PEM格式通常用于数字证书认证机构&#xff08;Certifica…

UI自动化测试框架:PO 模式+数据驱动(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、PO 设计模式简介 什么是 PO 模式&#xff1f; PO&#xff…