The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

"Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 17-Дек-02, 18:18  (MSK)
Имеется скрипт:
#!/bin/sh
FILENAME=$1
USER=$2
PASS=$3

ftp -in 192.168.1.5<<ENDF>>log.ftp
user $USER $PASS
cd Prices
lcd /http/root/price
mdel "$FILENAME"
bin
put "$FILENAME" "$FILENAME"
quit
ENDF
exit
Когда этот скрипт запускается ручками от любого из пользователей имеющих права на запуск и на доступ к дирам, заливка проходит нормально. Если его запускать по cronу хоть от roota, хоть от кого, он благополучно зависает. Т.е. висит конкретно процесс ftp (и sh есстено). В чем могут быть грабли ?
ЗЫ FreeBSD 4.3

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

 Оглавление

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

1. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 17-Дек-02, 18:40  (MSK)
>Имеется скрипт:
>#!/bin/sh
>FILENAME=$1
>USER=$2
>PASS=$3
>
>ftp -in 192.168.1.5<<ENDF>>log.ftp
>user $USER $PASS
>cd Prices
>lcd /http/root/price
>mdel "$FILENAME"
>bin
>put "$FILENAME" "$FILENAME"
>quit
>ENDF
>exit
>Когда этот скрипт запускается ручками от любого из пользователей имеющих права на
>запуск и на доступ к дирам, заливка проходит нормально. Если его
>запускать по cronу хоть от roota, хоть от кого, он благополучно
>зависает. Т.е. висит конкретно процесс ftp (и sh есстено). В чем
>могут быть грабли ?
>ЗЫ FreeBSD 4.3

полный путь к утилитам и файлам( ftp, log, и тд и тп)

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

2. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 17-Дек-02, 18:43  (MSK)
>полный путь к утилитам и файлам( ftp, log, и тд и тп)

Изначально был полный путь, потом урезал - одна фигня.

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

3. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 17-Дек-02, 21:14  (MSK)
>>полный путь к утилитам и файлам( ftp, log, и тд и тп)
>
>Изначально был полный путь, потом урезал - одна фигня.

боже, да еще и скрипт некорректный, user и pass на отдельных строках,
плюс добавить promp - для non-interactive работы.
user/pass и вовсе можно обойти при наличии $HOME/.netrc

ну и man ftp

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

4. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 17-Дек-02, 21:18  (MSK)
>>>полный путь к утилитам и файлам( ftp, log, и тд и тп)
>>
>>Изначально был полный путь, потом урезал - одна фигня.
>
>боже, да еще и скрипт некорректный, user и pass на отдельных строках,
>
>плюс добавить promp - для non-interactive работы.
>user/pass и вовсе можно обойти при наличии $HOME/.netrc
>
>ну и man ftp

ой блин, да там еще и работа с stdout/stderr неверно сделана...
учите матчасть

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

5. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 18-Дек-02, 17:10  (MSK)
>>боже, да еще и скрипт некорректный, user и pass на отдельных строках,
>>плюс добавить promp - для non-interactive работы.
>>user/pass и вовсе можно обойти при наличии $HOME/.netrc
>>
>>ну и man ftp
>
>ой блин, да там еще и работа с stdout/stderr неверно сделана...
>учите матчасть
Теперь так.

#!/bin/sh
FILENAME=$1

/usr/bin/ftp -in ftp://111:111@192.168.1.5<<ENDF>>/var/log/log.ftp
prompt off
cd Prices
lcd /http/root/price
mdel "$FILENAME"
bin
put "$FILENAME" "$FILENAME"
quit
ENDF

exit

Всеравно не работает. man ftp это конечно хорошо, но параметров командной стоки для того что бы залить файл который лежит где то там нет.

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

6. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 18-Дек-02, 17:31  (MSK)
>>>боже, да еще и скрипт некорректный, user и pass на отдельных строках,
>>>плюс добавить promp - для non-interactive работы.
>>>user/pass и вовсе можно обойти при наличии $HOME/.netrc
-i Turns off interactive prompting during multiple file transfers.
-n Restrains ftp from attempting ``auto-login'' upon initial
    connection.  If auto-login is enabled, ftp will check the
    .netrc (see below) file in the user's home directory for an
    entry describing an account on the remote machine.  If no en-
    try exists, ftp will prompt for the remote machine login name
    (default is the user identity on the local machine), and, if
    necessary, prompt for a password and an account with which to
    login.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 18-Дек-02, 17:45  (MSK)
>>>боже, да еще и скрипт некорректный, user и pass на отдельных строках,
>>>плюс добавить promp - для non-interactive работы.
>>>user/pass и вовсе можно обойти при наличии $HOME/.netrc
>>>
>>>ну и man ftp
>>
>>ой блин, да там еще и работа с stdout/stderr неверно сделана...
>>учите матчасть
>Теперь так.
>
>#!/bin/sh
>FILENAME=$1
>
>/usr/bin/ftp -in ftp://111:111@192.168.1.5<<ENDF>>/var/log/log.ftp

вот в строке выше, сказано же man sh на предмет перенаправления stdin/stdout/stderr, всего то бишь, так понятно?

>prompt off
>cd Prices
>lcd /http/root/price
>mdel "$FILENAME"
>bin
>put "$FILENAME" "$FILENAME"
>quit
>ENDF
>
>exit
>
>Всеравно не работает. man ftp это конечно хорошо, но параметров командной стоки
>для того что бы залить файл который лежит где то там
>нет.


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

8. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 18-Дек-02, 18:14  (MSK)
>>>>боже, да еще и скрипт некорректный, user и pass на отдельных строках,
>>>>плюс добавить promp - для non-interactive работы.
>>>>user/pass и вовсе можно обойти при наличии $HOME/.netrc
>>>>
>>>>ну и man ftp
>>>
>>>ой блин, да там еще и работа с stdout/stderr неверно сделана...
>>>учите матчасть
>>Теперь так.
>>
>>#!/bin/sh
>>FILENAME=$1
>>
>>/usr/bin/ftp -in ftp://111:111@192.168.1.5<<ENDF>>/var/log/log.ftp
>
>вот в строке выше, сказано же man sh на предмет перенаправления stdin/stdout/stderr,
>всего то бишь, так понятно?
>
>>prompt off
>>cd Prices
>>lcd /http/root/price
>>mdel "$FILENAME"
>>bin
>>put "$FILENAME" "$FILENAME"
>>quit
>>ENDF
>>
>>exit
>>
>>Всеравно не работает. man ftp это конечно хорошо, но параметров командной стоки
>>для того что бы залить файл который лежит где то там
>>нет.

допустим:

---------------------------------------
#!bin/sh                                                                        
ftp host.domain < ftp.in &> ftp.out &
---------------------------------------                                              

где ftp.in входной файл, ftp.out логи, для user/pass используется .netrc
что можно альтернативно решить через ftp.in, скрипт уходит в background

------------------- ftp.in ----------------
verbose                                                                        
bin                                                                            
prompt                                                                          
cd pub                                                                          
dir
mget *                                                                            
quit
-------------------------------------------

все остальное доделать, добить, изменить по вкусу
                                                                        

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

9. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 18-Дек-02, 18:39  (MSK)
>допустим:
>
>---------------------------------------
>#!bin/sh
>ftp host.domain < ftp.in &> ftp.out &
>---------------------------------------
>
>где ftp.in входной файл, ftp.out логи, для user/pass используется .netrc
>что можно альтернативно решить через ftp.in, скрипт уходит в background
Чудесно, только у меня заливаемый файл передается в качестве параметра при запуске:-) Так что Использвать файл параметров совершенно не удобно.
/usr/bin/ftp -in ftp://111:111@192.168.1.5<<ENDF >>/var/log/log.ftp 2>/var/log/err.ftp
Где user и pass задаються в строке подключения к серверу, а параметры передаются от ENDF.
В результате err.ftp - пустой.
log.ftp -
Connected to 192.168.1.5.          
220 Eserv/2.97 FTP ready            
Remote system type is Windows.      
331 Password required              
230 Login OK
200 Type set to I
250 CWD command successful.
Interactive mode off.
250 CWD command successful.
200 Type set to I
И все. Процесс фтп висит ...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 18-Дек-02, 18:42  (MSK)
>>допустим:
>>
>>---------------------------------------
>>#!bin/sh
>>ftp host.domain < ftp.in &> ftp.out &
>>---------------------------------------
>>
>>где ftp.in входной файл, ftp.out логи, для user/pass используется .netrc
>>что можно альтернативно решить через ftp.in, скрипт уходит в background
>Чудесно, только у меня заливаемый файл передается в качестве параметра при запуске:-)
>Так что Использвать файл параметров совершенно не удобно.
>/usr/bin/ftp -in ftp://111:111@192.168.1.5<<ENDF >>/var/log/log.ftp 2>/var/log/err.ftp
>Где user и pass задаються в строке подключения к серверу, а параметры
>передаются от ENDF.
>В результате err.ftp - пустой.
>log.ftp -
>Connected to 192.168.1.5.
>220 Eserv/2.97 FTP ready
>Remote system type is Windows.
>331 Password required
>230 Login OK
>200 Type set to I
>250 CWD command successful.
>Interactive mode off.
>250 CWD command successful.
>200 Type set to I
>И все. Процесс фтп висит ...

изучай shell, в примере конкретно было показано как и сказано: изменить под себя и свои нужды или переписать

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

11. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 18-Дек-02, 18:54  (MSK)

>>Connected to 192.168.1.5.
>>220 Eserv/2.97 FTP ready
>>Remote system type is Windows.
>>331 Password required
>>230 Login OK
>>200 Type set to I
>>250 CWD command successful.
>>Interactive mode off.
>>250 CWD command successful.
>>200 Type set to I
>>И все. Процесс фтп висит ...
>
>изучай shell, в примере конкретно было показано как и сказано: изменить под
>себя и свои нужды или переписать
Вот меня и интересует, почему это не работает. Исходя из лога получается, что после входа выполняются команды:
prompt
cd Prices
bin
А команды
lcd /http/root/price                                                     mdel "$FILENAME"                                                      put "$FILENAME" "$FILENAME"                                               quit
Не проходят.. С чем ЭТО может быть связано? Кстати из логов сервака видно то же самое)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 18-Дек-02, 18:59  (MSK)
>
>>>Connected to 192.168.1.5.
>>>220 Eserv/2.97 FTP ready
>>>Remote system type is Windows.
>>>331 Password required
>>>230 Login OK
>>>200 Type set to I
>>>250 CWD command successful.
>>>Interactive mode off.
>>>250 CWD command successful.
>>>200 Type set to I
>>>И все. Процесс фтп висит ...
>>
>>изучай shell, в примере конкретно было показано как и сказано: изменить под
>>себя и свои нужды или переписать
>Вот меня и интересует, почему это не работает. Исходя из лога получается,
>что после входа выполняются команды:
>prompt
>cd Prices
>bin
>А команды
>lcd /http/root/price          
>          
>          
>          
>         mdel "$FILENAME"
>          
>          
>          
>          
>         put "$FILENAME"
>"$FILENAME"          
>          
>          
>          
>   quit
>Не проходят.. С чем ЭТО может быть связано? Кстати из логов сервака
>видно то же самое)

зайди вручную и набери команду status и покажи ее результат

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

13. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 18-Дек-02, 19:06  (MSK)
>зайди вручную и набери команду status и покажи ее результат

Connected and logged into 192.168.1.5.
No proxy connection.
Gate ftp: off, server (none), port ftpgate.
Passive mode: on.
Mode: stream; Type: ascii; Form: non-print; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
Store unique: off; Receive unique: off.
Preserve modification times: on.
Case: off; CR stripping: on.
Ntrans: off.
Nmap: off.
Hash mark printing: off; Mark count: 1024; Progress bar: on.
Use of PORT cmds: on.
Command line editing: on.

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

14. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 18-Дек-02, 19:07  (MSK)
>>зайди вручную и набери команду status и покажи ее результат
>
>Connected and logged into 192.168.1.5.
>No proxy connection.
>Gate ftp: off, server (none), port ftpgate.
>Passive mode: on.
>Mode: stream; Type: ascii; Form: non-print; Structure: file.
>Verbose: on; Bell: off; Prompting: on; Globbing: on.
>Store unique: off; Receive unique: off.
>Preserve modification times: on.
>Case: off; CR stripping: on.
>Ntrans: off.
>Nmap: off.
>Hash mark printing: off; Mark count: 1024; Progress bar: on.
>Use of PORT cmds: on.
>Command line editing: on.

вставь после

verbose
promp
pass off
ниже можешь все остальные команды использовать: dir, get, put...

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

15. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 18-Дек-02, 19:19  (MSK)
>вставь после
>
>verbose
>promp
>pass off
>ниже можешь все остальные команды использовать: dir, get, put...

Тоже самое... нифига не понимаю( Но если его пускать ручками, все по прежнему работает.


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

16. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 18-Дек-02, 19:30  (MSK)
Connected to 192.168.1.5.
220 Eserv/2.97 FTP ready
Remote system type is Windows.
331 Password required
230 Login OK
200 Type set to I
250 CWD command successful.
Interactive mode off.
Verbose mode on.
Passive mode off.
Connected and logged into 192.168.1.5.
No proxy connection.
Gate ftp: off, server (none), port ftpgate.
Passive mode: off.
Mode: stream; Type: binary; Form: non-print; Structure: file.
Verbose: on; Bell: off; Prompting: off; Globbing: on.
Store unique: off; Receive unique: off.
Preserve modification times: on.
Case: off; CR stripping: on.
Ntrans: off.
Nmap: off.
Hash mark printing: off; Mark count: 1024; Progress bar: off.
Use of PORT cmds: on.
Command line editing: off.
250 CWD command successful.

А это получается если в скрипт вставить status

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

17. "RE: Автоматизация зативки на ftp"
Сообщение от J Искать по авторуВ закладки on 19-Дек-02, 10:51  (MSK)
>>вставь после
>>
>>verbose
>>promp
>>pass off
>>ниже можешь все остальные команды использовать: dir, get, put...
>
>Тоже самое... нифига не понимаю( Но если его пускать ручками, все по
>прежнему работает.

lftp изначально умеет работать в пакетном режиме, может, вы на него посмотрите?

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

18. "RE: Автоматизация зативки на ftp"
Сообщение от Vlad emailИскать по авторуВ закладки on 19-Дек-02, 12:33  (MSK)
>Имеется скрипт:
>#!/bin/sh
>FILENAME=$1
>USER=$2
>PASS=$3
>
>ftp -in 192.168.1.5<<ENDF>>log.ftp
>user $USER $PASS
>cd Prices
>lcd /http/root/price
>mdel "$FILENAME"
>bin
>put "$FILENAME" "$FILENAME"
>quit
>ENDF
>exit
>Когда этот скрипт запускается ручками от любого из пользователей имеющих права на
>запуск и на доступ к дирам, заливка проходит нормально. Если его
>запускать по cronу хоть от roota, хоть от кого, он благополучно
>зависает. Т.е. висит конкретно процесс ftp (и sh есстено). В чем
>могут быть грабли ?
>ЗЫ FreeBSD 4.3


А .netrc пробовал использовать? Зачем такой гемморой со скриптами - почитай ман по фтп и попользуй .netrc


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

19. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 19-Дек-02, 13:06  (MSK)
>>Имеется скрипт:
>>#!/bin/sh
>>FILENAME=$1
>>USER=$2
>>PASS=$3
>>
>>ftp -in 192.168.1.5<<ENDF>>log.ftp
>>user $USER $PASS
>>cd Prices
>>lcd /http/root/price
>>mdel "$FILENAME"
>>bin
>>put "$FILENAME" "$FILENAME"
>>quit
>>ENDF
>>exit
>>Когда этот скрипт запускается ручками от любого из пользователей имеющих права на
>>запуск и на доступ к дирам, заливка проходит нормально. Если его
>>запускать по cronу хоть от roota, хоть от кого, он благополучно
>>зависает. Т.е. висит конкретно процесс ftp (и sh есстено). В чем
>>могут быть грабли ?
>>ЗЫ FreeBSD 4.3
>
>
>А .netrc пробовал использовать? Зачем такой гемморой со скриптами - почитай ман
>по фтп и попользуй .netrc

геморрой не со скриптами, а с пониманием stdin/stdout/stderr и работой с ними, в частности в SHELL, а использовать можно что угодно, хоть ncftp3
или еще какую лабуду, что не поправит дела в понимании перенаправлении
ввода-вывода в отличие от запуска с командной строки и привязки stdout
и/или stderr к терминалу.

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

20. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 19-Дек-02, 15:44  (MSK)
>геморрой не со скриптами, а с пониманием stdin/stdout/stderr и работой с ними,
>в частности в SHELL, а использовать можно что угодно, хоть ncftp3
>
>или еще какую лабуду, что не поправит дела в понимании перенаправлении
>ввода-вывода в отличие от запуска с командной строки и привязки stdout
>и/или stderr к терминалу.

:-)))))
Всем спасибо, проблемма решилась. Оказалось что необходимо указывать pass on.

PS. larv, скажи плз какое может быть непонимание работы скриптов, если скрипт работал если пущался ручками ?-)) Чего я не понимаю., так почему он подключался при запуске ручками в пассивном режиме, а при запуске кроном в не пассивом...

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

22. "RE: Автоматизация зативки на ftp"
Сообщение от lavr emailИскать по авторуВ закладки on 19-Дек-02, 16:58  (MSK)
>>геморрой не со скриптами, а с пониманием stdin/stdout/stderr и работой с ними,
>>в частности в SHELL, а использовать можно что угодно, хоть ncftp3
>>
>>или еще какую лабуду, что не поправит дела в понимании перенаправлении
>>ввода-вывода в отличие от запуска с командной строки и привязки stdout
>>и/или stderr к терминалу.
>
>:-)))))
>Всем спасибо, проблемма решилась. Оказалось что необходимо указывать pass on.
>
>PS. larv, скажи плз какое может быть непонимание работы скриптов, если скрипт
>работал если пущался ручками ?-)) Чего я не понимаю., так почему
>он подключался при запуске ручками в пассивном режиме, а при запуске
>кроном в не пассивом...

о боже, чем отличается запуск в кроне от запуска в терминале и чем грозит
непонимание редиректа stdin/stdout/stderr? пример даже был перенаправлением, смотри свой скрипт на этот предмет, про pass вобщем тоже
было...

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

21. "RE: Автоматизация зативки на ftp"
Сообщение от dah emailИскать по авторуВ закладки on 19-Дек-02, 15:48  (MSK)
>А .netrc пробовал использовать? Зачем такой гемморой со скриптами - почитай ман
>по фтп и попользуй .netrc

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

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


Удалить

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру