The OpenNET Project / Index page

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

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

"Как по CRONу _залить_ файл на FTP?" 
Сообщение от alexeypp emailИскать по авторуВ закладки(ok) on 09-Ноя-05, 23:01  (MSK)
Есть скрипт script.sh который в нужное время запускается cron-ом (командой sh /dir/script.sh) и с некоторого FTP скачивает в директорию dir скрипта файл file1.txt
Строка работы с FTP в скрипте при этом выглядит так:

cd /dir
ftp ftp://mylogin:mypass@myserver:21/file1.txt

Вопрос:
какую строку (строки) необходимо добавить в скрипт, чтобы следующим действием на ФТП _заливался_ файл file2.txt лежащий в тойже директории dir?
(айти руками на ФТП, ввести пароль и через PUT залить файл получается без проблем, затык именно в синтаксисе всего этого для скрипта)
Спасибо.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]

1. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от Gennadi emailИскать по авторуВ закладки(??) on 10-Ноя-05, 01:44  (MSK)
>Есть скрипт script.sh который в нужное время запускается cron-ом (командой sh /dir/script.sh)
>и с некоторого FTP скачивает в директорию dir скрипта файл file1.txt
>
>Строка работы с FTP в скрипте при этом выглядит так:
>
>cd /dir
>ftp ftp://mylogin:mypass@myserver:21/file1.txt
>
>Вопрос:
>какую строку (строки) необходимо добавить в скрипт, чтобы следующим действием на ФТП
>_заливался_ файл file2.txt лежащий в тойже директории dir?
>(айти руками на ФТП, ввести пароль и через PUT залить файл получается
>без проблем, затык именно в синтаксисе всего этого для скрипта)
>Спасибо.

Может быть что-то типа этого?....

crontab
59 1 * * *    root /usr/local/sbin/script.sh >> /dev/null 2>&1

====================== script.sh ==================================
#!/bin/bash
DIR="/usr/local/sbin"
FTP="myserver"
USR="mylogin"
PASS="mypass"
FILENAME_1="file1.txt"
FILENAME_2="file2.txt"
ADMIN_MAIL="admin@myserver"
#
cd $DIR
echo '#!/usr/bin/expect -f' > download.sh
echo "spawn ftp $FTP" >> download.sh
echo "expect \"Name*:\" { send \"$USR\\n\"}" >> download.sh
echo "expect \"Password:\" { send \"$PASS\\n\"}" >> download.sh
echo "expect \"ftp>\" { send \"get $FILENAME_1\\n\"}" >> download.sh
echo "expect \"ftp>\" { send \"exit\\n\"}" >> download.sh
chmod 755 download.sh
./download.sh
echo "`date +%Y.%m.%d.%H.%M`
$FILENAME_1" | mail -s "$FILENAME_1 von $FTP downloaded! " $ADMIN_MAIL
#
sleep 2
echo '#!/usr/bin/expect -f' > upload.sh
echo "spawn ftp $FTP" >> upload.sh
echo "expect \"Name*:\" { send \"$USR\\n\"}" >> upload.sh
echo "expect \"Password:\" { send \"$PASS\\n\"}" >> upload.sh
echo "expect \"ftp>\" { send \"put $FILENAME_2\\n\"}" >> upload.sh
echo "expect \"ftp>\" { send \"exit\\n\"}" >> upload.sh
chmod 755 upload.sh
./upload.sh
rm -f *load.sh
echo "`date +%Y.%m.%d.%H.%M`
$FILENAME_2" | mail -s "$FILENAME_2 auf $FTP uploaded!" $ADMIN_MAIL
#
====================================================================

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от alexeypp emailИскать по авторуВ закладки(ok) on 11-Ноя-05, 18:03  (MSK)
>Может быть что-то типа этого?....
>
>crontab
>59 1 * * *    root /usr/local/sbin/script.sh >> /dev/null 2>&1
>
>====================== script.sh ==================================
>#!/bin/bash
>DIR="/usr/local/sbin"
>FTP="myserver"
>USR="mylogin"
>PASS="mypass"
>FILENAME_1="file1.txt"
>FILENAME_2="file2.txt"
>ADMIN_MAIL="admin@myserver"
>#
>cd $DIR
>echo '#!/usr/bin/expect -f' > download.sh
>echo "spawn ftp $FTP" >> download.sh
>echo "expect \"Name*:\" { send \"$USR\\n\"}" >> download.sh
>echo "expect \"Password:\" { send \"$PASS\\n\"}" >> download.sh
>echo "expect \"ftp>\" { send \"get $FILENAME_1\\n\"}" >> download.sh
>echo "expect \"ftp>\" { send \"exit\\n\"}" >> download.sh
>chmod 755 download.sh
>./download.sh
>echo "`date +%Y.%m.%d.%H.%M`
>$FILENAME_1" | mail -s "$FILENAME_1 von $FTP downloaded! " $ADMIN_MAIL
>#
>sleep 2
>echo '#!/usr/bin/expect -f' > upload.sh
>echo "spawn ftp $FTP" >> upload.sh
>echo "expect \"Name*:\" { send \"$USR\\n\"}" >> upload.sh
>echo "expect \"Password:\" { send \"$PASS\\n\"}" >> upload.sh
>echo "expect \"ftp>\" { send \"put $FILENAME_2\\n\"}" >> upload.sh
>echo "expect \"ftp>\" { send \"exit\\n\"}" >> upload.sh
>chmod 755 upload.sh
>./upload.sh
>rm -f *load.sh
>echo "`date +%Y.%m.%d.%H.%M`
>$FILENAME_2" | mail -s "$FILENAME_2 auf $FTP uploaded!" $ADMIN_MAIL
>#
>====================================================================

Не работает. Не находит файлов upload.sh и download.sh на которые все ссылается.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от Gennadi emailИскать по авторуВ закладки(??) on 11-Ноя-05, 18:31  (MSK)
>Не работает. Не находит файлов upload.sh и download.sh на которые все ссылается.
>

Выполни команду:

bash -x script.sh


и покажи здесь.

Посмотрим где ошибка.

Сейчас снова прогонял скрипт - РАБОТАЕТ!

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от Gennadi emailИскать по авторуВ закладки(??) on 11-Ноя-05, 20:59  (MSK)
>>Не работает. Не находит файлов upload.sh и download.sh на которые все ссылается.
>>
>
>Выполни команду:
>
>bash -x script.sh
>
>
>и покажи здесь.
>
>Посмотрим где ошибка.


Возможная ошибка - неустановлен пакет "expect"


Файлы upload.sh и download.sh создаются динамически и после выполнения скрипта уничтожаются.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от Gennadi emailИскать по авторуВ закладки(??) on 11-Ноя-05, 21:38  (MSK)
Наглядный пример:

linux:/usr/local/sbin # bash -x script.sh
+ DIR=/usr/local/sbin
+ FTP=ftp.ru
+ USR=tester
+ PASS=linux
+ FILENAME_1=file1.txt
+ FILENAME_2=file2.txt
+ ADMIN_MAIL=admin@ftp.ru
+ cd /usr/local/sbin
+ echo '#!/usr/bin/expect -f'
+ echo 'spawn ftp ftp.ru'
+ echo 'expect "Name*:" { send "tester\n"}'
+ echo 'expect "Password:" { send "linux\n"}'
+ echo 'expect "ftp>" { send "get file1.txt\n"}'
+ echo 'expect "ftp>" { send "exit\n"}'
+ chmod 755 download.sh
+ ./download.sh
script.sh: ./download.sh: /usr/bin/expect: bad interpreter: No such file or directory
++ date +%Y.%m.%d.%H.%M
+ mail -s 'file1.txt von ftp.ru downloaded! ' admin@ftp.ru
+ echo '2005.11.11.19.14
file1.txt'
+
..................................................
linux:/usr/local/sbin #

Если что-то подобное - установи пакет "expect" в любом дистре он есть.


А вот так выглядит правильное выполнение скрипта после установки пакета "expect":

linux:/usr/local/sbin # bash -x script.sh
+ DIR=/usr/local/sbin
+ FTP=ftp.ru
+ USR=tester
+ PASS=linux
+ FILENAME_1=file1.txt
+ FILENAME_2=file2.txt
+ ADMIN_MAIL=admin@ftp.ru
+ cd /usr/local/sbin
+ echo '#!/usr/bin/expect -f'
+ echo 'spawn ftp ftp.ru'
+ echo 'expect "Name*:" { send "tester\n"}'
+ echo 'expect "Password:" { send "linux\n"}'
+ echo 'expect "ftp>" { send "get file1.txt\n"}'
+ echo 'expect "ftp>" { send "exit\n"}'
+ chmod 755 download.sh
+ ./download.sh
spawn ftp ftp.ru
Connected to ftp.ru.
220 Welcome to FTP service auf ftp.ru.
Name (gennadi.dyn.ee:root): tester
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get file1.txt
local: file1.txt remote: file1.txt
229 Entering Extended Passive Mode (|||57384|)
150 Opening BINARY mode data connection for file1.txt (2 bytes).
100% |*************************************************|     2       6.48 KB/s    00:00 ETA
226 File send OK.
2 bytes received in 00:00 (1.43 KB/s)
ftp> ++ date +%Y.%m.%d.%H.%M
+ mail -s 'file1.txt von ftp.ru downloaded! ' admin@ftp.ru
+ echo '2005.11.11.19.31
file1.txt'
+ sleep 2
+ echo '#!/usr/bin/expect -f'
+ echo 'spawn ftp ftp.ru'
+ echo 'expect "Name*:" { send "tester\n"}'
+ echo 'expect "Password:" { send "linux\n"}'
+ echo 'expect "ftp>" { send "put file2.txt\n"}'
+ echo 'expect "ftp>" { send "exit\n"}'
+ chmod 755 upload.sh
+ ./upload.sh
spawn ftp ftp.ru
Connected to ftp.ru.
220 Welcome to FTP service auf ftp.ru.
Name (gennadi.dyn.ee:root): tester
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put file2.txt
local: file2.txt remote: file2.txt
229 Entering Extended Passive Mode (|||63971|)
150 Ok to send data.
100% |*************************************************|     2       9.52 KB/s    00:00 ETA
226 File receive OK.
2 bytes sent in 00:00 (1.11 KB/s)
ftp> + rm -f download.sh upload.sh
+ mail -s 'file2.txt auf ftp.ru uploaded!' admin@ftp.ru
++ date +%Y.%m.%d.%H.%M
+ echo '2005.11.11.19.31
file2.txt'
linux:/usr/local/sbin #          


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от alexeypp emailИскать по авторуВ закладки(ok) on 12-Ноя-05, 20:55  (MSK)
>
>Возможная ошибка - неустановлен пакет "expect"
>

Именно. Не установлен expect у меня.
Спасибо всем, проблему обошел используя Perl, которому при этом пришлось доустановить модуль Net.
Для этого читал:
http://www.sql.ru/forum/actualthread.aspx?tid=233801
http://perl.dp.ua/cgi-bin/forum.pl?do=showtext&id=1098207861&tema=1&page=2
http://forums.webscript.ru/showthread.php?s=43401e719ce2c103b4fb930790a0b7f0&postid=74029
и самое главное https://www.opennet.ru/base/dev/perl_cpan_inst.txt.html

Теперь ПЕРЛовый скрипт заливает файл а все остальное делается шеллом.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от toor99 emailИскать по авторуВ закладки(??) on 11-Ноя-05, 18:53  (MSK)
Поставь ncftp (http://www.ncftp.com/), с ним все это делается на раз.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от Doka Искать по авторуВ закладки(??) on 11-Ноя-05, 19:06  (MSK)
>Поставь ncftp (http://www.ncftp.com/), с ним все это делается на раз.
https://www.opennet.ru/docs/RUS/lug/lug.txt.html
see netrc


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Как по CRONу _залить_ файл на FTP?" 
Сообщение от PluOk Искать по авторуВ закладки on 12-Ноя-05, 18:13  (MSK)
Попробуй так:

ftp -n $FTPHOST <<EOF
user $USER
pass $PWD
cd $RDIR
type binary
put $FILE2
bye
EOF

весь скрипт не пишу думаю, будет понятно.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




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

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