Вот только у меня в man ничего не сказано про возвращаемые значения... решение найдено через поисковик - ключевое слово "exitcode". И как я только до этого его в запросах ни называл... разве только матом. И сам делаю всё с возвращаемым значением... и в скриптах ориентируюсь на это. Но exitcode и логично, но в голову и не приходило.
Привер Гуру, проверил работает. Спасибо. Маленький вопрос по поводу автозапуска: В каком месте там указать надо путь? Содержимое /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 Спасибо?
Так будет верно? Символ & в конце нужен как писал 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
у меня есть - в предпоследнем абзаце секции "Options". Правда, я смотрю не в малинке, а десктопном Линуксе - у меня Федора на сервере. Еще можно теже буквы - "man ping" - набрать прямо в гугле, там практически все ман-ы есть , только могут быть незначительные отличия версий от того, что стоит в конкретной системе.
...сам я обычно делаю так: Код (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 не будет завершен никогда, пока скрипт работает.
Спасибо! Извините проглядел: Код (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
А bash типа: Код (Text): bash /etc/ping.sh 192.168.11.102 & Указывать не надо(не обязательно) он и так указан в начале скрипта: Код (Text): #!/bin/bash .... .... Только сам скрипт надо сделать запускаемым указав вручную из командной строки Код (Text): chmod +x <путь/скрипт> И он не обязательно bash, но и perl, питон и т.д.
либо скрипт уже исполняемый - это можно посмотреть командой ls -l <имя_скрипта>. либо вы его через интерпретатор запускаете
и это правильно. Вообще не думаю, что этот скрипт надо пихать в /etc - это место для системных конфигов, пользовательскому исполняемому скрипту там делать нечего.
Не совсем согласен, куда его еше поселить? В /home/pi? Его семантика не завязана на конкретного пользователя, так что ему хорошо быть в /etc
бросать в етс что попало свинство! и существование 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++): ./<созданный вроде текстовый файл, но скрипт> & Как Вы считаете... такое реально? И что произойдёт при выполнении ?