LINUX.ORG.RU

Удаление файлов по маске с фтп

 


0

1

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

#!/bin/bash

ADDRESS=7.7.7.7
USER=ftpuser
PASSWORD=123456
pftp -n -p $ADDRESS <<EoF
user $USER $PASSWORD
cd pub
mget *2014*
mdelete *2014*
quit
EoF

exit 0
вообщем подключается, забирает нужные файлы, но не удаляет
вывод при исполнении скрипта например такой
zhopin@nikolapc:~$sh ftpdergalka.sh
mget tt02014A0.zip? zhopin@nikolapc:~$

Что Я Делаю Не Так?


Ответ на: комментарий от anonymous

кроме анонимного ослоумия, посты будут? Полезные посты я имею ввиду

Zhopin
() автор топика

Страшная поделка. IMHO удалять можно только то, что скачали.

На перле или другом языке это более просто и надежно.

Чем не устроил обычный ftp клиент ? Нафига этот pftp ?

дебаг у pftp есть. Включить да посмотреть. Может нужно отключить интеракив в явном виде? pftp -i ... ?

vel ★★★★★
()

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

#!/bin/bash

ADDRESS=7.7.7.7
USER=ftpuser
PASSWORD=123456
(
echo "user $USER $PASSWORD"
echo "cd pub"
echo "mget *2014*"
sleep 60
echo "mdelete *2014*"
sleep 60
echo "quit"
) | pftp -n -p $ADDRESS

exit 0

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 1)

Что Я Делаю Не Так?

У тебя руки из Zhopin

anonymous
()

[quoteЧто Я Делаю Не Так?

У тебя руки из Zhopin

anonymous
()

Что Я Делаю Не Так?

У тебя руки из Zhopin

anonymous
()
Ответ на: комментарий от vel

я и удаляю то что скачиваю.
ftp -p = pftp - всё это обычный фтп клиент
страшная поделка взятая из 99,99% примеров использования фтп клиента в баш, использовал материал которым располагал, не более.
Что бы сделать это на перле наверно нужно знать перл, не?

Zhopin
() автор топика
Ответ на: комментарий от ziemin

спасибо за пример, решением стало sleep в 200 миллисекунд между скачиванием и удалением.
И теперь я знаю как более красиво использовать код в баше, ещё раз моя благодарность.

Zhopin
() автор топика
Ответ на: комментарий от Zhopin

Достаточно взять готовые примеры и подправить

Если ты знаешь bash, то понять не сложно.

что-типа

use Net::FTP;

my $ftp = Net::FTP->new("some.host.name", Debug => 0)
   or die "Cannot connect to some.host.name: $@";
$ftp->cwd("/pub") 
   or die "Cannot change working directory ", $ftp->message;

my @files = $ftp->ls(); 
foreach my $file(@files)
    $ftp->delete($file) if $ftp->get($file);
}

vel ★★★★★
()
Ответ на: комментарий от Zhopin

Вот ещё подобная тема недавно поднималась.

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

В смысле ты подобрал задержку исходя из скорости передачи определённого объёма данных.

Это случайные величины. Нельзя так делать. Нужно более надёжное решение.

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 2)
Ответ на: комментарий от vel

проблема в том что я не знаю баш, а только только учу его. Кинусь на другое, хорошего ничего не выйдет. Но я учту ваш совет на будущее, спасибо.

ziemin, это я понимаю, просто эта вся шняга была чисто в образовательных целях. +владелец фтп-сервера говорил что при скачивании файла, удалении (т.е. при определённых действиях), запускается некий скрипт (причём при помощи какого то модуля для фтп сервера - modexec вроде бы), который что то там делает. Что происходит по ту сторону, загадка, но возможно, этому и требуется 200 мс, так как с этой задержкой удачно скачивались, а затем удалялись, десятки файлов больших объёмов.

Zhopin
() автор топика

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

Что Я Делаю Не Так?

не знаешь и не желаешь знать про OpenSSH и rsync

emulek
()
Ответ на: комментарий от emulek

поподробней пожалуйста, я неофит и не не очевидна мне ваша мысль
первое тулзы для соединения и передачи файлов по ssh
второе синхронизация двух папок на двух юникс машинах
как мне это поможет при работе с фтп?

Zhopin
() автор топика
Ответ на: комментарий от Zhopin

FTP протокол сам по себе очень старый, и его лучше не использовать. Лучше используйте ssh, он намного более надёжный, удобный, и безопасный.

rsync решит ваши проблемы одной командой без всяких нелепых костылей и задержек. И даже более того: она умеет качать только то, что действительно необходимо скачать, а не всё подряд. Естественно она НЕ работает по FTP.

Поинтересуйтесь у администратора сервера, возможно ssh там уже есть(в 146% это так).

emulek
()
Ответ на: комментарий от emulek

действительно, погуглив, ssh практически полноценная замена ftp.
Просто опять же человеческий фактор, просить администратора что то поменять просто так на его хорошо работающем сервере - сложная задача.
Поэтому и скачу из имеющихся возможностей

Zhopin
() автор топика
Ответ на: комментарий от Zhopin

Просто опять же человеческий фактор, просить администратора что то поменять просто так на его хорошо работающем сервере - сложная задача.

обычная практика: держать SSH для себя, и FTP для клиентов. Потому что 95% клиентов FTP достаточно. Ну потому доступ по SSH по умолчанию либо закрыт, либо открыт, но о нём вам не рассказали. Просто надо пообщаться с администратором, обычно SSH доступ дают без проблем.

ssh практически полноценная замена ftp.

нет. Ssh это намного больше, чем «заменитель ftp». И беглое гугленье вам не поможет, там Over9000 возможностей, потому вы скорее вссего наткнулись не совсем на то, что вам нужно. Наверное на sftp. Это конечно годно, но это только один из вариантов.

для вашего случая ИМХО оптимально rsync over ssh, если конечно на сервере есть rsync(если нет, то rsync тоже можно, но sftp в этом случае не хуже).

emulek
()
Ответ на: комментарий от emulek

понял, просто для админа сервера я «немного продвинутый клиент», поэтому ssh мне точно не светит. Но спасибо, уже копаю в этом направлении, ваш пост оказался мегаполезен.

Zhopin
() автор топика
Ответ на: комментарий от Zhopin

для админа сервера я «немного продвинутый клиент»

учитывая, что 95% клиентов _полные_ _идиоты_, а оставшиеся 5% — суперхакеры с ЧСВ Over9000, то такой клиент как вы — просто счастье ☺

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.