Получить количество файлов в удаленном месте во время FTP в сценарии оболочки на сервере linux - PullRequest
0 голосов
/ 27 мая 2020

Требование : необходимо получить количество файлов на основе записи с подстановочным знаком, присутствующей в удаленном месте (Linux сервер), и сохранить его в переменной для проверки

Пробовал приведенный ниже код

export ExpectedFileCount=$(ftp  -inv $FTPSERVER >> $FTPLOGFILE <<END_SCRIPT
user $FTP_USER $FTP_PASSWORD
passive
cd $PATH
ls -ltr ${WILDCARD}*xml| wc -l | sed 's/ *//g'
quit
END_SCRIPT)

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

Пожалуйста, предложите изменения в сценарии, чтобы выполнить сценарий один раз и сохранить значение в переменной

1 Ответ

0 голосов
/ 28 мая 2020

Кажется, это работает (на Ubuntu никаких обещаний по переносимости):

export ExpectedFileCount=`ftp -in $FTPSERVER << END_SCRIPT | tee -a $FTPLOGFILE | egrep -c '\.xml$'
user $FTP_USER $FTP_PASSWORD
passive
cd $REMOTE_PATH
ls -l
quit
END_SCRIPT`

Проблемы:

  • $REMOTE_PATH используется вместо $PATH для удаленного каталога (поскольку $PATH имеет особое значение)

  • внутри сеанса ftp выполняется только простой ls -l, а вывод анализируется локально, так как он не поддерживает произвольные команды оболочки

  • Я не вижу, как захватить вывод команды с наследником c с помощью $(...), но, похоже, он работает с обратными кавычками, если закрывающая обратная кавычка после последнего разделителя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...