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:                 1378292605@qq.com")
            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结尾的才会有附加信息。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容