ваще супер! я вот думаю - можно поминять часть параметров и присылать скрипты в cron.1min с расширением .sh (только надо не забывать в конце скрипа указывать "rd /путь/имя_скрипта", а то он так и будет выполняться каждую 1 минуту)...........
У автора времени нет до форума дойти...
до ФАКа это далеко, но
ставим
далее, настройки для fecthmailCode:ipkg install fetchmail ipkg install procmail ipkg install mpack ipkg install unzip
создаем файл /opt/etc/fetchmailrc
pop.mailserver.com, USER_NAME, USER_PASSWORD - настройки pop3 аккаунта, куда будите кидать .zip архивы с .torrent файлами для rtorrent_аCode:poll pop.mailserver.com proto pop3 user 'USER_NAME' pass 'USER_PASSWORD' is 'root' here mda 'procmail -d %T'
далее в
создаем папки:
/tmp/local/root/Mail
/tmp/local/root/Mail/default
/tmp/local/root/files
в папке /tmp/local/root
создаем файл .procmailrc
папка RTORRENTDLDIR - это папка rtorrent_а (поправте на свою)Code:MAILDIR= /tmp/local/root/Mail LOGFILE= /dev/null LOGABSTRACT= no VERBOSE= off DEFAULT= $MAILDIR/default RTORRENTDLDIR= /tmp/harddisk/wdata/dl :0 Bw * ^.*filename=.*zip { MAILDIR=/tmp/local/root/files :0 | munpack -f -q && unzip ./*.zip && mv -f ./*.torrent $RTORRENTDLDIR && rm ./* }
запустите fetchmail
Теперь как это все использовать и как это работает:Code:fetchmail -d 300 -t 60 -a -e 50 --auth password -f /opt/etc/fetchmailrc
1. Качаете себе на комп .torrent файлы
2. Пакуете их в один .zip архив
3. Отсылаете на свой спец. email
4. fetchmail каждые 5 минут проверяем ваш ящик на новые письма
5. если он их находит, то скачивает и передает в procmail
6. procmail - если в теле письма есть вложение (.zip файл), то "отдает" это письмо munpack, которые вынимает вложения во временную папку
7. unzip - разархивирует архив
8. mv - переносит .torrent файлы в папку rtorrent
9. в конце временная папка очищается.
главное!
после перезагрузки, все, что в /tmp/local/root (папки, .procmailrc) - исчезнут, поэтому необходимо, например в /usr/local/sbin/post-mount добавить команды для восстановления всей структуры.
ваще супер! я вот думаю - можно поминять часть параметров и присылать скрипты в cron.1min с расширением .sh (только надо не забывать в конце скрипа указывать "rd /путь/имя_скрипта", а то он так и будет выполняться каждую 1 минуту)...........
Семь бед - один RESET.
Ваша проблема в кривых руках!
Зачем так сложно --- почему бы не хранить почтовый ящик в /opt Для этого надо создать симлинки, т.е. вместо:главное!
после перезагрузки, все, что в /tmp/local/root (папки, .procmailrc) - исчезнут, поэтому необходимо, например в /usr/local/sbin/post-mount добавить команды для восстановления всей структуры.
делаемдалее создаем папки:
/tmp/local/root/Mail
/tmp/local/root/Mail/default
/tmp/local/root/files
А в остальном --- идея любопытная.PHP Code:
mkdir /opt/root
mkdir /opt/root/Mail
mkdir /opt/root/Mail/default
mkdir /opt/root/files
ln -s /opt/root/Mail /tmp/local/root/Mail
ln -s /opt/root/files /tmp/local/root/files
Прежде всего, большое спасибо автору.
Надо переварить все сказанное и осмыслить.
Достаточно сложно все получается. Неужели нет более простого решения? Ведь всего то и надо принять письмо и сохранить его вложения в нужное место?
Но все равно спасибо, хотя я думал что решение будет гораздо изящнее. А тут нужно четыре пакета...
Ну это все эмоции.
возможно все можно упростить, просто делал быстро и был важен результат.
Задача: добавлять удаленно, например с работы, торренты на закачку не имея фиксированного публичного IP адреса.
Решение: написал скрипт на perl, который ищет в почтовом ящике специальные сообщения с прицепленными торрент-файлами и ставит эти торретны на закачку. Имена самих торрент-файлов должны быть английскими. С перекодировкой руских имен приаттаченных файлов пока не разбирался.
Вот сам скрипт test_mail.pl:
PHP Code:
#!/opt/bin/perl -w
use strict;
use Net::POP3;
use MIME::Parser;
my $valid_exts = "^(torrent)\$";
my $savedir = "test_mail_files";
system("rm -f -r $savedir");
system("mkdir -p -m 0777 $savedir");
my $torrentsdir = "/tmp/harddisk/torrent/dl";
system("mkdir -p -m 0777 $torrentsdir");
my $server = "ВАШ ПОЧТОВЫЙ СЕРВЕР (например, mail.pochta.ru)";
my $pop = new Net::POP3($server);
die "Connection failed" if not defined $pop;
my $msgs = $pop->login("ЛОГИН НА ПОЧТОВИКЕ", "ПАРОЛЬ");
die "Login failed" if not defined $msgs;
print "$msgs messages\n";
my %list = %{$pop->list};
for my $msg_num (keys(%list))
{
print "#$msg_num - $list{$msg_num} bytes\n";
my $headers = $pop->top($msg_num);
my $cmd = undef;
foreach my $header (@$headers)
{
if ($header =~ /^\s*subject:\s*test_mail_cmd\s*\(\s*(.*)\s*\)\s*$/i)
{
$cmd = $1;
defined($cmd) ? (print "CMD = $cmd\n") : (print "CMD is empty\n");
last;
}
}
next unless $cmd;
if ($cmd =~ /^torrents$/i)
{
my $msg = $pop->get($msg_num);
# create a MIME::Parser object to
# extract any attachments found within.
my $parser = new MIME::Parser;
$parser->output_dir($savedir);
my $entity = $parser->parse_data($msg);
# extract our mime parts
# and go through each one.
my @parts = $entity->parts;
foreach my $part (@parts)
{
my $h = $part->head;
my $orig_filename = $h->recommended_filename;
defined($orig_filename) ? ((chomp $orig_filename), (print "ORIG_FILENAME = $orig_filename\n")) : (print "ORIG_FILENAME is empty\n");
# determine the path to the file in question.
my $path = ($part->bodyhandle) ? $part->bodyhandle->path : undef;
next unless $path;
print "PATH = $path\n";
my $filename;
if ($path =~ /(\w+[\\\/])*([^\\\/]+)$/)
{
$filename = $2;
}
next unless $filename;
print "FILENAME = $filename\n";
my $ext;
if ($filename =~ /\w+\.([^.]+)$/)
{
$ext = $1;
}
next unless $ext;
print "EXT = $ext\n";
if ($ext =~ /$valid_exts/)
{
my $error = 1;
my $new_path;
if (defined($orig_filename))
{
$new_path = $torrentsdir . "/" . $orig_filename;
print "NEW_PATH = $new_path\n";
unless (-e "$new_path")
{
$error = system("mv -f \"$path\" \"$new_path\"");
}
}
if ($error != 0)
{
$new_path = $torrentsdir . "/" . $filename;
print "NEW_PATH = $new_path\n";
unless (-e "$new_path")
{
$error = system("mv -f \"$path\" \"$new_path\"");
}
}
if ($error == 0)
{
system("chmod 0644 \"$new_path\"");
}
}
}
$pop->delete($msg_num);
}
elsif ($cmd =~ /^update$/i)
{
}
system("rm -f -r $savedir");
}
$pop->quit();
Круто.
Но неужели не хватает либо FAR+SCP либо WinSCP либо вэб-морды+https?
© 2008-2013 ABATAPA WL-500gP/128M / Asus RT-N16 / USB Flash / VLAN / PPPoE / VoIP / nShaper / NAS: iStor is607, Sarotech NAS-20, QNap 109 Pro / NFS / Принтер / etc
Скачал со http://www.cpan.org Net::POP3 и MIME::Parser. При установке они стали на зависимости ругаться. Докачивал все, что нужно. Зависимости сразу на cpan.org посмотреть можно.Originally Posted by ABATAPA
Совершенно верно. Не имею внешнего доступа к роутеру (с работы уж точно). А так кинул утречком торрент себе на мыло, вечером фильм уже смотреть можно.Originally Posted by euseller
Динамический IP есть, но в сетевых технологиях я не особо силен. А за наводку на dyndns спасибо. Поищу, как его настроить можно.Originally Posted by bbsc
Однако на работе доступ в интернет может быть ограничен. Так что, ИМХО, этот робот - вещь полезная в некоторых случаях. Да и безопасней, как мне кажется.
Если есть динамический real-IP, то не заморачивайтесь, а зарегистрируйтесь на dyndns.com, выберите себе доменное имя и пропишите настройки через вэб-морду роутера.
Откройте какой-нибудь порт наружу и запустите на нем SSH-сервер.
Будет Вам доступ к роутеру снаружи, а в SSH-туннель запихнете затем что угодно.
А для безопасности и комфорта к rtorrent-у положена вэб-морда через https
А если провайдер порты закрывает ? По SSH снаружи достучаться не могу.
dynnds не поможет