标签:linux 服务器 master 替换字符串 root权限
需求描述:
1)上百台linux服务器的节点上,如果没有一个叫marshall的用户,则添加这个用户,然后替换/etc/shadow的第二列字段;如果用户存在,则直接替换/etc/shadow的第二列字段字符。
2)检查节点服务器上是否存在sudo命令,如果存在sudo命令,就说存在,反之,安装sudo命令。
3)让marshall用户能够执行root权限的所有命令。
一、搭建saltstack服务
1.saltstack服务端master安装、配置。
[root@vmware1 ~]# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm [root@vmware1 ~]# yum install -y salt-master [root@vmware1 ~]# /etc/init.d/salt-master start [root@vmware1 ~]# chkconfig salt-master on [root@vmware1 ~]# chkconfig --list salt-master salt-master 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2.修改默认的/etc/salt/master配置文件,然后重启salt-master服务。
[root@vmware1 ~]# vim /etc/salt/master interface: 10.0.1.173 #服务端master的IP地址 publish_port: 4505 #监听salt的消息发布系统端口 ret_port: 4506 #salt客户端与服务端通信的端口 [root@vmware1 ~]# /etc/init.d/salt-master restart 必须保证这2个端口可以正常通信,如果开启iptables防火墙,需要添加以下2条规则: -A INPUT -m state --state new -m tcp -p tcp --dport4505 -j ACCEPT -A INPUT -m state --state new -m tcp -p tcp --dport4506 -j ACCEPT
3. saltstack的minion端安装、配置。
1)安装minion软件包。
[root@vmware2 ~]# yum install -y salt-minion [root@vmware2 ~]# vim /etc/salt/minion master: 10.0.1.173 #填写master端的IP地址 id: vmware2 #minion客户端主机名(标识字符) master_port: 4506 #开启salt客户端与服务端通信的端口
2)启动或者重启minion服务。
[root@vmware2 ~]# /etc/init.d/salt-minion restart
4.配置自动认证
1)在master端,配置文件中,打开注释:
auto_accept: True,设置为自动接受。
[root@vmware1 ~]# vim /etc/salt/master auto_accept: True 重启下salt-master服务。 [root@vmware1 ~]# /etc/init.d/salt-master restart [root@vmware1 ~]# salt-key -L Accepted Keys: vmware1 vmware2 Unaccepted Keys: Rejected Keys:
2)运行测试下。
[root@vmware1 ~]# salt ‘*‘ test.ping vmware2: True [root@vmware1 ~]# salt ‘*‘ cmd.run ‘date‘ vmware2: Fri Aug 22 12:05:24 CST 2014
二、根据需求写出shell脚本,然后放到master上执行,查看效果。
1.写出shell脚本,在虚拟机上调试成功。
[root@vmware1 ~]# cat add_user.sh #!/bin/bash PS=`awk -F ":" ‘/taokey/ {print $2}‘/etc/shadow` if id taokey &>/dev/null 2>&1 then sed -i ‘/taokey/s#‘$PS‘#abcd#g‘/etc/shadow else useradd taokey sed -i ‘/taokey/s/!!/abcd/‘g/etc/shadow fi if [ -n `which sudo` ];then echo ‘sudoexist‘ &>/dev/null 2>&1 else /usr/bin/yuminstall -y sudo echo"taokey ALL=(ALL) ALL">>/etc/sudoers fi Num=`grep taokey /etc/sudoers | wc -l` if [ "$Num" = "1" ] then echo"user is exist." >/dev/null else echo"taokey ALL=(ALL) ALL">>/etc/sudoers fi
2.创建/srv/salt目录,把调试好的shell脚本add_user.sh放到/srv/salt目录下。
[root@vmware1 ~]# mkdir -p /srv/salt [root@vmware1 ~]# cp add_user.sh /srv/salt/
3.用salt执行add_user.sh脚本。
[root@vmware1 ~]# cd /srv/salt/ [root@vmware1 salt]# ls add_user.sh [root@vmware1 salt]# salt ‘*‘ cmd.scriptsalt://add_user.sh vmware2: ---------- pid: 4960 retcode: 0 stderr: stdout:
执行脚本之前的客户端: [root@vmware2 ~]# cat /etc/shadow | grep taokey [root@vmware2 ~]# 执行之后的客户端: [root@vmware2 ~]# cat /etc/shadow | grep taokey taokey:abcd:16304:0:99999:7::: [root@vmware2 ~]# which sudo /usr/bin/sudo [root@vmware2 ~]# tail /etc/sudoers ## cdrom as root # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown thissystem # %users localhost=/sbin/shutdown -h now ## Read drop-in files from /etc/sudoers.d (the # heredoes not mean a comment) #includedir /etc/sudoers.d taokey ALL=(ALL) ALL
4.在虚拟机上操作之后,开始线上操作。
这时候,我就可以批量操作100多台服务器了。
本文出自 “岁月在流逝,光辉依然在” 博客,请务必保留此出处http://taokey.blog.51cto.com/4633273/1543473
标签:linux 服务器 master 替换字符串 root权限
原文地址:http://taokey.blog.51cto.com/4633273/1543473