nixp.ru v3.0

17 октября 2017,
вторник,
10:59:52 MSK

DevOps с компанией «Флант»
reem_sabry написал 6 апреля 2007 года в 02:36 (1527 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 9 комментариев на сайте.

Здравтсвуйте всем гуру Unix.

У меня возникла не большая проблема. И кончено же хотелось бы чтоб кто-то помог.

Моя программа создает файл на сервере и записывает его в определенную папку. Мне нужно что б этот, только что, созданный файл, средствами Unix был автоматически перемещен на другой сервер используя FTP соединение.

Всем спасибо за оказанное содействие.

Steck

например можно запускать твою прогу так

можно скрипт написать примерно такого содержания

ftp ftp://username:pass@server.ru -msend filename.txt

и все

можешь эту строку в скрипт воткнуть и сделать запуск сзару после того как твоя софтина создала файл

reem_sabry

Здравствуйте всем

Спасибо Steck за оказанный совет.

Проблема в том что на серваке у меня нет веб сервера соответственно вариант со скриптом не пройдет.

Мне вот нужно средствами Unix отловить момент создания нового файла и тут же его перенаправить на другой хост.

Может через команды резервного копирования или через Shell Script.

Спасибо за оказанное содействие

Genie

можно воспользоваться crontab-ом

для этого, правда, из программы надо сохранять в, скажем, _file.saving.tmp, а потом переименовывать.

в команде, которая перекидывает файлы — брать файл, перемещать его в другой каталог а потом уже заливать.

Genie

ну а вообще же, из твоей программы после сохранения файла можно запустить команду на сервере.

читай о ssh, public/private keys и прочее.

ssh user@server command_to_ftp_file

reem_sabry

Здравствйте спасибо за советы

Сейчас уже другая проблема.

Я хочу выболнить через php функцию — exec.

Но она не работает

вот код пхп

<?

exec (’./test.sh’);

?>

Файл test.sh (в той же директории что и php файл)

#!/bin/bash

mkdir test

При выполнении скрипта к сожаленью папка test не создается

А если выполнить сам bash скрипт непосредственно командой «./test.sh» из командной строки — работает!

Мне кажеться что чтото с правами доступа.

Подскажите пожалуйста

Steck

укажи полный путь к скрипту

<?

exec («/bin/ls»)

<?

к примеру

reem_sabry

Здравствуйте

Пишу

<?

exec (’/bin/bash ./test.sh’);

?>

скрипт не запускаеться а в логах апача выводит:

sh: /bash: No such file or directory

пишу в командной строке

whereis bash

вывод:

bash: /bin/bash /usr/share/man/man1/bash.1.gz

вроде все ок

а почему не пашет не знаю

Помогите пожалуйста

Genie

содержимое файла test.sh в студию

вполне возможно, что первая строчка не правильная

типа такой:

#!/bash

необходимо указать правильный путь: /bin/bash

Anarchist
reem_sabry
Здравствуйте

Пишу

<?

exec (’/bin/bash ./test.sh’);

?>

скрипт не запускаеться а в логах апача выводит:

sh: /bash: No such file or directory

Попробуй просто

<?
exec ('/FULL/PATH/TO/test.sh');
?>

И не обязательно посредством Индейца.

reem_sabry

Bash File:

#!/bin/bash

ls > text.txt

просто для теста

Полный путь к bash скрипту тоже не помогает

reem_sabry

Здравствуйте

Вот вроде как мне кажеться чуть-чуть приблизился к решении моей проблемы.

Опишу ситуацию:

Был у друга за советом по поводу этого вопроса. Сделали все так как я и сделал у него на его хосте, и оказываеться у него все работает. Дальше начали искать проблему. Проблема получается явно из-за того, что у нас хосты разные, а соответственно все зависит от настроек(пхп или апача). Мы вывели phpinfo(); у нас обоих и у него configure строка компиляции пхп пустая, а у меня очень даже и большая. Я дал поиск самой функции exec и вот что я нашол: '--exec-prefix=/usr' (полная configure изолжена ниже)

Честно говоря не знаю что это означает а лишь догадываюсь что команда exec попросту не выполняется.

Если я прав то наверно нужно перекомпилировать пхп.

Подскажите прав ли я, может у вас есть какието советы.

Помогите пожалуйста.

'./configure' '--build=x86_64-redhat-linux' '--host=x86_64-redhat-linux' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64\′ '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64\′ '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--with-bz2\′ '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-pear=/usr/share/pear' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-mime-magic=/etc/httpd/conf/magic' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba'

Anarchist
reem_sabry
Я дал поиск самой функции exec и вот что я нашол: '--exec-prefix=/usr' (полная configure изолжена ниже)

Только сие не функция, а суффикс и вообще из совершенно другой оперы.

metal

Попробуй ln -S /usr/bin/bash /bin/bash

А еще переманная PATH очень интересна.

reem_sabry

Здравствуйте

Это PATH

# echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin://bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/ant/bin:/opt/jdk/bin:/usr/local/ant/bin:/opt/jdk/bin:/usr/local/ant/bin:/opt/jdk/bin

Команда ln -S /usr/bin/bash /bin/bash тоже не помогает

reem_sabry

А еще команда

echo passthru(’whoami’);

не выводит ничего

reem_sabry

Здравствуйте

Может ктото подскает как сконфикурировать апач таким образом что б он видел определенную папку на серваке (к примеру /tmp) и как обращаяться к ней из пхп.

Подскажите пожалуйста

reem_sabry

ПРОБЛЕМА РЕШЕНА

Спасибо всем за оказанное содействие

Дело было в том что в php.ini был включен режим safe_mode = On и safe_mode_exec_dir была пустая

Прописал путь где нахоидться баш файл и ВСЕ заработало

Спасибо. До свиданья