Linux Shell脚本专栏_服务器系统配置初始化脚本_01
生活随笔
收集整理的這篇文章主要介紹了
Linux Shell脚本专栏_服务器系统配置初始化脚本_01
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、服務器系統配置初始化
- 1. 設置時區并同步時間
- ① 腳本編寫
- ②腳本說明
- 2. 禁用selinux
- ① 腳本編寫
- ②腳本說明
- 3. 關閉防火墻
- ① 腳本編寫
- ②腳本說明
- 4. 歷史命令顯示操作時間
- ① 腳本編寫
- ②腳本說明
- 5. 禁止root遠程登錄
- ① 腳本編寫
- ②腳本說明
- 6. 禁止定時任務發送郵件
- ① 腳本編寫
- ②腳本說明
- 7. 設置最大打開文件數
- ① 腳本編寫
- ②腳本說明
- 8. 較少Swap使用
- ① 腳本編寫
- ②腳本說明
- 9. 系統內核參數優化
- ① 腳本編寫
- ②腳本說明
- 10. 安裝系統性能分析工具及其他
- ① 腳本編寫
- ②腳本說明
- 11. SSH超時時間
- ① 腳本編寫
- ②腳本說明
- 二、腳本集成+可執行權限
- 2.1. 全部腳本集成版本
- 2.2. 賦予腳本可執行權限
- 2.3. 運行腳本
- 2.4. 不賦予權限運行腳本
- 2.5. 腳本調試技巧
- 2.6. 腳本格式轉換
- 三、驗證
- 3.1. 刷新使腳本生效
- 3.2. 查看命令
- 3.3. 查看追加的環境變量
一、服務器系統配置初始化
背景:新購買10臺服務器冰冰安裝Linux操作 需求:1. 設置時區并同步時間2. 禁用selinux3. 關閉防火墻4. 李世明令顯示操作時間5. 禁止root遠程登錄6. 禁止定時任務發送郵件7. 設置最大打開文件數8. 較少Swap使用9. 系統內核參數優化10.安裝系統性能分析工具及其他1. 設置時區并同步時間
① 腳本編寫
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime if ! crontab -l |grep ntpdate &>/dev/null ; then(echo "* 1 * * * ntpdate ntp1.aliyun.com >/dev/null 2>&1";hwclock -w;crontab -l) |crontab fi②腳本說明
查看系統信息
[root@ly-01 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) #查看當前默認時區 UTC [root@ly-01 ~]# date Mon Feb 24 08:59:26 CST 2020#修改時區為亞洲上海時區 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime#安裝Linux系統時間同步服務軟件:ntpdate 如果已安裝,則跳過此步驟 [root@localhost ~]# yum -y install ntpdate#Linux系統時間同步 #讓當前服務器同步到網絡時間,從而來更新當前服務器的時間。以下命令表示的是讓當前服務器時間同步到ntp1.aliyun.com [root@localhost ~]# ntpdate ntp1.aliyun.com #Linux硬件時間同步:修改服務器硬件時間映射到我們的系統時間,也可以說系統時間同步到硬件時間,防止系統重啟后時間還原。 hwclock -w#定時同步,牽扯到定時任務 #查看當前用戶的定時任務 [root@ly-01 ~]# crontab -l #給當前用戶添加定時任務 [root@ly-01 ~]# crontab -e#同步時間規則,每天1點同步一次 * 1 * * *#將錯誤追加為空 >前面下具體執行的命令 >/dev/null 2>&1#判斷現定時任務列表中是否有次定時任務,有,則跳過下面設置定時任務的邏輯 if ! crontab -l |grep ntpdate &>/dev/null ; #下面這是一組命令 可直接執行 (echo "* 1 * * * ntpdate ntp1.aliyun.com >/dev/null 2>&1";hwclock -w;crontab -l) |crontab2. 禁用selinux
① 腳本編寫
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config②腳本說明
#流編輯器 sed #寫入或者修改 -i #區配關鍵字 /SELINUX #將/etc/selinux/config文件中值為permissive替換為disabled /permissive/disabled/ /etc/selinux/config#咱們手動編輯修改一樣的 vim /etc/selinux/config #替換值permissive為disabled即可3. 關閉防火墻
① 腳本編寫
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; thensystemctl stop firewalldsystemctl disable firewalld elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; thenservice iptables stopchkconfig iptables off fi②腳本說明
這是一個centos7和centos6 2個版本防火墻腳本 先去查看/etc/redhat-release文件中的系統版本內容,然后用正則表達式區配7.x還是6.x,然后使用管道命令過濾,最后,針對不同系統走不同分支4. 歷史命令顯示操作時間
當前用戶什么時間執行的什么命令
① 腳本編寫
if ! grep HISTTIMEFORMAT /etc/bashrc; thenecho 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc fi②腳本說明
#export HISTTIMEFORMAT 將此變量輸出到環境變量中 #%F %T 日期時間格式 #whoami 當前用戶 export HISTTIMEFORMAT="%F %T `whoami` " history前
后:
5. 禁止root遠程登錄
① 腳本編寫
#sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config②腳本說明
此設置要慎重:執行此設置之前一定要提前把管理用戶創建好,不然,服務器登錄不上,建議先把此配置注釋,改為yes root就登錄不上了 編輯/etc/ssh/sshd_config文件,將#PermitRootLogin yes 注釋去掉6. 禁止定時任務發送郵件
① 腳本編寫
操作錯誤時,服務器會定時發送郵件,目錄在/var/mail/下面,導致小文件增多,影響服務器性能,上面的追加錯誤為空,也是為了這個目的
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab②腳本說明
# 編輯/etc/crontab文件 vim /etc/crontab #替換格式 's/^ #替換的目標對象 MAILTO=root #替換后的值等于什么 MAILTO=""7. 設置最大打開文件數
① 腳本編寫
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②腳本說明
# * 域的范圍,*代表所有 # soft 類型 有soft 和hard 2種 #nofile 表示打開最大文件數 #65535 最大文件數數量* soft nofile 65535#簡單的來說 #就是編輯/etc/security/limits.conf這個文件追加這2行內容8. 較少Swap使用
① 腳本編寫
echo "0" > /proc/sys/vm/swappiness②腳本說明
編輯/proc/sys/vm/swappiness文件修改值9. 系統內核參數優化
① 腳本編寫
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②腳本說明
編輯/etc/sysctl.conf文件追加下面參數#當tcp溢出時一個保護機制策略 net.ipv4.tcp_syncookies = 1 #最大隊列長度 net.ipv4.tcp_max_tw_buckets = 20480 #接收syn的隊最大列長度 net.ipv4.tcp_max_syn_backlog = 20480 #網卡的最大隊列長度 net.core.netdev_max_backlog = 262144 #超時設置 net.ipv4.tcp_fin_timeout = 20 #查看系統默認參數 [root@ly-01 mail]# sysctl -a |grep syn_ba10. 安裝系統性能分析工具及其他
① 腳本編寫
yum install gcc make autoconf vim sysstat wget unzip net-tools iostat iftop iotp lrzsz -y②腳本說明
在這里插入代碼片11. SSH超時時間
用于咱們ssh登錄后的超時時間,栗子:你通過ssh登錄服務器,在一定時間被沒有做任何操作
設置超時時間安全性好
① 腳本編寫
if ! grep "TMOUT=600" /etc/profile &>/dev/null; thenecho "export TMOUT=600" >> /etc/profile fi②腳本說明
#將此變量追加到系統環境變量的配置文件中 echo "export TMOUT=600" >> /etc/profile二、腳本集成+可執行權限
2.1. 全部腳本集成版本
#創建存儲腳本的目錄 mkdir shell_scripts #創建腳本文件 vim 1.sh #粘貼下面內容 #/bin/bash # 設置時區并同步時間 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime if ! crontab -l |grep ntpdate &>/dev/null ; then(echo "* 1 * * * ntpdate ntp1.aliyun.com >/dev/null 2>&1";hwclock -w;crontab -l) |crontab fi# 禁用selinux sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config# 關閉防火墻 if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; thensystemctl stop firewalldsystemctl disable firewalld elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; thenservice iptables stopchkconfig iptables off fi# 歷史命令顯示操作時間 if ! grep HISTTIMEFORMAT /etc/bashrc; thenecho 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc fi# SSH超時時間 if ! grep "TMOUT=600" /etc/profile &>/dev/null; thenecho "export TMOUT=600" >> /etc/profile fi# 禁止root遠程登錄 #sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config# 禁止定時任務向發送郵件 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 install gcc make autoconf vim sysstat wget unzip net-tools iostat iftop iotp lrzsz -y2.2. 賦予腳本可執行權限
chmod +x 1.sh2.3. 運行腳本
#在當前目錄下面,運行腳本 ./1.sh
2.4. 不賦予權限運行腳本
bash 腳本名稱2.5. 腳本調試技巧
哪一行報錯,就把相關的腳本復制出來,單獨創建一個.sh的文件,招貼內容到文件中,用bash +腳本文件名,運行腳本2.6. 腳本格式轉換
在Windows編輯的腳本在Linux運行有時會發生格式或者語法問題
解決方案:
三、驗證
3.1. 刷新使腳本生效
source /etc/bashrc3.2. 查看命令
#查看命令 cat /etc/bashrc3.3. 查看追加的環境變量
cat /etc/profile總結
以上是生活随笔為你收集整理的Linux Shell脚本专栏_服务器系统配置初始化脚本_01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio Code V
- 下一篇: linux shell脚本 删除指定目录