1、创建一个目录 /data;
2、创建user1,user2,user3 三个用户要求如下:
(1)user1 家目录在/data目录下,该用户的描述为testuser;
(2)user2 用户的uid 应当为2000;
(3)user3 用户应当使用 /sbin/nologin这个登录shell。
3、将以上三个用户加入到一个GID为3000,名为it的组中;
4、创建/it ;
5、要求it 组内的所有成员都可以在/it目录下创建文件,删除文件;
6、给it组更名为cloud。
1、反向输出
⏺ 当用户输入yes,显示no
⏺ 当用户输入no,显示yes
⏺ 当用户输入其它,提示用户输入yes/no
⏺ 忽略大小写
2、新建用户
⏺ 新建一个用户名列表namefile
⏺ 新建一个脚本,该脚本能够实现根据namefile自动创建用户,且密码随机生成。用户创建后将用户名和密码导入到/root/loginname.txt中。
⏺ 随机密码生成可以使用:openssl rand -base64 6
3、测试用户是否存在,并判断是否是超级用户
⏺ 写一个脚本:如果指定的用户存在,先说明其已经存在,并显示其ID号和SHELL,并判断是否是超级用户;否则,就创建用户,并显示其ID号
4、创建或目录文件
⏺ 该脚本应当有交互功能
⏺ 该脚本用于备份系统目录
⏺ 需要给予用户提示,提示用户应当输入目录或者文件名
⏺ 判断用户要备份的文件是否存在,如果不存在则告知用户,并输出相应错误
⏺ 判断用户要备份的目标目录是否存在,如果该目录不存在,则需要问用户是否创建,如果该目录已经存在,则需要问用户是否重命名该目录
5、测试IP是否可达
⏺ 根据iplist.txt文件中列举的IP地址,判断IP地址是否可达。
⏺ 只显示可达的IP地址。(不可达的可以使用 >> /dev/null)
6、脚本实现输出机器信息
⏺ 将本机的网卡的IP地址和MAC地址截取出来,输出到/root/nic
⏺ 将本机的磁盘使用情况截取出来 输出到 /root/disk
⏺ 判断系统空间使用的情况,如果 / 使用率大于30% 则删除 /tmp 的内容
+++
1、创建一个目录 /data;
[root@openEuler ~]# ls /
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@openEuler ~]# mkdir /data -- 在根目录下创建目录 data
[root@openEuler ~]# ls / -- 通过 ls 命令查看根目录下文档
bin data etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr
[root@openEuler ~]#
2、创建user1,user2,user3 三个用户要求如下:
(1)user1 家目录在/data目录下,该用户的描述为testuser;
[root@openEuler ~]# id user1 #-- 创建用户前确认系统中没有 user1 用户
id: “user1”:无此用户
[root@openEuler ~]# useradd -c testuser -d /data/user1 user1 #-- 创建用户 user1 ,指定描述信息为testuser ,用户家目录为 /data 下;
[root@openEuler ~]# id user1 #-- 验证,用户 user1 创建成功;
用户id=1002(user1) 组id=1002(user1) 组=1002(user1)
[root@openEuler ~]# chmod 777 /data
[root@openEuler ~]# su - user1 #-- 切换至用户 user1;
Welcome to 4.19.90-2003.4.0.0036.oe1.x86_64
System information as of time: 2022年 12月 30日 星期五 17:21:41 CST
System load: 0.00
Processes: 159
Memory used: 25.0%
Swap used: 0.0%
Usage On: 9%
IP address: 192.168.74.136
Users online: 1
[user1@openEuler ~]$ pwd #-- 查看用户家目录为 /data/user1
/data/user1
[user1@openEuler ~]$ exit #-- 退出 user1 用户登陆
注销
[root@openEuler ~]# tail /etc/passwd
pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
chrony:x:983:981::/var/lib/chrony:/sbin/nologin
pcpqa:x:982:980:PCP Quality Assurance:/var/lib/pcp/testsuite:/bin/bash
pesign:x:981:979:Group for the pesign signing daemon:/var/run/pesign:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
dbus:x:978:978:System Message Bus:/:/usr/sbin/nologin
huawei:x:1000:1000::/home/huawei:/bin/bash
smb:x:1001:1001::/home/smb:/sbin/nologin
user1:x:1002:1002:testuser:/data/user1:/bin/bash #--可以看到用户描述
(2)user2 用户的uid 应当为2000;
[root@openEuler ~]# id user2 #-- 创建用户前确认系统无 user2 用户;
id: “user2”:无此用户
[root@openEuler ~]# useradd -u 2000 user2 #-- 创建用户 user2 并指定用户 uid 为 2000;
[root@openEuler ~]# id user2 #-- 验证新增用户
用户id=2000(user2) 组id=2000(user2) 组=2000(user2)
[root@openEuler ~]#
(3)user3 用户应当使用 /sbin/nologin
这个登录shell。
[root@openEuler ~]# id user3 #-- 创建用户前确认系统无 user3 用户
id: “user3”:无此用户
[root@openEuler ~]# useradd -s /sbin/nologin user3 #-- 创建用户 user3 并指定 shell 为 /sbin/nologin;
[root@openEuler ~]# id user3 #-- 验证创建用户 user3 成功
用户id=2001(user3) 组id=2001(user3) 组=2001(user3)
[root@openEuler ~]# cat /etc/passwd | grep user3 #-- 查看 /etc/passwd 文件中 user3 用户信息
user3:x:2001:2001::/home/user3:/sbin/nologin #-- 验证 user3 用户 shell 为 /sbin/nologin
[root@openEuler ~]#
3、将以上三个用户加入到一个GID为3000,名为it的组中;
[root@openEuler ~]# cat /etc/group | grep -w it #-- 创建前确认系统中无 it 组
[root@openEuler ~]# groupadd -g 3000 it #-- 创建 it 组并指定 GID 为 3000;
[root@openEuler ~]# cat /etc/group | grep -w it #-- 再次查看
it:x:3000: #-- it 组创建成功,且 GID 为 3000
[root@openEuler ~]# usermod -aG it user1 #-- 将用户 user1 添加至 it 组中
[root@openEuler ~]# usermod -aG it user2 #-- 将用户 user2 添加至 it 组中
[root@openEuler ~]# usermod -aG it user3 #-- 将用户 user3 添加至 it 组中
[root@openEuler ~]# cat /etc/group | grep -w it #-- 查看组配置文件
it:x:3000:user1,user2,user3 #-- 验证成功,it 组中增加 user1 , user2 ,user3
[root@openEuler ~]#
4、创建/it ;
[root@openEuler ~]# ls -l / |grep -w it #-- 查看根目录下是否已存在 it 目录;
[root@openEuler ~]# mkdir /it #-- 在根目录下创建 it 目录
[root@openEuler ~]# ls -l / |grep -w it #-- 查看目录 it 创建成功
drwxr-xr-x. 2 root root 4096 12月 30 17:48 it
5、要求it 组内的所有成员都可以在/it目录下创建文件,删除文件;
[root@openEuler ~]# chown :it /it #-- 修改 it 目录的所属组为 it 组
[root@openEuler ~]# ls -l / |grep -w it #-- 验证修改成功
drwxr-xr-x. 2 root it 4096 12月 30 17:48 it
[root@openEuler ~]# chmod g+w /it #-- 修改 it 目录的所属组权限,增加 w 修改权限
[root@openEuler ~]# ls -l / |grep -w it #-- 验证权限修改成功
drwxrwxr-x. 2 root it 4096 12月 30 17:48 it
[root@openEuler ~]# su - user1 #-- 切换至 it 组中的用户 user1
上一次登录:五 12月 30 17:44:28 CST 2022pts/0 上
Welcome to 4.19.90-2003.4.0.0036.oe1.x86_64
System information as of time: 2022年 12月 30日 星期五 17:49:48 CST
System load: 0.05
Processes: 162
Memory used: 18.4%
Swap used: 0.0%
Usage On: 9%
IP address: 192.168.74.136
Users online: 1
[user1@openEuler ~]$ mkdir /it/test #-- 测试通过 user1 用户创建 test 目录
[user1@openEuler ~]$ ls -l /it/ #-- 查看目录创建结果
总用量 4
drwx------. 2 user1 user1 4096 12月 30 17:49 test #-- test 目录创建成功
[user1@openEuler ~]$ rm -rf /it/test #测试删除 test 目录
[user1@openEuler ~]$ ls -l /it/ #-- 查看目录删除结果
总用量 0 #-- test 目录删除成功
[user1@openEuler ~]$ exit
注销
[root@openEuler ~]#
6、给it组更名为cloud。
[root@openEuler ~]# cat /etc/group | grep -wE "it|cloud" #-- 查看组配置文件
it:x:3000:user1,user2,user3 #-- 有 it 组,无 cloud 组
[root@openEuler ~]# groupmod -n cloud it #-- 将 it 组更名为 cloud
[root@openEuler ~]# cat /etc/group | grep -wE "it|cloud" #-- 查看组配置文件
cloud:x:3000:user1,user2,user3 #-- 更名修改成功
[root@openEuler ~]#
⏺ 当用户输入yes,显示no
⏺ 当用户输入no,显示yes
⏺ 当用户输入其它,提示用户输入yes/no
⏺ 忽略大小写
#!/bin/bash
#This is a shell script for input yes to no
read -p "Please enter your choose: " choose
if [ $choose == yes ] || [ $choose == YES ]
then
echo "no"
elif [ $choose == no ] || [ $choose == NO ]
then
echo "yes"
else
echo "You input error,please input yes or no"
fi
⏺ 新建一个用户名列表namefile
⏺ 新建一个脚本,该脚本能够实现根据namefile自动创建用户,且密码随机生成。用户创建后将用户名和密码导入到/root/loginname.txt中。
⏺ 随机密码生成可以使用:openssl rand -base64 6
#!/bin/bash
file='namefile'
for user in $(cat $file)
do
useradd $user
pam=`openssl rand -base64 6`
sleep 5
echo "`(echo $pam | passwd --stdin $user)`"
echo "$user $pam" >> /root/loginname.txt
done
⏺ 写一个脚本:如果指定的用户存在,先说明其已经存在,并显示其ID号和SHELL,并判断是否是超级用户;否则,就创建用户,并显示其ID号
#!/bin/bash
#This shell script is for judge user is or not user
read -p "Please enter your account name: " user
ID=`cat /etc/passwd | grep ^$user | cut -d ':' -f3`
SHELL=`cat /etc/passwd | grep ^$user | cut -d ':' -f7`
resut=`id $user`
res=`echo $?`
if [ $res -eq 0 ]
then
echo "$ID"
echo "$SHELL"
if [ $ID -eq 0 ]
then
echo "The $user is superuser"
else
echo "The $user is normaluser"
fi
else
echo "This $user is not exsit,please create account"
useradd $user
id=`id -u $user`
echo "$id"
fi
⏺ 该脚本应当有交互功能
⏺ 该脚本用于备份系统目录
⏺ 需要给予用户提示,提示用户应当输入目录或者文件名
⏺ 判断用户要备份的文件是否存在,如果不存在则告知用户,并输出相应错误
⏺ 判断用户要备份的目标目录是否存在,如果该目录不存在,则需要问用户是否创建,如果该目录已经存在,则需要问用户是否重命名该目录
#!/bin/bash
#This is a shell for backup the system dir
read -p "Please input your dir : " dir
read -p "please input your backup file: " file
if [ -e $file ]
then
echo "The $file is already exisit,you do not need make again"
else
echo "This $file is not exsit, please back up it first"
tar -czvf targettar.tar.gz $dir
fi
if [ -e $dir ]
then
echo "This $dir is exsit,are you sure to move this $dir"
else
echo "This $dir is not exsit,please make dir first"
fi
⏺ 根据iplist.txt文件中列举的IP地址,判断IP地址是否可达。
⏺ 只显示可达的IP地址。(不可达的可以使用 >> /dev/null)
脚本1:
#!/bin/bash
#This is a shell script for checking the ip is arrive or not
file=$(cat ./iplist.txt)
for i in $file
do
ping -c1 -w1 $i &> /dev/null && echo "$i is up" || echo "$i is down"
done
~
脚本2:
#!/bin/bash
for i in {1..255}
do
ping -c1 -w1 192.168.1.$i &> /dev/null && echo -e "\033[032m 192.168.1.$i is up \033[0m" || echo -e "\033[031m 192.168.1.$i is down \033[0m"
done
两种逻辑:
1、提前将所有IP在一个文件里列出来,然后在脚本里调用
2、默认认为IP是同一段连续IP,使用逐个探测的方式确定IP是否可达
⏺ 将本机的网卡的IP地址和MAC地址截取出来,输出到/root/nic
⏺ 将本机的磁盘使用情况截取出来 输出到 /root/disk
⏺ 判断系统空间使用的情况,如果 / 使用率大于30% 则删除 /tmp 的内容
#!/bin/bash
#This shell script is for monitoring diskUsage&IP&MAC
MAC=`ip addr | awk NR==8 | awk '{print $2}'`
IP=`ifconfig | grep -E "\<([0-9]{1,3}\.){3}([0-9]{1,3})\>" | grep -v 127.0.0.1 | awk '{print $2}'` #无法应对多网卡地址遴选
DiskUsage=`df -h | grep -v Filesystem | awk '{print $1,$5}'` #列出分区,以及分区使用率
RootZoneUsage=`df -h | grep sda | awk '{print $5}'` #列出根分区的使用率
echo "$IP $MAC" > /root/nic #将IP地址与MAC地址写入文件
echo "$DiskUsage" > /root/disk #将分区使用率写入文件
echo "$RootZoneUsage" > ./file #将根分区的使用率写入一个已创建的文件中,使用相对路径
RootUsage=`sed 's/%//g' ./file` # 使用sed将使用率的百分号过滤掉
if [ $RootUsage -gt 30 ] #最头疼的一句,明明就拿使用率比较,结果-lt -gt不能使用百分号比较只能划百分号为整
then
cat /dev/null > /tmp/
else
echo "The Disk Usage is less than 30%, you do not need care "
fi