Как проверить, находится ли компьютер в локальной сети (bourne scripting) - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь написать скрипт bourne, который будет использовать команду ruptime, чтобы проверить, находится ли определенный компьютер в локальной сети. Вот мой код на данный момент:

if [ $# = 0 ]
then
    echo "Usage: $0 machine-name"
    exit 1
fi

ruptime | cut -f1 -d " " | more

Это делает то, что я хочу в том смысле, что команда ruptime будет запускаться и резать, будет анализировать только имена компьютеров, которые находятся в моей локальной сети, оставляя позади остальную часть информация, обычно выводимая ruptime. Мне нужно написать оператор управления потоком (или, может быть, al oop будет более элегантным?), Который будет перебирать список хостов, предоставленный 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 голосов
/ 01 мая 2020

В принципе, есть множество способов достичь вашей цели, и есть несколько десятков способов сделать это простым и эффективным способом. Один из которых использует grep, как это предлагает @David C. Ранкин в первом комментарии. Однако я хочу показать, как это можно сделать, используя al oop, как вы предложили.

#!/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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...