一、ping通网络
1.编写脚本
脚本解释
#! /bin/bash
这是一个 shebang,它告诉系统用哪个解释器来执行这个脚本。这里使用的是 Bash,一种常用的 shell
for i in { 1..254 }; do
这是一个 for 循环,它将从 1 迭代到 254,每次循环都会将当前迭代到的数字赋值给变量 i
Host=“10.0.0.$i”
这行代码将当前迭代的数字 i 插入到字符串 "10.0.0." 后面,形成一个完整的 IP 地址,并赋值给变量 Host
ping -c 1 -W 1 $Host > /dev/null 2>&1
这行代码使用 ping 命令来测试 Host 是否可达
-c 1:表示只发送一个 ping 请求
-W 1:设置等待每个响应的超时时间为 1 秒
$Host:表示要 ping 的 IP 地址
> /dev/null 2>&1:这部分是将 ping 命令的标准输出(stdout)和标准错误(stderr)都重定向到 /dev/null,也就是忽略所有的输出和错误信息
>/dev/null
:这部分将命令的标准输出(stdout)重定向到 /dev/null
。/dev/null
是一个特殊的文件,它会丢弃所有写入它的数据(就像一个黑洞),读取它会立即返回文件结束(EOF)。因此,将输出重定向到 /dev/null
实际上就是丢弃这些输出。
2>&1
:这部分是将标准错误(stderr,文件描述符为 2)重定向到标准输出(stdout,文件描述符为 1)当前所指向的位置。由于之前我们已经将 stdout 重定向到 /dev/null
,所以这里的 2>&1
就相当于把 stderr 也重定向到 /dev/null
if [ $? -eq 0 ]; then
这行代码检查上一个命令(即 ping 命令)的退出状态。如果 ping 命令成功执行(即 IP 地址可达),那么它的退出状态码($?)会是 0
echo “Host $Host is up”
如果 IP 地址可达(即 ping 命令的退出状态码是 0),那么这行代码会被执行,打印出 IP 地址可达的信息
2.加执行权限
3.执行脚本
如图,我是可以ping通10.0.0.1和10.0.0.2的,后面还有一个我的ip地址也是显示up的,也是可以ping通的
二、根据当前日期是星期几来决定执行哪种备份
1.编写脚本
解释脚本
$(date +%a) 来获取当前星期几的缩写
case语句用于基于变量$NOW的值执行不同的操作。这里,$NOW包含了当前日期的星期几缩写
Mon): 如果$NOW的值是Mon(即星期一),则执行该分支下的命令,即输出Full backup
Wed | Thu | Fri): 如果$NOW的值是Tue、Wed、Thu或Fri中的任何一个(即星期二到星期五),则执行该分支下的命令,即输出Partial backup
Sat | Sun): 如果$NOW的值是Sat或Sun(即星期六或星期日),则执行该分支下的命令,即输出No backup
*) : 这是case语句的默认分支,如果$NOW的值不匹配任何前面定义的分支,那么输出Unknown day:$NOW
;;用于终止每个分支
esac是case语句的结束标记
2.加执行权限
3.运行脚本
如上图,即成功!