一键linux系统初始化脚本

一、前言
一般我们在安装新的系统时,系统的一些默认配置对我们来说是不行的,所以我们要自定义初始化系统。

二、需求
1)设置时区并把同步时间加入计划任务
2)禁用selinux
3)清空原防火墙默认策略只保留ssh
4)历史命令显示操作时间级用户
5)创建ALL权限用户并禁止root远程登录
6)禁止定时任务发送邮件
7)设置最大打开文件数
8)减少swap使用
9)系统内核参数优化
10)安装系统性能分析工具及其他常常用工具
注意:安装新系统最好最小化安装。

三、脚本正文
#!/bin/bash

#设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then
(echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab
fi

#禁用selinux
sed -i ‘/SELINUX/{s/permissive/disabled/}‘ /etc/selinux/config

#安装命令补全包
yum install -y epel-release &>/dev/null 2>&1
yum install -y bash-completion &>/dev/null 2>&1

#清空firewall防火墙原来所有的规则,只保留ssh
cd /etc/firewalld/zones/
echo "" > public.xml
cat >> public.xml << EOF
<zone>
<short>Public</short>
<service name="ssh"/>
</zone>
EOF
firewall-cmd --reload >/dev/null 2>&1

#历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; then
echo ‘export HISTTIMEFORMAT="%F %T whoami "‘ >> /etc/bashrc
fi

#SSH超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
echo "export TMOUT=600" >> /etc/profile
fi

#添加一个同root一样的超级用户,并禁止root远程登录
NEW_USER=admin
useradd $NEW_USER
echo 123456 |passwd --stdin $NEW_USER
#NEW_USER_ID=`cat /etc/passwd | grep $NEW_USER | awk -F ":" ‘{print $3}‘`
#CHANGE=\$s/$NEW_USER_ID/0/
#sed -i "$CHANGE" /etc/passwd
sed -i "92a $NEW_USER ALL=(ALL) NOPASSWD:ALL" /etc/sudoers
sed -i ‘s/#PermitRootLogin yes/PermitRootLogin no/‘ /etc/ssh/sshd_config
systemctl restart sshd

#禁止定时任务向发送邮件
sed -i ‘s/^MAILTO=root/MAILTO=""/‘ /etc/crontab

#设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
cat >> /etc/security/limits.conf << EOF

* soft nofile 65535
* hard nofile 65535
EOF
fi

#系统内核优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF

#减少SWAP使用
echo "0" > /proc/sys/vm/swappiness

#安装系统性能分析工具及其他
yum -y install gcc make autoconf vim sysstat net-tools iostat iftop iotp lrzsz &>/dev/null 2>&1

四、友情小命令
1)bash -x 脚本名 //执行脚本并且可以查看全部执行过程
2)如果脚本是在windows系统上所写,拷贝到linux系统上时,因为两种系统的系统格式不同,所以需要在linux系统上做如下操作:
yum -y install dos2unix

格式转换: dos2unix 脚本名字
3)执行ssh [email protected] 登录服务器的时候,一般需要切换root用户,则执行:
“sudo -i” 命令,这样可以不需要输入root密码。
4)重点,本脚本执行完毕,必须重启系统方能全部生效!

五、结束语
我是大表哥,我为自己带盐,以后会不定时更新脚本,请支持正版,盗链可耻,
我的博客是:http://blog.51cto.com
各位朋友有什么不懂以及认为有什么错误之处,请在下方留言,谢谢!

原文地址:http://blog.51cto.com/zpf666/2328076

时间: 2024-10-03 16:51:32

一键linux系统初始化脚本的相关文章

LINUX 系统初始化脚本

#!/bin/bash ######the system first start configuretion #####for install ####copy right by donglei############## #1.配置sysctl mv /etc/sysctl.conf  /etc/sysctl.bak echo "############################the new config for sysctl ########### net.ipv4.ip_forwa

linux系统初始化脚本

#!/bin/bash # Author:JuChangfei # BLOG:http://changfei.blog.51cto.com   if [ `whoami` != "root" ];then echo "please use root!" exit 1 fi #Common installation package yum -y install sysstat iptraf curl curl-devel ntp wget lsof  strace l

linux系统监控工具汇总及几个小脚本 , 系统初始化脚本

重要性能监测工具:top.vmstat.w.uptime.ps.free.iostat.netstat./proc等 需要监视Linux服务器的性能?大多数Linux发行版都集成了一些监视工具.这些工具可以获取有关系统活动的信息的详细指标.通过这些工具,你可以发现产生系统性能问题可能存在原因.下面讨论的是一些最基本的命令,它涉及到系统分析和调试服务器等一些问题,如:1.    找出系统瓶颈问题.2.    磁盘 (储存) 瓶颈问题.3.    CPU和内存瓶颈问题.4.    网络瓶颈问题.#

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

centos7 系统初始化脚本

现在自己的本地虚拟机系统,直接安装的是centos7.2 mini版,安装完成发现好多东西都没有安装,所以写了一个简单的系统初始化脚本,让自己可以省一些力气,哈哈 人懒主要是. 下面贴出写的脚本,脚本里面有好多地方写的不是特别完善,希望大家给出意见,让我来完善它. #!/bin/bash function readme(){echo ==========编写一个关于centos7 最小化系统安装后 需要设置的东西 ==========echo ==========1.默认执行dhclient,获

linux系统初始化& 优化总结文档

16条优化汇总 1-不用root管理,以普通用户的名义通过sudo授权管理 2-更改默认的远程连接ssh服务端口,22-->55113,禁止root用户远程连接,只监听内网ip(使用vpn,视情况而定) 3-定时自动更新服务器时间,使其和互联网时间同步 4-配置yum更新源,从国外更新源下载安装软件包 5-关闭selinux及防火墙(生产环境中,如果使用了外部ip一定要调整防火墙) 6-调整文件描述符的数量,进程及文件的打开都会消耗文件描述符 7-定时自动清理邮件目录垃圾文件,防止innodes

青蛙学Linux&mdash;系统初始化init及运行级

1.什么是init和运行级 1.1.init Linux系统的启动首先从BIOS开始,接下来Linux的引导程序将内核映像加载到内存,进行内核初始化.在内核初始化的最后一步,就是启动PID为1的init进程,这个进程是系统的第一个进程,负责启动那些开机时需要启动的服务. 大多数的Linux发行版的init系统都是和System V兼容的,所以也被称为sysinit,这是最早也是最流行的init系统.sysinit概念简单清晰,主要依赖于shell脚本.它一次一个串行启动进程,导致了它的致命缺点,

linux系统初始化--&#8203;配置主机网络

配置主机网络 安装完成linux 系统后,我们需要为主机配置一个可用的网络地址 下面以配置eth0接口为例来说明下 说明 在RHEL7中重新定义了Linux网卡的命名规则,不再遵循原来的eth[0,1,--].下面的例子中全部使用RHEL6的示例. 关于RHEL7的网卡命名原则 在进行centos7的pxe安装测试中发现了网卡命名不再遵从来有的命名规则而启用了最新的命名方式,官网文档描述如下: 在 Red Hat Enterprise Linux 7 中,systemd 和 udevd 支持大量

Linux系统初始化流程(简述)

1,POST [power on self test]: 接通电源后,CPU通过出厂指定的地址读取代码,包括主板芯片上的ROM,测试内存,cpu风扇,显示设备等.此时无论如何,硬盘设备本身必须在硬件平台上被主板等组件识别到.硬盘设备可以是硬盘,U盘,光盘等 BOIS--Boot Sequence--主要设定启动次序(多个磁盘都可以启动OS) 加载磁盘设备第0磁道第0扇区[sector 0]----MBR 446bytes bootloader :选定启动的OS,能自行识别分区文件系统(kerne