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...