$FHHOME/fabfile/user.py
$ fab -l |grep -F user.
user.check_group user.check_group:group01
user.check_user user.check_user:user01
user.chpasswd_devuser01_pro
user.chpasswd_devuser01_qa
user.chpasswd_devuser01_stg
user.chpasswd_devuser02_pro
user.chpasswd_devuser02_stg
user.chpasswd_devuser03_pro
user.chpasswd_root_pro PASSWORD is E5*******5
user.chpasswd_root_qa PASSWORD is AW*******5
user.chpasswd_root_stg PASSWORD is S3*******!
user.useradd_dev_all
user.useradd_devuser01
user.useradd_devuser02
user.useradd_opeuser01
user.userdel_devuser01
user.userdel_devuser02
$ fab -H $H user.check_user:user01 $ echo x.x.x.x | fab user.check_user:user01
$ H=test-server-1 $ fab -H $H -- hostname $ fab -H $H -- id user01 $ fab -H $H -- "cat /etc/passwd |grep user01" # check login shell $ fab -H $H -- grep user01 /etc/group $ fab -H $H -- sudo gpasswd -a user1 sudo # add USER to GROUP $ fab -H $H -- sudo gpasswd -r user1 sudo # remove USER from GROUP
~]# openssl passwd -1 'newpassword'
$1$0u444IQv$YSGCzz8mesPzCWwxHCxit.
~]# echo 'user01:$1$0u444IQv$YSGCzz8mesPzCWwxHCxit.' | chpasswd -e
~]# cat /etc/shadow |grep test1
test1:$1$0u444IQv$YSGCzz8mesPzCWwxHCxit.:17526:0:99999:7:::
~]# exit
~]$ su - user01
<- newpassword
$FHHOME/fabfile/user.py
import sys, os
from fabric.api import *
from fabric.contrib import files
from fabric.utils import abort
FHHOME=os.environ["FHHOME"]
#====================================================================
#check
#====================================================================
#------------------------------------------------
#user.check_user:user01
#------------------------------------------------
@task
def check_user(user):
"""user.check_user:user01"""
res = run("id %s" % user, warn_only=True)
if res.failed is True:
puts(red("There isn't %s in %s." % (user, env.host_string)))
return
run("cat /etc/passwd| grep %s" % user) #check login shell
#------------------------------------------------
#user.check_group:group01
#------------------------------------------------
@task
def check_group(group):
"""user.check_group:group01"""
res = run("grep ^%s /etc/group" % group, warn_only=True)
if res.failed is True:
puts(red("There isn't %s in %s." % (group, env.host_string)))
return
#====================================================================
# user.useradd
# useradd -m -u UID -g GROUP -G GROUP1,GROUP2 -s /bin/bash -d HOME_DIR LOGIN
# -m : create the user's home directory
#====================================================================
#------------------------------------------------
#user.useradd_dev_all
#------------------------------------------------
@task
def useradd_dev_all():
useradd_devuser01()
useradd_devuser02()
useradd_devuser03()
#------------------------------------------------
#user.useradd_devuser01
#------------------------------------------------
@task
def useradd_devuser01():
res = run("id devuser01", warn_only=True)
if res.failed is True:
sudo("useradd -m -u 1101 -g dev devuser01")
return
@task
def useradd_devuser02():
res = run("id devuser02", warn_only=True)
if res.failed is True:
sudo("useradd -m -u 1102 -g dev devuser02")
return
#------------------------------------------------
#user.useradd_opeuser
#------------------------------------------------
@task
def useradd_opeuser01():
res = run("id opeuser01", warn_only=True)
if res.succeeded is True:
abort("You already have opeuser01.")
sudo("useradd -m -u UID -g GROUP opeuser01")
#====================================================================
#chpasswd
# Dont't use '$' , '#' in password. Because '$' is needed escape.
#====================================================================
#------------------------------------------------
# chpasswd root
#------------------------------------------------
# user.chpasswd_root_pro
@task
def chpasswd_root_pro():
''' PASSWORD is E5*******5 '''
sudo("echo 'root:$1$0u422IQv$YSGCzz8mesPzCaWxHCxit.' | chpasswd -e")
# user.chpasswd_root_stg
@task
def chpasswd_root_stg():
''' PASSWORD is S3*******! '''
sudo("echo 'root:$1$0u333IQv$YSGCzz8mesPzCaWxHCxit.' | chpasswd -e")
# user.chpasswd_root_qa
@task
def chpasswd_root_qa():
''' PASSWORD is AW*******5 '''
sudo("echo 'root:$1$0u444IQv$YSGCzz8mesPzCaWxHCxit.' | chpasswd -e")
#------------------------------------------------
# chpasswd devuser01
#------------------------------------------------
# user.chpasswd_devuser01_pro
@task
def chpasswd_devuser01_pro():
sudo("id devuser01 && echo 'devuser01:PASS' | chpasswd", warn_only=True)
# user.chpasswd_devuser01_stg
@task
def chpasswd_devuser01_stg():
sudo("id devuser01 && echo 'devuser01:PASS' | chpasswd", warn_only=True)
# user.chpasswd_devuser01_qa
@task
def chpasswd_devuser01_qa():
sudo("id devuser01 && echo 'devuser01:PASS' | chpasswd", warn_only=True)
#------------------------------------------------
# chpasswd devuser02
#------------------------------------------------
# user.chpasswd_devuser02_pro
@task
def chpasswd_devuser02_pro():
sudo("id devuser02 && echo 'devuser02:PASS' | chpasswd", warn_only=True)
# user.chpasswd_devuser02_stg
@task
def chpasswd_devuser02_stg():
sudo("id devuser02 && echo 'devuser02:PASS' | chpasswd", warn_only=True)
#------------------------------------------------
# chpasswd devuser03
#------------------------------------------------
# user.chpasswd_devuser03_pro
@task
def chpasswd_devuser03_pro():
sudo("id devuser03 && echo 'devuser03:PASS' | chpasswd", warn_only=True)
#====================================================================
# userdel
# -r, --remove : Files in the user's home directory will be removed
#====================================================================
# user.userdel_devuser01
@task
def userdel_devuser01():
sudo("id devuser01 && userdel -r devuser01")
# user.userdel_devuser02
@task
def userdel_devuser02():
res = run("id devuser02", warn_only=True)
if res.succeeded is True:
sudo("tar zcf /tmp/devuser02.tar.gz /home/devuser02")
sudo("userdel -r devuser02")
return