Мне удалось решить вопрос с помощью ответа pabouk. Основанное на коде решение, которое я наконец обнаружил, который позволяет SAK
флаг, который будет установлен/сброшен на последовательном порте при открытии использующий пространство пользователя, которым API может быть найден на stackoverflow здесь, Как я могу отключить опцию SAK последовательного порта на Linux с помощью пространства пользователя API?
На 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
'
Вот один способ - использование 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 для поиска удаленных имен файлов и имен подкаталогов.
Что ж, я все же хотел бы услышать, есть ли альтернативные инструменты для этого.