PING из Raspberry с коммандой?

Тема в разделе "Raspberry Pi", создана пользователем Vitalij, 27 июн 2018.

  1. Igor68

    Igor68 Гуру

    Вот только у меня в man ничего не сказано про возвращаемые значения... решение найдено через поисковик - ключевое слово "exitcode". И как я только до этого его в запросах ни называл... разве только матом. И сам делаю всё с возвращаемым значением... и в скриптах ориентируюсь на это. Но exitcode и логично, но в голову и не приходило.
     
  2. Vitalij

    Vitalij Нерд

    Привер Гуру, проверил работает. Спасибо.
    Маленький вопрос по поводу автозапуска:
    В каком месте там указать надо путь?

    Содержимое /etc/rc.local :
    Код (Text):
      GNU nano 2.7.4                                File: /etc/rc.local                                        

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi

    exit 0
     
    Куда вставить мой путь к скрипту:
    bash /etc/ping.sh 192.168.11.102

    Спасибо?
     
  3. Mitrandir

    Mitrandir Гуру

    Перед строкой exit 0
     
  4. Vitalij

    Vitalij Нерд

    Так будет верно? Символ & в конце нужен как писал Igor68?

    Код (Text):
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi

    bash /etc/ping.sh 192.168.11.102 &

    exit 0
     
  5. Mitrandir

    Mitrandir Гуру

  6. b707

    b707 Гуру

    у меня есть - в предпоследнем абзаце секции "Options". Правда, я смотрю не в малинке, а десктопном Линуксе - у меня Федора на сервере.
    Еще можно теже буквы - "man ping" - набрать прямо в гугле, там практически все ман-ы есть , только могут быть незначительные отличия версий от того, что стоит в конкретной системе.
     
    Igor68 нравится это.
  7. Igor68

    Igor68 Гуру

    ...сам я обычно делаю так:
    Код (Bash):
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi

    ###########
    # запуск от root#
    ###########
    <путь к моему скрипту или программе> &
    #пример
    /home/httpd/start/start.sh &

    #######################
    #запуск от пользователя www-data#
    #######################
    su www-data -c /home/httpd/bash/wwstart &

    exit 0
    Почему от пользователя? ...бывает надо перезапустить скрипт/программу прямо с WEB страницы. А WEB сервер Apache у меня - пользователь www-data.
    Ну нельзя же ему давать доступ с root правами... и sudo у меня "выведен из строя" намеренно.
    А зачем "&" ? После того запуска скрипт выполняется не в этом "потоке" а в своём. Автономно "параллельно этому. А если по другому без "&" то войдёт в цикл самого скрипта, а /etc/rc.local не будет завершен никогда, пока скрипт работает.
     
    Последнее редактирование: 3 июл 2018
  8. Igor68

    Igor68 Гуру

    Спасибо! Извините проглядел:
    Код (Text):
    If ping does not receive any reply packets at all it will exit with code 1. If a packet count and deadline are both specified, and fewer than count packets are received by the time
           the deadline has arrived, it will also exit with code 1.  On other error it exits with code 2. Otherwise it exits with code 0. This makes it possible to use the exit code to see if
           a host is alive or not
     
  9. Igor68

    Igor68 Гуру

    А bash типа:
    Код (Text):
    bash /etc/ping.sh 192.168.11.102 &
    Указывать не надо(не обязательно) он и так указан в начале скрипта:
    Код (Text):
    #!/bin/bash
    ....
    ....
     
    Только сам скрипт надо сделать запускаемым указав вручную из командной строки
    Код (Text):
    chmod +x <путь/скрипт>
    И он не обязательно bash, но и perl, питон и т.д.
     
  10. Vitalij

    Vitalij Нерд

    Уточните пожалуйсто:
     
  11. Vitalij

    Vitalij Нерд

    У меня и так работает, или может что-то пойти не так?
     
  12. b707

    b707 Гуру

    либо скрипт уже исполняемый - это можно посмотреть командой ls -l <имя_скрипта>. либо вы его через интерпретатор запускаете
     
  13. Mitrandir

    Mitrandir Гуру

    Написать chmod +x <путь к скрипту>
     
  14. Vitalij

    Vitalij Нерд

    Ответ такой:
    Код (Text):
    -rw-r--r-- 1 root root 1298 Jul 3 12:05 /etc/ping.sh
     
  15. Vitalij

    Vitalij Нерд

    Ответ такой:
    Код (Text):
    chmod: changing permisions of '/etc/ping.sh': Operation no permitted
     
  16. Mitrandir

    Mitrandir Гуру

    Sudo chmod.
    У обычного пользователя нет прав в etc писать
     
  17. b707

    b707 Гуру

    и это правильно.
    Вообще не думаю, что этот скрипт надо пихать в /etc - это место для системных конфигов, пользовательскому исполняемому скрипту там делать нечего.
     
  18. Mitrandir

    Mitrandir Гуру

    Не совсем согласен, куда его еше поселить? В /home/pi? Его семантика не завязана на конкретного пользователя, так что ему хорошо быть в /etc
     
  19. Igor68

    Igor68 Гуру

    бросать в етс что попало свинство! и существование sudo вообще странно. Зачем тогда root права, когда можно делать всё через sudo вплоть до удаления и изменения системных файлов и параметров. Вам что вмнды мало, где всякая программа или скрипт гадят где хотят и как хотят. Вирусы называются... не слыхали? А если я сделаю скрипт типа:
    Код (Bash):
    #!/bin/bash

    sudo rmdir /usr/local
    sudo rm /etc/rc.local
    sudo rm /network/interfaces
    ...
    ...
    Вы рискнёте такое запускать?
    А если у вас установлен node.js и с WEB страницы приползёт скрипт, который сформирует вышеупомянутый скрипт и выполнит системный вызов типа
    Код (C++):
    chmod +x <созданный вроде текстовый файл, но скрипт>
    и потом:
    Код (C++):
    ./<созданный вроде текстовый файл, но скрипт> &
    Как Вы считаете... такое реально? И что произойдёт при выполнении ?
     
  20. Mitrandir

    Mitrandir Гуру

    Голову никто не запрещал