FTP: вложите последний файл, разъединяют

Как @Casey примечания, помещая команду в подоболочку работает:

$ ( cat <foo ) 2>bar

Однако подоболочка не необходима. Простой список работает точно также:

$ { cat <foo ; } 2>bar

Вам даже не нужен список, если Вы замечаете, что порядок, в котором сделаны перенаправления, имеет значение:

$ cat <foo 2>bar
bash: foo: No such file or directory
$ cat 2>bar <foo

Мое заключение состоит в том, что то, что имеет значение, является заказом обработки удара: проблема - был ли stderr перенаправлен прежде или с момента, когда удар обнаруживает, что перенаправление stdin перестало работать. Таким образом нет никакого вывода от последнего примера выше, потому что удар сначала перенаправляет stderr и затем пытается открыть нечто для stdin.

2
25.03.2015, 18:37
2 ответа

Подход, который часто удобный, - это установить файлы, а затем получить доступ к ним, как вы получите доступ к обычным локальным файлам. Для сервера, который вы получаете через FTP, вы можете использовать CurlftPFS .

mkdir theserver
curlftpfs theserver.example.com theserver

Вам нужно будет пройти имя пользователя и пароль для CurlftPFS, либо в командной строке (которая небезопасно, как другие пользователи на вашем компьютере смогут их увидеть) или в файле ~ / .NETRC (настоятельно рекомендуется). Вот образец строки NETRC:

machine theserver.example.com login remoteusername password swordfish

Теперь, когда вы смонтировали FTP-сервер в качестве каталога на вашем компьютере, вы можете использовать обычные команды, такие как LS , CP , и т.д. , Например, чтобы скопировать файл из каталога, который приходит в течение последнего в лексикографическом порядке (должно быть в порядке, если ваши имена файлов фактически содержат дату до времени):

set -- theserver/remote/path/T*
eval "last=\${$#}"
cp -p -- "$last/new.txt" "/some/where/local/${last##*/}.txt"

или для копирования последнего файла, предполагая, что имена файлов участвуют Содержать недействительные персонажи или Ньюлайн:

cd theserver/remote/path
last=$(ls -t -- T*/new.txt | head -n 1)
cp -p -- "$last" "/some/where/local/${last%/*}.txt"
2
27.01.2020, 22:05

OpenVPN - обычный демон Unix, его можно просто запустить из командной строки. Дополнительные пакеты для Enterprise Linux (EPEL) содержат пакет OpenVPN, который можно установить. Затем необходимо записать (или скопировать) конфигурационный файл, сертификаты и т.д.

-121--217329-

Сначала попробуйте установить, что приведет к ошибке.

dpkg -i percona-toolkit.deb

Затем выполните следующие действия для установки и устранения недостающих зависимостей.

apt-get install --fix-missing -f

Затем повторите попытку установки пакета .deb

dpkg -i percona-toolkit.deb
-121--83292-

Если периодически выполняется сценарий, можно использовать wget -N , см.:

https://superuser.com/questions/283481/how-do-i-properly-set-wget-to-download-only-new-files


Можно создать сценарий, например:

cd /var/download_here/
wget -N ftp://example.com/new.txt --ftp-user="my_user" --ftp-password="my_password"

и добавить crontab запись, например:

*/5 *   * * *   /path/to_script

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

1
27.01.2020, 22:05

Теги

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