如何检查计算机是否在本地网络上(本地脚本)

时间:2020-04-30 16:32:54

标签: linux shell sh

我正在尝试编写一个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"

有人可以帮忙吗?我也愿意接受其他想法....

1 个答案:

答案 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"