问题1: 请显示系统中能被su命令切换的用户名称
问题2:练习Apache.sh,此脚本后接入数字,http的端口就改为此数字。(假设selinux为关闭状态)
练习脚本:
问题: 请显示系统中能被su命令切换的用户名称
第一次尝试:
[root@xixi ~]# ls /home
liyanqiu westos
[root@xixi ~]#
此命令的缺点在于:不能出现root用户
第二次尝试(脚本):
vim show_login.sh
#!/bin/bash
grep bash$ /etc/passwd
此方法的缺点:有些用户可能是以sh结尾的,这样就会遗漏
最后尝试(脚本)
vim show_login.sh
#!/bin/bash
grep -E "bash$|csh$|tcsh$|csh$" /etc/passwd | cut -d : -f 1
练习脚本Apache_port.sh
问题:此脚本后接入数字,http的端口就改为此数字。(假设selinux为关闭状态)
以下展示了思考过程
- 用脚本安装apache
&>/dev/null 表示不显示信息
1 #!/bin/bash
2 [-e "/etc/httpd/conf/httpd.conf" ] || {
3 yum install httpd -y &>/dev/null
4 }
- 判断数字是否为空
[ -z "$1"] && {
echo "Error:not port number.Please give port folowing script"
exit
}
- 如果不为空,则还需判断端口是否正在被使用
注意:" "之间要有``,否则就会出错
[root@xixi ~]# [ -z "`netstat -antlupe | grep 1111`" ] && echo yes || echo no
yes 正确的
[root@xixi ~]# [ -z "netstat -antlupe | grep 1111" ] && echo yes || echo no
no 错误的
[root@xixi ~]# [ -z "`netstat -antlupe | grep 21`" ] && echo yes || echo no
no
[root@xixi ~]# [ -z "`netstat -antlupe | grep 6666`" ] && echo yes || echo no
yes
[root@xixi ~]#
此时能判断出端口是否正在被使用
-
一定不要忘记-i插入,如果只使用-c替换的话,原文件不会被修改,只会把替换后文件中的内容显示出来
难点:
修改后,直接变为了 Listen $1
这是因为使用的是单引号,改为双引号就好了
-
验证
注意:
执行优先级
反向单引号表示:里面的内容优先执行
反向单引号与 $ 通用的级别不一样,$在shell里用,``在python里面也能使用