Ftp Search/grep удаленные имена файлов

Мне удалось решить вопрос с помощью ответа pabouk. Основанное на коде решение, которое я наконец обнаружил, который позволяет SAK флаг, который будет установлен/сброшен на последовательном порте при открытии использующий пространство пользователя, которым API может быть найден на stackoverflow здесь, Как я могу отключить опцию SAK последовательного порта на Linux с помощью пространства пользователя API?

5
13.04.2017, 15:36
2 ответа

На UNIX-системах обычно Perl уже установлен, и Net::FTP - модуль Perl CORE, например, тоже установлен. Тогда можно обойтись без дополнительного программного обеспечения (grep находится в последней строке):

perl -MNet::FTP -e '
    $ftp = Net::FTP->new(q[ftp.example.com]) or die $!; 
    $ftp->login(q[ftp],q[user@host]) or die $ftp->message; 
    $ftp->cwd(q[pub/whatever]) or die $ftp->message;
    print "$_\n" for grep { /pattern/ } $ftp->ls
'
2
27.01.2020, 20:38

Вот один способ - использование GNU ftpsync .

Обратите внимание, что ссылки для загрузки на http://www.gnu.org/software/ftpsync/ , похоже, сейчас не работают; вам понадобится страница http://savannah.gnu.org/projects/ftpsync ... Кажется, я получил это через git, вероятно, по адресу:

git clone git://git.sv.gnu.org/ftpsync.git

Обратите внимание, что ftpsync - это сценарий Perl в каталоге src / этого репо. (Обратите внимание, что есть другой инструмент, ftpsync.py в Python, его можно найти по адресу ftpsync2d - Хостинг проектов Google )

В любом случае, уловка состоит в том, чтобы просто попытаться синхронизировать удаленный FTP-дерево в пустой локальный каталог, установив ftpsync в информационный режим ( -i ) (так что фактические действия загрузки не выполняются) и в подробном режиме. Обратите внимание, что подробный режим ( -v ) кажется ошибочным (я получаю даже на меньше вывода на стандартный вывод, чем если бы я не использовал -v ); поэтому ниже я использовал -d для режима отладки, который, кажется, работает так, как рекламируется.

В конечном итоге я делаю следующее:

$ mkdir /tmp/test
$ cd /tmp/test
$ /path/to/ftpsync-git/src/ftpsync -d -i ftp://user:password@ftp.mysite.com/www .   2>&1 | tee _ftpsync_.log

Building remote tree ftp://user@ftp.mysite.com/www
Detecting if passive needed... Passive
Logging in as user.
Sync file /tmp/Q44CbrEGUU => Q44CbrEGUU
Localtime before 1393782144, Remote 1393782120, after 1393782144
Clock sync offset: 0h00m00s
Dir:  in www
Mod:1327878000 Size:737 .htaccess
Mod:1237503600 Size:241 .hiddenfile
Dir: stuff in www
...
Mod:1353452400 Size:4812800     somefile

Building local tree of .
Dir: 
Mod: Size:      
Died at /path/to/ftpsync-git/src/ftpsync line 1011.

После завершения этого процесса у вас должен быть список всех файлов и каталогов в www / на удаленном сервере, локально в _ftpsync_.log - таким образом, позже вы можете просмотреть этот файл с помощью grep для поиска удаленных имен файлов и имен подкаталогов.

Что ж, я все же хотел бы услышать, есть ли альтернативные инструменты для этого.

4
27.01.2020, 20:38

Теги

Похожие вопросы