我正在尝试编写一个bourne脚本,该脚本将使用ruptime命令来检查本地网络上是否有一台计算机。到目前为止,这是我的代码:
if [ $# = 0 ]
then
echo "Usage: $0 machine-name"
exit 1
fi
ruptime | cut -f1 -d " " | more
这是我想要的,因为ruptime命令将运行并剪切将仅解析我本地网络上的计算机名称,而剩下ruptime通常输出的其余信息。我需要写一个流控制语句(或者循环会更优雅?),它将循环浏览ruptime / cut提供的主机列表,并确定作为命令行参数提供给脚本的主机名是否打开本地网络。这是一些鸡抓的伪代码,以帮助说明我想到的算法:
# if host is listed on local network (check ruptime list)
# then return true
# echo "host is on local network"
# else return false
# echo "host is not on local network"
有人可以帮忙吗?我也愿意接受其他想法....
答案 0 :(得分:0)
基本上,有很多方法可以实现您的目标,并且有几十种方法可以简单有效地实现目标。 @David C. Rankin在第一条评论中建议使用其中的一种。但是,我想展示如何按照您的建议使用循环来完成。
#!/bin/bash
hosts_list=$(ruptime | cut -f1 -d" ")
for host in ${hosts_list[@]}
do
if [ "$host" = "$1" ]
then
echo "Host $1 is up"
exit 0
fi
done
echo "Host $1 is down"