Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Как переписать скрипт

    Scheduled Pinned Locked Moved Russian
    3 Posts 2 Posters 845 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      chieftech
      last edited by

      Здравствуйте уважаемые форумчане.
      Помогите спортировать скрипт. Сразу прошу не гнобить ибо я не программист.

      Есть простой код который отлично отрабатывает в ubuntu на bash

      #!/bin/bash
      str1=`ping -q -c 5 10.1.1.254`
      str2="0%"
      if [[ $str1 != *$str2*  ]]
      then
              echo "loss"
      else
              echo "norm"
      fi
      

      Который не отрабатывается в sh

      #!/bin/bash на #!/bin/sh я менял, и не только.

      Пробовал самыми разными вариантами вплоть до строк
      ping -c 5 10.1.1.254 &> /dev/null && echo "norm" || echo "loss"
      но дело в самом синтаксисе сравнения

      Почему-то возвращается всегда одинаковое значение.
      Пингается хост или нет, всё равно sh говорит что переменные не совпадают.

      Подскажите как написать правильно. Запускается скрипт из cron'a

      1 Reply Last reply Reply Quote 0
      • H
        httpxss
        last edited by

        ping -c 5 10.1.1.254 &> /dev/null && echo "norm" || echo "loss"

        ping -c 5 10.1.1.254 > /dev/null && echo "norm" || echo "loss"

        без амперсанда попробуйте. #!/bin/sh будет работать

        1 Reply Last reply Reply Quote 0
        • C
          chieftech
          last edited by

          @httpxss:

          ping -c 5 10.1.1.254 &> /dev/null && echo "norm" || echo "loss"

          ping -c 5 10.1.1.254 > /dev/null && echo "norm" || echo "loss"

          без амперсанда попробуйте. #!/bin/sh будет работать

          Будете смеятся и удивляться но так тоже не работает)) Все время возвращает "norm", даже если вместо хоста какую-нибудь белеберду написать)

          Но проблемы решил таким синтаксисом:

          #!/bin/sh
          if ping -q -c 4 10.8.0.1 | grep ', 0.0%' >/dev/null; then
          код
          else
          код
          fi
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.