Linux集群和自动化维2.6.5 自动化类脚本
2.6.5 自动化类脚本
1.批量生成账户脚本
在内网开发环境中,有时需要为开发组的同事批量生成账户,如果手动添加的话会非常麻烦,这时可以写一段Shell脚本来自动完成这项工作。在首次登录时密码均是统一的,在移交给开发人员使用时让他们自行更改即可,脚本代码如下(此脚本在CentOS 5.8 / 6.4 x86_64下均已测试通过):
#!/bin/bash
#此脚本应用于开发环境下批量生成用户
for name in tom jerry joe jane yhc brain
do
useradd $name
echo redhat | passwd --stdin $name
don
passwd --stdin这行代码的的作用是将前面的输入通过管道命令作为自己的输出,从而避免脚本交互,达到自动化的目的。
笔者个人觉得用脚本的方式来批量自动添加用户的方法较之Ansible的user模块更为简便,有兴趣的朋友也可以研究比较下。
2.系统初始化脚本
此脚本用于新装Linux的相关配置工作,比如禁用iptables、SElinux及ipv6,优化系统内核,停掉一些没必要启动的系统服务等。此脚本可用于公司内部的开发机器的批量部署,脚本代码如下所示(此脚本在CentOS 6.4 x86_64下已测试通过):
#!/bin/bash
#添加epel外部yum扩展源
cd /usr/local/src
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
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 '{print $1}'`;do chkconfig --level 3 $i off;done
for CURSRV in crond rsyslog sshd network;do chkconfig --level 3 $CURSRV on;done
#重启服务器
reboot
相关文章
- Hadoop 气数已尽?
- 如何利用大数据更好地促进SEO优化服务
- 工业制造中的大数据分析
- PHP基础|如何解决中文乱码问题?
- Python Decorator基础
- 制造业企业中台建设思考与实践
- 机器学习算法实践:朴素贝叶斯 (Naive Bayes)
- 大数据流处理如何帮助世界新兴市场
- 我是AI机器人何夕2号,想听听我的故事吗?
- 大数据与机器学习将如何改变全球能源行业?
- 从Effective Java总结一些有助安卓开发的建议
- 数据基础架构正在发生巨变,您准备好了吗?
- 话说PHP的Memcache & Memcached这两个扩展之间的关系,你都摸清楚了吗?
- 如何消除多云环境下数据保护与管理的复杂性?
- 王垠:如何掌握所有的程序语言
- 聊聊大数据Lambda架构
- GDPR一周年:数据合规进程任重而道远
- 联通大数据周华:数据科技助力产业智能升级
- 深读:大数据背后智慧消防的发展逻辑
- 影响数据驱动业务目标的大数据挑战