1、 总结sed和awk的详细用法;
2、删除/boot/grub/grub.conf文件中所有行的行首的空白字符;
# sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf
3、删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符;
# sed 's@^#[[:space:]]*@@' /etc/fstab
4、把/etc/fstab文件的奇数行另存为/tmp/fstab.3;
# sed '1~2w /tmp/fstab.3' /etc/fstab
5、echo一个文件路径给sed命令,取出其基名;进一步地,取出其路径名;
取基名:echo "/etc/sysconfig/network-scripts/" | sed 's@^.*/\([^/]\+\)/\?$@\1@'
取路径名:echo "/etc/sysconfig/network-scripts/" | sed 's@[^/]\+/\?$@@'
6、统计指定文件中所有行中每个单词出现的次数;
awk '{for(i=1;i<=NF;i++){count[$i]++}}END {for (i in count) {print i,count[i]}}' /etc/fstab
7、统计当前系统上所有tcp连接的各种状态的个数;
netstat -tan | awk '/^tcp\>/{state[$NF]++}END {for (i in state) {print i,state[i] }}'
8、统计指定的web访问日志中各ip的资源访问次数:
awk '{ip[$1]++}END{for(i in ip) {print i,ip[i]}}' /var/log/httpd/access_log
9、写一个脚本:定义一个数组,数组元素为/var/log目录下所有以.log结尾的文件的名字;显示每个文件的行数;
#!/bin/bash
declare -a files
files=(/var/log/*.log)
for i in `seq 0 $[${#files[@]}-1]`;
do wc -l ${files[$i]}
done
10、写一个脚本,能从所有同学中随机挑选一个同学回答问题;进一步地:可接受一个参数,做为要挑选的同学的个数;
#!/bin/bash
function duplicate() { #判断是否重复选择,如果重复在选一次,直到不重复
for ((j=$[${#student[@]}-2];j>=0;j--));do
if [ ${student[$j]} -eq ${student[$i]} ]
then
student[$i]=$(($RANDOM % $a))
duplicate
fi
done
}
read -p "input the total student number,the first student no. is 0:" a
total=($(seq 0 $[$a-1]))
read -p "input how many student pick:" b
if [ $b -gt $a ]
then
echo "pick tpo more student"
elif [ $a -eq $b ]
then
echo "pick every student"
else
for ((i=0;i<$b;i++));do
student[$i]=$(($RANDOM % $a))
duplicate
echo ${student[$i]}
done
fi
11、授权centos用户可以运行fdisk命令完成磁盘管理,以及使用mkfs或mke2fs实现文件系统管理;
visudo
User_Alias DISK_ADMINS = centos
Cmnd_Alias DISK_COMMAND = /sbin/fdisk, /sbin/mkfs, /sbin/mke2fs
DISK_ADMINS ALL=(root) NOPASSWD: DISK_COMMAND
12、授权gentoo用户可以运行逻辑卷管理的相关命令;
visudo
User_Alias LVM_ADMINS = gentoo
Cmnd_Alias LVM_COMMAND = /sbin/pv*, /sbin/vg*, /sbin/lv*
LVM_ADMINS ALL=(root) NOPASSWD: LVM_COMMAND
useradd centos
echo "centos" | passwd --stdin centos
useradd gentoo
echo "gentoo" | passwd --stdin gentoo
[centos@node6 ~]$ sudo -l
用户 centos 可以在该主机上运行以下命令:
(root) NOPASSWD: /sbin/fdisk, /sbin/mkfs, /sbin/mke2fs
[gentoo@node6 ~]$ sudo -l
用户 gentoo 可以在该主机上运行以下命令:
(root) NOPASSWD: /sbin/pv*, /sbin/vg*, /sbin/vl*
13、基于pam_time.so模块,限制用户通过sshd服务远程登录只能在工作时间进行;
[root@localhost ~]# vim /etc/pam.d/sshd
account required pam_time.so
[root@localhost ~]# vim /etc/security/time.conf
*;*;*;MoTuWeThFr0900-1800#表示工作时间9点到下午6点允许访问ssh
14、基于pam_listfile.so模块,定义仅某些用户,或某些组内的用户可登录系统;"
[root@localhost ~]# vim /etc/sshd_userlist
root
centos
gentoo
[root@localhost ~]# chmod 600 /etc/sshd_userlist
[root@localhost ~]# chown root /etc/sshd_userlist
[root@localhost ~]# vim /etc/pam.d/sshd
添加
auth required pam_listfile.so item=user sense=allow file=/etc/sshd_userlist onerr=succeed
原创文章,作者:victorli88,如若转载,请注明出处:http://www.178linux.com/72611


评论列表(1条)
怎么没有总结sed和awk的具体用法啊?