一、统计出/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结尾的才会有附加信息。