shell练习3

目录

1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。

 2、判断web服务是否运行(1、查看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行),如果没有运行,则启动该服务并配置防火墙规则。

查看进程的方式判断该程序是否运行

通过查看端口的方式判断该程序是否运行

3、使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running;如果不能正常访问,返回12状态码。


1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。

vim df.sh
#!/bin/bash
disk_space=`df -h / |grep / | cut -d " " -f 9 |tr -d G`
echo "Your disk space is "$disk_space"G"
if [ "$disk_space" -lt "20" ]
then
        echo " Warnning !!! You have less disk space than 20GB. Your dis space is "$disk_space"G " | mail -s "Warning " root
else
        exit
fi
vim /etc/crontab
  0  0  *  *  * root /root/test/df.sh

 2、判断web服务是否运行(1、查看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行),如果没有运行,则启动该服务并配置防火墙规则。

查看进程的方式判断该程序是否运行

vim pshttp.sh
#!/bin/bash
ps=`ps -ef | grep httpd | wc -l`
if [ "$ps" -gt 1 ]
then
        echo "Httpd is start"
else
        systemctl start httpd
        firewall-cmd --add-port=80/tcp
fi

通过查看端口的方式判断该程序是否运行

vim porthttp.sh
#!/bin/bash
netstat -anp |grep -w  80 &>/dev/null
if [ "$?" -eq 0 ]
then
        echo "Httpd is start"
else
        systemctl start httpd
        firewall-cmd --add-port=80/tcp
fi

3、使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running;如果不能正常访问,返回12状态码。

#!/bin/bash
curl 192.168.239.200 &>/dev/null
if [ "$?" -eq 0 ]
then
        echo "server is running!!!"
else
        exit 12
fi

 

### 关于 Shell 脚本练习题及学习资源 以下是关于 Shell 脚本的一些经典练习题目以及推荐的学习资源: #### 经典 Shell 脚本练习题 1. **持续运行脚本直到出错** 实现一个能够不断运行指定脚本,直到该脚本返回错误状态为止的 Bash 脚本。此脚本应捕获标准输出和错误流,并将其记录到文件中。最终还需统计脚本失败前总共运行了多少次[^2]。 ```bash #!/bin/bash count=0 log_file="script_output.log" while true; do ./your_script.sh > >(tee -a "$log_file") 2> >(tee -a "$log_file" >&2) if [ $? -ne 0 ]; then echo "Script failed after $count runs." >> "$log_file" break fi ((count++)) done ``` 2. **字符串分割成数组** 使用 `awk` 和其他工具将特定格式的数据解析为数组形式。例如,从系统事实数据中提取 IP 地址并存储至数组中[^3]。 ```bash result=$(facter | awk &#39;/ipaddress/ && !/ipaddress_lo/{print $1, $3}&#39;) array=($result) for ip in "${array[@]}"; do echo "IP Address: $ip" done ``` 3. **位置变量的应用** 创建一个接受多个参数的脚本,利用 `$1`, `$2`, 等位置变量处理传入的参数,并打印这些参数的内容[^4]。 ```bash #!/bin/bash echo "First argument is: $1" echo "Second argument is: $2" echo "All arguments are: $@" ``` 4. **MySQL 数据库操作** 编写一个用于创建数据库、表结构并插入数据的 Shell 脚本。通过管道输入 SQL 命令完成整个流程[^5]。 ```bash #!/bin/bash mysql -u root -p&#39;password&#39; <<EOF CREATE DATABASE IF NOT EXISTS testdb; USE testdb; CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY, name VARCHAR(50)); INSERT INTO users VALUES (1, &#39;Alice&#39;), (2, &#39;Bob&#39;); SELECT * FROM users; EOF ``` #### 推荐 Shell 学习资源 - **书籍**:《Advanced Bash-Scripting Guide》是一份详尽的指南,涵盖了从基础语法到高级技巧的各种主题。 - **在线课程**: Coursera 或 Udemy 提供了许多针对初学者和中级用户的 Shell 编程课程。 - **官方文档**: GNU Bash 官方手册提供了权威性的参考资料,适合深入研究具体功能和技术细节。 - **社区论坛**: Stack Overflow 是解决实际编码问题的好地方;而 Reddit 的 r/bash 版块则经常分享实用的小贴士和经验交流。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值