天天看点

linux系统最小化安装后的初始化脚本

作为运维人员,经常会初始化系统,系统在安装过程中基本都会选择最小化安装,这样安装好的系统里会缺少很多环境。

下面分享一个系统安装后的初始化脚本:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

<code>#!/bin/bash</code>

<code>#系统时最小化安装的,这里要安装系统的软件库</code>

<code>yum groupinstall -y </code><code>"development tools"</code>

<code>#创建目录</code>

<code>[ ! -d </code><code>/server/tools</code> <code>] &amp;&amp; </code><code>mkdir</code> <code>-p </code><code>/server/tools</code>

<code>[ ! -d </code><code>/application</code> <code>] &amp;&amp; </code><code>mkdir</code> <code>-p </code><code>/application</code>

<code>[ ! -d </code><code>/data</code> <code>] &amp;&amp; </code><code>mkdir</code> <code>-p </code><code>/data</code>

<code>[ ! -d </code><code>/app/logs</code> <code>] &amp;&amp; </code><code>mkdir</code> <code>-p </code><code>/app/logs</code>

<code>[ ! -d </code><code>/server/backup</code> <code>] &amp;&amp; </code><code>mkdir</code> <code>-p </code><code>/server/backup</code>

<code>[ ! -d </code><code>/delete</code> <code>] &amp;&amp; </code><code>mkdir</code> <code>-p </code><code>/delete</code>

<code>#每周六凌晨1点0分更新服务器系统时间</code>

<code>echo</code> <code>"############### auto update time ###############"</code> <code>&gt;&gt; </code><code>/var/spool/cron/root</code>

<code>echo</code> <code>"00 01 * * *   /usr/sbin/ntpdate time.nist.gov &gt;/dev/null 2&gt;&amp;1"</code> <code>&gt;&gt; </code><code>/var/spool/cron/root</code>

<code>[ `</code><code>grep</code> <code>ntpdate </code><code>/var/spool/cron/root</code> <code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] &amp;&amp; action </code><code>"uptime set"</code> <code>/bin/true</code> <code>|| action </code><code>"uptime set"</code> <code>/bin/false</code>

<code>#配置yum源</code>

<code>wget -P </code><code>/etc/yum</code><code>.repos.d/ http:</code><code>//mirrors</code><code>.163.com/.help</code><code>/CentOS6-Base-163</code><code>.repo </code><code>#下载配置文件</code>

<code>/bin/mv</code> <code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo.bak</code>

<code>/bin/cp</code> <code>/etc/yum</code><code>.repos.d</code><code>/CentOS6-Base-163</code><code>.repo </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo</code>

<code>[ `</code><code>grep</code> <code>163.com </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo | </code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] &amp;&amp; action </code><code>"yum set"</code> <code>/bin/true</code> <code>|| action </code><code>"yum set"</code> <code>/bin/false</code>

<code>#关闭SELINUX及iptables</code>

<code>/bin/cp</code> <code>/etc/selinux/config</code> <code>/etc/selinux/config</code><code>.bak</code>

<code>sed</code> <code>-i </code><code>'s/SELINUX=enforcing/SELINUX=disabled/'</code> <code>/etc/selinux/config</code> <code>2&gt;&amp;1</code>

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>stop &gt;</code><code>/dev/null</code>

<code>chkconfig iptables off &gt;</code><code>/dev/null</code>

<code>[ `chkconfig --list |</code><code>grep</code> <code>iptables|</code><code>grep</code> <code>3:on|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 -a `</code><code>grep</code> <code>"SELINUX=enforcing"</code> <code>/etc/selinux/config</code><code>|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 ] &amp;&amp; action </code><code>"iptables and selinux close"</code> <code>/bin/true</code> <code>|| action </code><code>"iptables and selinux close"</code> <code>/bin/false</code>

<code>#调整文件描述符数量</code>

<code>/bin/cp</code> <code>/etc/security/limits</code><code>.conf </code><code>/etc/security/limits</code><code>.conf.bak</code>

<code>echo</code> <code>'* -   nofile  65535'</code><code>&gt;&gt;</code><code>/etc/security/limits</code><code>.conf</code>

<code>[ `</code><code>tail</code> <code>-1 </code><code>/etc/security/limits</code><code>.conf|</code><code>grep</code> <code>65535|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>1 ] &amp;&amp; action </code><code>"limit set"</code> <code>/bin/true</code> <code>|| action </code><code>"limit set"</code> <code>/bin/false</code>

<code>#更改字符集</code>

<code>/bin/cp</code> <code>/etc/sysconfig/i18n</code> <code>/etc/sysconfig/i18n</code><code>.bak</code>

<code>echo</code> <code>'LANG="en_US.UTF-8"'</code> <code>&gt;</code><code>/etc/sysconfig/i18n</code>

<code>#定时清理/var/spool/clientmqueue/目录下的垃圾文件,防止inodes节点被占满</code>

<code>##创建脚本目录</code>

<code>[ ! -d </code><code>/server/scripts</code> <code>] &amp;&amp; </code><code>mkdir</code> <code>-p </code><code>/server/scripts</code>

<code>if</code> <code>[ `rpm -qa sendmail |</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ];</code><code>then</code>

<code>##创建查找删除脚本</code>

<code>echo</code> <code>&gt;</code><code>/server/scripts/del</code><code>.sh&lt;&lt;EOF</code>

<code>find</code> <code>/var/spool/clientmqueue/</code> <code>-</code><code>type</code> <code>f|</code><code>xargs</code> <code>rm</code> <code>-f &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>EOF</code>

<code>##添加到定时任务,每周一凌晨0点0分执行</code>

<code>echo</code> <code>'################ clean /var/spool/clientmqueue/ ################'</code><code> &gt;&gt;</code><code>/var/spool/cron/root</code>

<code>echo</code> <code>'00 00 * * 1   /bin/sh /server/scripts/del.sh &gt;/dev/null 2&gt;&amp;1'</code> <code>&gt;&gt;</code><code>/var/spool/cron/root</code>

<code>[ </code><code>"$?"</code> <code>-</code><code>eq</code> <code>0 ] &amp;&amp; action </code><code>"clean /var/spool/clientmqueue/ set"</code> <code>/bin/true</code> <code>|| action </code><code>"clean /var/spool/clientmqueue/ set"</code> <code>/bin/false</code>

<code>else</code>

<code>action </code><code>"service sendmail is not installed,do not need set"</code> <code>/bin/false</code>

<code>fi</code>

<code>#精简开机自启动服务(只启动crond,sshd,network,syslog)</code>

<code>##筛选出所有在运行级别3自启动的服务并关闭自启动</code>

<code>for</code> <code>cgt </code><code>in</code> <code>`chkconfig --list | </code><code>grep</code> <code>3:on | </code><code>awk</code> <code>'{print $1}'</code><code>`;</code><code>do</code> <code>chkconfig --level 3 $cgt off;</code><code>done</code>

<code>##仅设置crond,sshd,network,syslog自启动</code>

<code>for</code> <code>cgt </code><code>in</code> <code>{crond,sshd,network,rsyslog};</code><code>do</code> <code>chkconfig --level 3 $cgt on;</code><code>done</code>

<code>flag=0</code>

<code>[ `chkconfig --list|</code><code>grep</code> <code>3:on|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>4 ] &amp;&amp; action </code><code>"auto_start services set"</code> <code>/bin/true</code> <code>|| action </code><code>"auto_start services set"</code> <code>/bin/false</code>

<code>#内核参数优化</code>

<code>[ -f </code><code>/etc/sysctl</code><code>.conf.bak ] &amp;&amp; </code><code>/bin/cp</code> <code>/etc/sysctl</code><code>.conf.bak </code><code>/etc/sysctl</code><code>.conf.bak.$(</code><code>date</code> <code>+%F-%H%M%S) ||</code><code>/bin/cp</code> <code>/etc/sysctl</code><code>.conf </code><code>/etc/sysctl</code><code>.conf.bak</code>

<code>cat</code> <code>&gt;&gt; </code><code>/etc/sysctl</code><code>.conf &lt;&lt;EOF</code>

<code>net.ipv4.tcp_fin_timeout = 2</code>

<code>net.ipv4.tcp_tw_reuse = 1</code>

<code>net.ipv4.tcp_tw_recycle = 1</code>

<code>net.ipv4.tcp_syncookies = 1</code>

<code>net.ipv4.tcp_keepalive_time = 600</code>

<code>net.ipv4.ip_local_port_range = 4000 65000</code>

<code>net.ipv4.tcp_max_syn_backlog = 16384</code>

<code>net.ipv4.tcp_max_tw_buckets = 36000</code>

<code>net.ipv4.route.gc_timeout = 100</code>

<code>net.ipv4.tcp_syn_retries = 1</code>

<code>net.ipv4.tcp_synack_retries = 1</code>

<code>net.core.somaxconn = 16384</code>

<code>net.core.netdev_max_backlog = 16384</code>

<code>net.ipv4.tcp_max_orphans = 16384</code>

<code>#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。</code>

<code>#net.ipv4.ip_conntrack_max = 25000000</code>

<code>#net.ipv4.netfilter.ip_conntrack_max=25000000</code>

<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180</code>

<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120</code>

<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60</code>

<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120</code>

<code>#net.netfilter.nf_conntrack_max = 25000000</code>

<code>#net.netfilter.nf_conntrack_tcp_timeout_established = 180</code>

<code>#net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120</code>

<code>#net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60</code>

<code>#net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120'</code>

<code>sysctl -p &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>[ `</code><code>grep</code> <code>"net.ipv4.tcp_max_orphans = 16384"</code> <code>/etc/sysctl</code><code>.conf|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] &amp;&amp; action </code><code>"kernel set"</code> <code>/bin/true</code> <code>|| action </code><code>"kernel set"</code> <code>/bin/false</code>

<code>#更改默认的ssh服务端口,禁止root用户远程连接,禁止空密码连接</code>

<code>/bin/cp</code> <code>/etc/ssh/sshd_config</code> <code>/etc/ssh/sshd_config</code><code>.bak</code>

<code>#sed -i 's/\#Port 22/Port 52113/' /etc/ssh/sshd_config</code>

<code>sed</code> <code>-i </code><code>'s/\#PermitRootLogin yes/PermitRootLogin no/'</code> <code>/etc/ssh/sshd_config</code>

<code>sed</code> <code>-i </code><code>'s/\#PermitEmptyPasswords no/PermitEmptyPasswords no/'</code> <code>/etc/ssh/sshd_config</code>

<code>sed</code> <code>-i </code><code>'s/\#UseDNS yes/UseDNS no/'</code> <code>/etc/ssh/sshd_config</code>

<code>#[ `grep "Port 52113" /etc/ssh/sshd_config |wc -l` -ne 0 -a `grep "PermitRootLogin no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "PermitEmptyPasswords no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "UseDNS no" /etc/ssh/sshd_config|wc -l` -ne 0 ] &amp;&amp;action "ssh set" /bin/true || action "ssh set" /bin/false</code>

<code>[ `</code><code>grep</code> <code>"PermitRootLogin no"</code> <code>/etc/ssh/sshd_config</code><code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 -a `</code><code>grep</code> <code>"PermitEmptyPasswords no"</code> <code>/etc/ssh/sshd_config</code><code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 -a `</code><code>grep</code> <code>"UseDNS no"</code> <code>/etc/ssh/sshd_config</code><code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] &amp;&amp;action </code><code>"ssh set"</code> <code>/bin/true</code> <code>|| action </code><code>"ssh set"</code> <code>/bin/false</code>

<code>#锁定关键系统文件</code>

<code>chattr +ai </code><code>/etc/passwd</code>

<code>chattr +ai </code><code>/etc/shadow</code>

<code>chattr +ai </code><code>/etc/group</code>

<code>chattr +ai </code><code>/etc/gshadow</code>

<code>chattr +ai </code><code>/etc/inittab</code>

<code>#清空/etc/issue,去除系统及内核版本登陆前的屏幕显示</code>

<code>/bin/cp</code> <code>/etc/issue</code> <code>/etc/issue</code><code>.bak</code>

<code>&gt;</code><code>/etc/issue</code>

<code>[ `</code><code>cat</code> <code>/etc/issue</code><code>|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 ] &amp;&amp; action </code><code>"/etc/issue set"</code> <code>/bin/true</code> <code>|| action </code><code>"/etc/issue set"</code> <code>/bin/false</code>

自己整理的服务器安装后的初始化脚本:

提取密码:nifa

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/5897424.html,如需转载请自行联系原作者

继续阅读