The OpenNET Project
 
Поиск (теги):    НОВОСТИ (+) КОНТЕНТ WIKI MAN'ы ФОРУМ

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Вызвать программу в PHP"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Вызвать программу в PHP"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 07:37  (MSK)
Доброе время.
Столкнулся с такой штукой.
Пользователь в форме вводит имя и пароль.
Введеный данные проверяю прогой auth_smb из комплекта inn. Она сверяет данные с базой Самбы.
Ей, Auth-smb, на вход надо подавать строки:
ClientAuthname: <name>
ClientPassword: <pass>
Прога выдаст ответ о пользователе.
Мысль следующая.
В PHP есть функция system. Передать ей парамтером консутрукцию, нечто вроде "echo -e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain"
Не работает эта конструкция. Решил проверить ее в обыкновенном shell-скрипте. Не работает. Auth_smb заявляет, что ее вызывает не nnrpd (он собственно с ней и работает в inn). Если запускать конструкцию
car aut.txt | auth_smb server domain
Все прекрасно работает.
Но сохранять пароль в файл, пусть даже и на короткий срок не очень красиво. Даже просто не красиво и не безопасно.
Как все-таки передать auth_smb данные?
Можно в скрипте, в PHP уж сам...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Вызвать программу в PHP"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 03-Ноя-04, 07:46  (MSK)
>Доброе время.
>Столкнулся с такой штукой.
>Пользователь в форме вводит имя и пароль.
>Введеный данные проверяю прогой auth_smb из комплекта inn. Она сверяет данные с
>базой Самбы.
>Ей, Auth-smb, на вход надо подавать строки:
>ClientAuthname: <name>
>ClientPassword: <pass>
>Прога выдаст ответ о пользователе.
>Мысль следующая.
>В PHP есть функция system. Передать ей парамтером консутрукцию, нечто вроде "echo
>-e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain"
Для начала не ехом туда, а прямо параметром текстовым.
system ("e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
НО!
при этом у апач должны быть соответствующие права чтоб дергть.
оьбычно приходится прикручивать sudo
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Вызвать программу в PHP"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 07:56  (MSK)
>>Доброе время.
>>Столкнулся с такой штукой.
>>Пользователь в форме вводит имя и пароль.
>>Введеный данные проверяю прогой auth_smb из комплекта inn. Она сверяет данные с
>>базой Самбы.
>>Ей, Auth-smb, на вход надо подавать строки:
>>ClientAuthname: <name>
>>ClientPassword: <pass>
>>Прога выдаст ответ о пользователе.
>>Мысль следующая.
>>В PHP есть функция system. Передать ей парамтером консутрукцию, нечто вроде "echo
>>-e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain"
>Для начала не ехом туда, а прямо параметром текстовым.
>system ("e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
>НО!
>при этом у апач должны быть соответствующие права чтоб дергть.
>оьбычно приходится прикручивать sudo
Прямо - это как?
Как я понимаю работу system - выполнение команды shell'а. А что за команда e?
То что написано не работает. Права у апача на auth_smb есть.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Вызвать программу в PHP"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 03-Ноя-04, 08:04  (MSK)
>>>Доброе время.
>>>Столкнулся с такой штукой.
>>>Пользователь в форме вводит имя и пароль.
>>>Введеный данные проверяю прогой auth_smb из комплекта inn. Она сверяет данные с
>>>базой Самбы.
>>>Ей, Auth-smb, на вход надо подавать строки:
>>>ClientAuthname: <name>
>>>ClientPassword: <pass>
>>>Прога выдаст ответ о пользователе.
>>>Мысль следующая.
>>>В PHP есть функция system. Передать ей парамтером консутрукцию, нечто вроде "echo
>>>-e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain"
>>Для начала не ехом туда, а прямо параметром текстовым.
>>system ("e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
>>НО!
>>при этом у апач должны быть соответствующие права чтоб дергть.
>>оьбычно приходится прикручивать sudo
>Прямо - это как?
>Как я понимаю работу system - выполнение команды shell'а. А что за
Точно так, только не всегда оно работает из под апача.
точнее и недолжно работать при нормальном подходе к безопасности
>команда e?
>То что написано не работает. Права у апача на auth_smb есть.
что тогда имелоcь в виду под  echo "-e lientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain"?
я не знаю :)


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Вызвать программу в PHP"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 08:16  (MSK)
>>>>Доброе время.
>>>>Столкнулся с такой штукой.
>>>>Пользователь в форме вводит имя и пароль.
>>>>Введеный данные проверяю прогой auth_smb из комплекта inn. Она сверяет данные с
>>>>базой Самбы.
>>>>Ей, Auth-smb, на вход надо подавать строки:
>>>>ClientAuthname: <name>
>>>>ClientPassword: <pass>
>>>>Прога выдаст ответ о пользователе.
>>>>Мысль следующая.
>>>>В PHP есть функция system. Передать ей парамтером консутрукцию, нечто вроде "echo
>>>>-e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain"
>>>Для начала не ехом туда, а прямо параметром текстовым.
>>>system ("e ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
>>>НО!
>>>при этом у апач должны быть соответствующие права чтоб дергть.
>>>оьбычно приходится прикручивать sudo
>>Прямо - это как?
>>Как я понимаю работу system - выполнение команды shell'а. А что за
>Точно так, только не всегда оно работает из под апача.
>точнее и недолжно работать при нормальном подходе к безопасности
>>команда e?
>>То что написано не работает. Права у апача на auth_smb есть.
>что тогда имелоcь в виду под  echo "-e lientAuthname:$Name\nClientPassword:$Pass\n | auth_smb
>server domain"?
>я не знаю :)
Это я вчера спрашивал, как в echo символ перевода строки вставить :)))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Вызвать программу в PHP"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 08:24  (MSK)
Ну вот.
Вариант system ("ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
Похоже auth_smb не получает вывод.
Попробовал вариант
system ("auth_smb server domain < ClientAuthname:$Name\nClientPassword:$Pass\n")
Похоже auth_smb не получает символ новой строки :(
Как вставить символ новой строки при такой передаче?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Вызвать программу в PHP"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 03-Ноя-04, 08:27  (MSK)
>Ну вот.
>Вариант system ("ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
>Похоже auth_smb не получает вывод.
>Попробовал вариант
>system ("auth_smb server domain < ClientAuthname:$Name\nClientPassword:$Pass\n")
>Похоже auth_smb не получает символ новой строки :(
>Как вставить символ новой строки при такой передаче?
Ты пробовал это из апача дернуть?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Вызвать программу в PHP"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 08:34  (MSK)
Что из апача дернуть?
Посмотрел errlog апача.
В варианте system ("ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
пишет
ClientAuthname:als: not found
Значит он файл пытается найти. Вот как ему сказать, что это не файл, а текст?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Вызвать программу в PHP"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 03-Ноя-04, 08:51  (MSK)
>Что из апача дернуть?
>Посмотрел errlog апача.
>В варианте system ("ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
>пишет
>ClientAuthname:als: not found
>Значит он файл пытается найти. Вот как ему сказать, что это не
>файл, а текст?
1) скрипт php можно выполнить из шела
/usr/local/bin/php < /path/to/you/script/script.php
2) можно "дернуть" апачем
http://your-your.ru/script.php

При этом, как я уже говорил выше, команда system не всегда работает. Потому как во втором варианте system дергает пользотватель, назначенный апачу.
у тебя вторй вариант, если ты логи смотришь. посему вопрос - какие у твоего апача права?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Вызвать программу в PHP"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 08:55  (MSK)
>>Что из апача дернуть?
>>Посмотрел errlog апача.
>>В варианте system ("ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
>>пишет
>>ClientAuthname:als: not found
>>Значит он файл пытается найти. Вот как ему сказать, что это не
>>файл, а текст?
>1) скрипт php можно выполнить из шела
>/usr/local/bin/php < /path/to/you/script/script.php
>2) можно "дернуть" апачем
>http://your-your.ru/script.php
>
>При этом, как я уже говорил выше, команда system не всегда работает.
>Потому как во втором варианте system дергает пользотватель, назначенный апачу.
>у тебя вторй вариант, если ты логи смотришь. посему вопрос - какие
>у твоего апача права?
На auth_smb стоит 755. Какие еще права могут быть задействованы? Судя по ответу апача в errlog
auth_smb: libauth: requested authenticator data not sent by nnrpd
auth_smb: no user information provided by nnrpd
auth_smb запускается. Значит права на запуск есть.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Вызвать программу в PHP"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 03-Ноя-04, 09:00  (MSK)
>>>Что из апача дернуть?
>>>Посмотрел errlog апача.
>>>В варианте system ("ClientAuthname:$Name\nClientPassword:$Pass\n | auth_smb server domain")
>>>пишет
>>>ClientAuthname:als: not found
>>>Значит он файл пытается найти. Вот как ему сказать, что это не
>>>файл, а текст?
>>1) скрипт php можно выполнить из шела
>>/usr/local/bin/php < /path/to/you/script/script.php
>>2) можно "дернуть" апачем
>>http://your-your.ru/script.php
>>
>>При этом, как я уже говорил выше, команда system не всегда работает.
>>Потому как во втором варианте system дергает пользотватель, назначенный апачу.
>>у тебя вторй вариант, если ты логи смотришь. посему вопрос - какие
>>у твоего апача права?
>На auth_smb стоит 755. Какие еще права могут быть задействованы? Судя по
>ответу апача в errlog
>auth_smb: libauth: requested authenticator data not sent by nnrpd
>auth_smb: no user information provided by nnrpd
>auth_smb запускается. Значит права на запуск есть.


А из шела такая строка прокатывает?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Вызвать программу в PHP"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 09:07  (MSK)
Нет :( Файл ищет.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Вызвать программу в PHP"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 03-Ноя-04, 09:10  (MSK)
>Нет :( Файл ищет.


Дак а что ьы тогда от пхп то хочешь? то есть суть такая тебе надо подсунутб ту строку, при которой исполнение будет нормальным.
Если у тебя в шеле также что что ищет, смотри где что там не так

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "'Я убью тебя, лодочник!' (С) Проф. Лебединский"
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 03-Ноя-04, 09:23  (MSK)
Всё, разобрался.
Короче конструкция такая.
$Name=$HTTP_POST_VARS['NameField'];
$Pass=$HTTP_POST_VARS['PassField'];
$ClientName="ClientAuthname:";
$ClientPass="ClientPassword:";
$Kav="\"";
$Ns="\n";
$last_line=system("echo -e $Kav$ClientName $Name$Ns$ClientPass $Pass$Ns.$Ns$Kav | /usr/local/news/bin/auth/passwd/auth_smb server domain? $retrval);

Как видно, я все спрятал в переменные. Собственно, можно было и без них, ну уж ладно.
А проблема была в том, что auth_smb требует после служебных слов и знака ':' ставить ... пробел!
Так что, спасибо за поддержку. Заработало :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.



  Закладки на сайте
  Проследить за страницей
Created 1996-2014 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList