最近因为工作原因练习shell脚本 ,具体原理可以参考参考文献 以下脚本的缺点是没有给出设置DOMAIN域的参数 可以在脚本中自行设置 其他的对照脚本解读即可
其实也想解释一下原理.但是本身研究不深,而且也没有踩很多坑,就没有必要写太多了
执行脚本前:
1.本地源配置
2.host配置完成
3.防火墙已关闭
NISmaster节点上执行(主服务器)
#!/bin/bash
read -p "请输入允许访问的IP段格式为IP " ip
read -p "请输入子网掩码" netmask
read -p "请输入添加的从服务器hostname(确保已完成IP-host映射)" hostname
yum install -y ypserv rpcbind yp-tools ypbind
#设置domain域
echo "NISDOMAIN=eda.com" >> /etc/sysconfig/network
nisdomainname eda.com
#设置客户端的访问权限即哪些客户端可以访问服务器
echo "$ip/$netmask : * : * : none" >> /etc/ypserv.conf
sed -ri "/^NOPUSH=/c NOPUSH=false" /var/yp/Makefile
echo "255.255.255.255 127.0.0.1" >> /var/yp/securenets
echo "$netmask $ip" >> /var/yp/securenets
#启动服务
systemctl start ypbind.service
systemctl start ypxfrd.service
systemctl start ypserv.service
systemctl start yppasswdd.service
systemctl enable ypserv yppasswdd ypbind ypxfrd
#创建数据库 并且添加服务器与从服务器
/bin/expect<<-EOF
spawn /usr/lib64/yp/ypinit -m
expect {
"next host to add: " { send "$hostname\r" ; send "\04" ; exp_continue }
"y/n: y" { send "y\r"}
}
expect eof
EOF
NISSSlave执行(从服务器)
#!/bin/bash
read -p "请输入允许访问的IP段格式为IP " ip
read -p "请输入子网掩码" netmask
read -p "请输入同步的主服务器hostname(确保已完成IP-host映射)" hostname
yum install -y ypserv rpcbind yp-tools ypbind
#设置domain域
echo "NISDOMAIN=eda.com" >> /etc/sysconfig/network
nisdomainname eda.com
#设置访问权限
echo "$ip/$netmask : * : * : none" >> /etc/ypserv.conf
sed -ri "/^NOPUSH=/c NOPUSH=false" /var/yp/Makefile
echo "255.255.255.255 127.0.0.1" >> /var/yp/securenets
echo "$netmask $ip" >> /var/yp/securenets
systemctl start ypbind.service
systemctl start ypserv.service
systemctl start yppasswdd.service
systemctl start ypxfrd.service
systemctl enable ypserv ypxfrd yppasswdd ypbind
#同步数据库数据
/usr/lib64/yp/ypinit -s $hostname
NISClient执行
#!/bin/bash
read -p "请输入主hostname: " hostname
read -p "请输入从hostname: " chostname
yum install -y ypbind yp-tools
echo "NISDOMAIN=eda.com" >> /etc/sysconfig/network
nisdomainname eda.com
#设置客户端的访问方式与访问对象
authconfig --enablenis --nisdomain=eda.com --nisserver=$hostname,$chostname --enablemkhomedir --update
systemctl start ypbind.service
systemctl enable ypbind.service
参考博客与原理
https://www.cnblogs.com/liwanliangblog/p/17800679.html