Определение, онлайн ли хост

Вот другой v4l2 петлевой драйвер, что я смог получить работу с Skype. драйвер v4l2loopback Затем можно использовать Gstreamer для установки для конвейерной обработки.

apt-get install gstreamer-tools 

gst-launch -v v4l2src ! gstreamfiltershere ! v4l2sink device=/dev/video1

5
13.01.2013, 10:06
2 ответа

Простое решение было бы:

ping -W 1 $ip

где -W указывает тайм-аут в секундах.

Удостоверьтесь, что это - капитал W. Можно также использовать -i указать время ожидания в секундах.

5
27.01.2020, 20:34
  • 1
    w работает также. linux.die.net/man/8/ping –  Bonsi Scott 01.04.2014, 17:04
  • 2
    (Спасибо за редактирование, хотя, тем не менее, ответ не был неправильным ;) –  Bonsi Scott 01.04.2014, 17:05
  • 3
    я хочу что-то с более коротким тайм-аутом, чем 1 секунда... десятичные значения для '-W', не работает –  isaaclw 13.04.2015, 19:20

Если ping ответов хоста затем тестирует если на строке (просто пример):

ping -c 10 $host

Если бы ping не возвращены/запрещены, я проверил бы на отдельные сервисы через nmap:

nmap $host -p $known_port --max-retries 10 | grep -q open

Например, чтобы протестировать, если ssh, как ожидают, будет открыт, замените known_port 22

что касается сценария это могло быть (пример - это - утро воскресенья, и я скучаю так, это выросло немного после некоторых редактирований - нацелен на тестирование набора хостов, не всего одного):

declare -A SERVER
# SERVER["NAME - Description"]="IP KNOWNPORT"
SERVER["SERVER1 - Client foo"]="111.111.111.111 22"
SERVER["SERVER2 - Client bar"]="222.222.222.222 80"
# ...
# add as many server/port combinations as you'd like

NMAP_MAX_RETRIES=10

printf "========================= ========================= ========== ==========\n"
printf "%25s %25s %10s %10s\n" "Host Description" "IP" "Port" "Status"
printf "========================= ========================= ========== ==========\n"


for server in "${!SERVER[@]}"; do
    set -- ${SERVER["$server"]}
    eval nmap \$1 -p \$2 --max-retries $NMAP_MAX_RETRIES | grep -q open
    if [ "$?" == "0" ]; then
        STATUS="[OK]"
    else
        STATUS="*DOWN*" 
    fi
    printf "%25s %25s %10s %10s\n" "$server" "$1" "$2" "$STATUS" 
done

 printf "========================= ========================= ========== ==========\n"

При выполнении это возвращается (поддельный дюйм/с, таким образом, серверы снижаются):

 ~$ bash /tmp/foo.sh
 ========================= ========================= ========== ==========
          Host Description                        IP       Port     Status
 ========================= ========================= ========== ==========
      SERVER2 - Client bar           222.222.222.222         80     *DOWN*
      SERVER1 - Client foo           111.111.111.111         22     *DOWN*
 ========================= ========================= ========== ==========
6
27.01.2020, 20:34
  • 1
    Это требует удара 4.0 или выше. –  jordanm 13.01.2013, 19:39
  • 2
    , но только для материала массива. –  hmontoliu 14.01.2013, 13:01

Теги

Похожие вопросы