Lesson40 脚本应用示例(显示当前主机ip;显示当前主机中能够登陆系统的用户;显示当前主机的主机名,ip,能够登陆系统的用户;执行命令后可以清空日志)
文章目录
1. 编写ip_show.sh,显示当前主机ip
vim ip_show.sh
#编辑这个文件,写入以下内容
ifconfig eth0 | #查看eth0的网络配置信息
grep '\<inet\>' | #过滤以inet为关键字的行
cut -d " " -f 10 # 以空格为分隔符截取第10列
sh ip_show.sh
#以sh方式运行这个脚本
可以看到,eth0的ip为172.25.254.114
使用ifconfig命令可以看到,eth0网卡的ip为172.25.254.114
但是,可以看到,如果我的主机上有两块网卡,正如下图所示我的主机一样,eth1网卡同样有ip, 但是刚才的脚本只允许输出eth0网卡的ip, 因此是不完善的,对其进行改进
对ip_show文件进行修改
ifconfig | awk '/inet/>/&&!/127.0.0.1/{print $2}’
#显示以inet为关键字的第二列,并且不是127.0.0.1
执行脚本文件,可以看到,显示出eth0和eth1的ip
2. 编写user_show.sh,显示当前主机中能够登陆系统的用户
vim user_show.sh
#编辑这个文件,写入以下内容
grep -E "sh$" /etc/passwd | cut -d : -f 1
#从/etc/passwd文件中过滤出以sh结尾的,以冒号为分隔符,截取第一列
执行这个脚本,可以看到,当前主机中能够登陆系统的用户有root和student
3. 编写host_message_show.sh,显示当前主机的主机名,ip,能够登陆系统的用户
vim hostname_message_show.sh
#编辑这个文件,写入以下内容
输出"hostname:',执行hostname, 输出主机名称
输出"host ipaddress:"
以ifconfig的输出作为输入,打印显示以inet为关键字的第二列,并且不是127.0.0.1
输出"Login user list:"
以冒号作为分隔符,打印/etc/passwd文件以sh结尾的第一列,并且给前边添加一些空格,为了视觉上的美观
运行这个脚本文件,可以看到,主机名称,主机ip, 能够登陆系统的用户
4. 编写clear_log.sh,执行命令后可以清空日志
如果当前不是系统用户,日志不在/var/log中
vim clear_log.sh
#编辑清空日志文件
当USER为root
清空日志
给输出的字符加颜色,\033[32m 设置前景色为绿色,\033[31m 设置前景色为红色
[0m为关闭属性;
在root用户的环境中,执行脚本,可以看到,成功清空日志并用绿色的字显示
切换到student用户的环境下,运行脚本,可以看到,出现红色的警告提示,这个日志文件只能由root用户清空
logout 退出当前用户环境