Linux学习第四周


一、统计出/etc/passwd文件中其默认shel为非/sbin/nologin的用户个数,并将用户都显示出来;

[root@localhost ~]# grep -v '/sbin/nologin' /etc/passwd |awk -F: '{ print $1}' | cat -n
     1  root
     2  sync
     3  shutdown
     4  halt
     5  gaolu
     6  mageia
     7  slackware

二、查出用户UID最大值的用户名、UID及shell类型;

[root@localhost ~]# awk -F: '{print $1,$3,$NF}' /etc/passwd | tail -1
slackware 2002 /bin/bash

三、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序;

[root@localhost ~]# w -h | awk '{print $3}'|sort|uniq -c
      2 192.168.1.102
      1 192.168.1.103
      1 192.168.1.111
      1 192.168.1.112

四、编写脚本createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;湿示添加的用户的id号等信息;

1)编写脚本
[root@localhost ~]# cat creatuser.sh
#!/bin/bash
#定义变量
read -p "请输入一个用户名:" user
#判断用户名是否存在
if [ -z "$user" ] ;then
    echo "输入为空,请重新输入!!"
    exit
fi
if  `id $user &> /dev/null`;then
#若存在,则输出ID等信息
    echo "用户存在,用户的ID信息为:`id $user`"
else
#若不存在,则添加用户,设置密码为随机8位,下次登录时提示修改密码,同时显示ID等信息
    passwd=`cat /dev/urandom |tr -cd [:alpha:] |head -c8`
    `useradd $user &> /dev/null`
    `echo "$passwd" | passwd --stdin $name &> /dev/null`
    echo "用户名:$user 密码: $passwd" >> /root/user.txt
    echo "用户和密码详情查看/root/user.txt文件"
    `chage -d 0 $user`
    echo "用户已添加,用户的ID信息为:`id $user` 密码为:$passwd"
fi

2)脚本添加执行权限
[root@localhost ~]# chmod +x creatuser.sh

#测试一个存在的用户
[root@localhost ~]# chmod +x creatuser.sh
[root@localhost ~]# ./creatuser.sh
请输入一个用户名:root
用户存在,用户的ID信息为:uid=0(root) gid=0(root) 组=0(root)

3)测试存在的用户
[root@localhost ~]# ./creatuser.sh
请输入一个用户名:root
用户存在,用户的ID信息为:uid=0(root) gid=0(root) 组=0(root)

4)测试不存在的用户
[root@localhost ~]# ./creatuser.sh
请输入一个用户名:lifeisshit
用户和密码详情查看/root/user.txt文件
用户已添加,用户的ID信息为:uid=2003(lifeisshit) gid=2003(lifeisshit) 组=2003(lifeisshit) 密码为:WSRfhAhf
[root@localhost ~]# cat /root/user.txt
用户名:test 密码: Nrmvqkyt
用户名:lifeisshit 密码: WSRfhAhf

5)测试不输入

[root@localhost ~]# ./creatuser.sh
请输入一个用户名:
输入为空,请重新输入!!

五、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等;

1)修改vim环境变量
[root@localhost ~]# cat ~/.vimrc
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
    if expand("%:e")=='sh'
            call setline(1,"#!/bin/bash")
            call setline(2,"##########################################################")
            call setline(3,"#author:                gaolu")
            call setline(4,"#QQ:                    1378292605")
            call setline(5,"#email:                 [email protected]")
            call setline(6,"#version:               1.0")
            call setline(7,"#date:                  ".strftime("%c"))
            call setline(8,"#description:           Safe operation, invincible!")
            call setline(9,"##########################################################")
    endif
endfunc

2)测试
[root@localhost ~]# vim test.sh
[root@localhost ~]# vim test.txt

经测试只有配置的变量中.sh结尾的才会有附加信息。


你可能感兴趣的:(Linux学习第四周)