Помогите оптимизировать bash файл

Тема в разделе "Raspberry Pi", создана пользователем user999, 3 мар 2017.

  1. Igor68

    Igor68 Гуру

    я имею ввиду сдедующее:
    Код (Bash):

    igor@Moxa:/home$ ls -al
    drwxrwxrwx    7 root     root         4096 Apr 20  2016 .
    drwxr-xr-x   15 root     root            0 Jan  1  1970 ..
    drwxr-xr-x    2 root     root         4096 Oct  8  2014 .__lib
    drwxr-sr-x    5 fanuc1   fanuc1       4096 Oct 16  2015 fanuc1
    drwxrwsrwx   30 www-data www-data     4096 Feb  8 16:00 httpd
    drwxrwxr-x   22 igor     igor         4096 Apr  7  2016 igor
    drwxr-sr-x    3 mpi      mpi          4096 Aug 12  2015 mpi
    Видите я зашел как gor@Moxa (В данном случае Moxa а не малина - но что там, что там линукс)
    видите:
    drwxrwsrwx 30 www-data www-data 4096 Feb 8 16:00 httpd
    в моём случае папкой httpd владеет пользователь www-data тоесть apache и соответственно WEB страницы из браузера. Мне - пользователю igor там ничего нельзя делать (если только нет разрешения для всех). И apache ничего не сможет сделать в моей папке.
    Вы должны войти в систему от имени APACHE (я говорил уже несколько постов назад - в моём случае пользователь www-data). И если от его имени заработает в консоли... фактически заработает порт, то будет работать и из PHP. Если нет, то придётся пользователю www-data(apache) давать разрешение на работу с портом ввода-вывода.. ну или включать его в группу того, чей этот порт. Отсутствие разрешения будет сопровождаться сообщением в той же консоли!
     
    Последнее редактирование: 5 мар 2017
  2. user999

    user999 Гик

  3. mcureenab

    mcureenab Гуру

    Код (Bash):
    #!/bin/bash
    ...
     
    Igor68 нравится это.
  4. user999

    user999 Гик

    apache запущен от имени www-data
    сделал так:
    Код (Bash):
    sudo -u www-data `cat /sys/class/gpio/gpio14/value`
    Результат Permission denied
     
  5. Igor68

    Igor68 Гуру

    То есть этому пользователю нельзя! Воспользуйтесь ну к примеру usermod для включения разрешения(включение в группу) пользователя www-data. Тогда ему будет можно!
    Ну или через sudo для пользователя, которому можно. Правда, как и существования самого sudo это не правильно с точки зрения linux и unix.
     
    Последнее редактирование: 5 мар 2017
  6. user999

    user999 Гик

    добавил в /etc/sudoers
    Код (C++):
    www-data ALL=(ALL) NOPASSWD:ALL
    не помогло
     
  7. user999

    user999 Гик

    в sudoers можно не добавлять. Помогло добавление www-data в группу gpio
    Код (Bash):
    sudo usermod -aG gpio www-data
    Из консоли доступ есть, а вот из php файла все еще нет(((

    Другие команды выполняет из файла. Пользователь www-data точно в группе gpio, права на директории и фалы /sys/class/gpio/gpio14/value разрешены пользователям группы gpio.

    Не пускает в директорию gpio из браузера
     
    Последнее редактирование: 6 мар 2017
  8. user999

    user999 Гик

    утром заработала конструкция
    PHP:
        $cmd = 'echo 1 > /sys/class/gpio/gpio14/value';
        $res = shell_exec($cmd);
        echo "<pre>";
        echo ($res);
        echo "</pre>";
    Причем малинку не перезагружал
     
  9. user999

    user999 Гик

    Теперь обнаружил, что подача сигнала с малинки на reset пин ардуинки никакого эффекта не производит. Только замыкание на землю производит перезагрузку.
    Прошу совета как лучше сделать? Пришел в голову пока 1 вариант: землю пустить на пин reset через транзистор КТ315. Ну и на него уже подавать питание с малинки. Может есть проще варианты?
     
  10. Igor68

    Igor68 Гуру

    В текущем соединении изменений не будет. Только после переподключения(пользователя - сам apache тоже пользователь)... ну или перезапуска apache.
     
    Последнее редактирование: 6 мар 2017
  11. Igor68

    Igor68 Гуру

    Самое простое решение... на базу (как Вы говорили кт315) ограничительный (330 ом) резистор. эмиттер на корпус(общий), коллектор на reset... как вы и говорили.
     
  12. mcureenab

    mcureenab Гуру

    Значит на Reset надо 0 подавать, а в остальное время пин держать в режиме INPUT.
     
  13. user999

    user999 Гик

    Так конечно я после каждого изменения не только ресет апаче, а ресет малинки делал. Но почему то не работало. Как говорится: утро вечера мудренее
     
  14. user999

    user999 Гик

    Зачем в инпут? я просто проводком землю на этот пин подал с той же платы и она перезагрузилась.
     
  15. mcureenab

    mcureenab Гуру

    А к зачем ток зря терять? Пин Reset на плате притянут к Vcc 5Вольт резистором 10кОм.
    Чтобы сделать сброс нужно на управляющий сбросом пин малинки отправить 0. А остальное время держать его в высокоимпедансном состоянии (Input) чтобы ток не шел зазря.
     
  16. mcureenab

    mcureenab Гуру

     
  17. Igor68

    Igor68 Гуру

    Если в режим сменяется input, то оптимальнее применить кт361(p-n-p), а эмиттер на RESET... коллектор же на корпус. Но эмитер ещё на базу килоом эдак на 6,8. база же через 0.91... 2.7 кОм на вывод малины. Сигнал активный будет низкого уровня... нейтральное состояние (без активности) это Z-состояние... ну или вход. Для морального успокоения ещё диод с этого вывода малины на её 3.3в питания - анод на выход, а катод на 3.3в(как говорят в обратном направлении - если уровень выше питания малины).
     
  18. Igor68

    Igor68 Гуру

    Хотя про диод - это не очень... напряжение 3.3в питания малины может быть меньше питания ардуино... тогда RESET для Ардуины нет надёжности... ну или всегда активен.
     
  19. mcureenab

    mcureenab Гуру

    Это все нафиг не надо. Для сброса Reset нужно на ~ 1 мкс притянуть к 0 (GND) (инями словами подать LOW или 0) и по переходу 0 -> Vcc (подачей HIGH, 1 или переводом в INPUT) МК начнет процедуру сброса.
     
  20. mcureenab

    mcureenab Гуру

    А вот это нужно разобрать. У Малинки наверное защита от напряжения выше 3.3 В есть. Вот её надо обойти.

    Reset притянут к 5Вольт через резистор 10кОм.

    http://we.easyelectronics.ru/Shematech/soglasovanie-logicheskih-urovney-5v-i-33v-ustroystv.html
     
    Последнее редактирование: 6 мар 2017