Linux集群和自動化維2 6 5 自動化類指令碼

2021-09-23 16:06:44 字數 3240 閱讀 8510

2.6.5 自動化類指令碼

1.批量生成賬戶指令碼

在內網開發環境中,有時需要為開發組的同事批量生成賬戶,如果手動新增的話會非常麻煩,這時可以寫一段shell指令碼來自動完成這項工作。在首次登入時密碼均是統一的,在移交給開發人員使用時讓他們自行更改即可,指令碼**如下(此指令碼在centos 5.8 / 6.4 x86_64下均已測試通過):

#!/bin/bash

#此指令碼應用於開發環境下批量生成使用者

for name in tom jerry joe jane yhc brain

douseradd $name

echo redhat | passwd --stdin $name

donpasswd --stdin這行**的的作用是將前面的輸入通過管道命令作為自己的輸出,從而避免指令碼互動,達到自動化的目的。

筆者個人覺得用指令碼的方式來批量自動新增使用者的方法較之ansible的user模組更為簡便,有興趣的朋友也可以研究比較下。

2.系統初始化指令碼

此指令碼用於新裝linux的相關配置工作,比如禁用iptables、selinux及ipv6,優化系統核心,停掉一些沒必要啟動的系統服務等。此指令碼可用於公司內部的開發機器的批量部署,指令碼**如下所示(此指令碼在centos 6.4 x86_64下已測試通過):

#!/bin/bash

#新增epel外部yum擴充套件源

cd /usr/local/src

wget

rpm -ivh epel-release-6-8.noarch.rpm

#安裝gcc基礎庫檔案及sysstat工具

yum -y install gcc gcc-c++ vim-enhanced unzip unrar sysstat

#配置ntpdate自動對時

yum -y install ntp

echo "01 01 * * * /usr/sbin/ntpdate ntp.api.bz    >> /dev/null 2>&1" >> /etc/crontab

ntpdate ntp.api.bz

service crond restart

#配置檔案的ulimit值

ulimit -shn 65534

echo "ulimit -shn 65534" >> /etc/rc.local

cat >> /etc/security/limits.conf << eof

*                     soft     nofile             65534

*                     hard     nofile             65534

eof#基礎系統核心優化

cat >> /etc/sysctl.conf << eof

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_orphans = 16384

eof/sbin/sysctl -p

#禁用control-alt-delete組合鍵以防止誤操作

sed -i 's@ca::ctrlaltdel:/sbin/shutdown -t3 -r now@#ca::ctrlaltdel:/sbin/shutdown -t3 -r now@' /etc/inittab

#關閉selinux

sed -i 's@selinux=enforcing@selinux=disabled@' /etc/selinux/config

#關閉iptables

service iptables stop

chkconfig iptables off

#ssh服務配置優化,請保持機器中至少有乙個具有sudo許可權的使用者,下面的配置會禁止root遠端登入

sed -i 's@#permitrootlogin yes@permitrootlogin no@' /etc/ssh/sshd_config #禁止          root遠端登入

sed -i 's@#permitemptypasswords no@permitemptypasswords no@' /etc/ssh/sshd_config        #禁止空密碼登入

sed -i 's@#usedns yes@usedns no@' /etc/ssh/sshd_config /etc/ssh/sshd_config

service sshd restart

#禁用ipv6位址

echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf

echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

chkconfig ip6tables off

#vim基礎語法優化

echo "syntax on" >> /root/.vimrc

echo "set nohlsearch" >> /root/.vimrc

#精簡開機自啟動服務,安裝最小化服務的機器初始可以只保留crond、network、rsyslog、sshd這4個服務。

for i in `chkconfig --list|grep 3:on|awk ''`;do chkconfig --level 3 $i off;done

for cursrv  in crond rsyslog sshd network;do chkconfig --level 3 $cursrv on;done

#重啟伺服器

reboot

Linux集群和自動化維2 7 小結

2.7 小結 本章向大家詳細說明了shell的基礎語法,以及sed和awk在日常工作中的使用案例,並用shell命令grep和 find結合正規表示式演示了正規表示式的一些基礎用法。在後面的例項中,又根據備份類 監控類 統計 類 自動化運維類 運維開發類向大家演示了在生產環境下我們經常用到的shel...

Linux集群和自動化維2 2 Shell程式設計基礎

2.2 shell程式設計基礎 shell是核心程式kernel之外的命令解析器,是乙個程式,同時也是一種命令語言和程式語言。作為一種命令語言shell可以互動式地解析使用者輸入的命令。作為一種程式語言shell定義了各種引數,並且提供了高階語言才有的程式控制結構,雖然它不是linux核心系統的一部...

Linux自動化運維

linux自動化運維筆記 本節主要講解將命令寫入指令碼中用於實現自動化運維 shell指令碼 1 意義 2 檢查語法錯誤 3 字型顏色改變 4 快捷鍵使用 5 if else表示式 6 for迴圈 7 seq遍歷 8 將檔案複製到遠端伺服器上 9 資料庫定時備份指令碼 10 符號的使用 11 cro...