Как автоматизировать отправку файла на FTP-сервер с помощью скрипта?

9

Мне нужно взять сценарий make, который берет определенный файл журнала /var/log/и помещает его туда, где я могу легко его получить (скорее всего, к веб-серверу или FTP-серверу, к которому у меня есть доступ). Я не думаю, что хочу использовать почту для отправки. Webdav может быть вариантом. Это просто должно работать без какого-либо взаимодействия с пользователем, и быть довольно быстрым и безболезненным. Какие-либо предложения? (пароль не требуется, в основном)

CaptSaltyJack
источник

Ответы:

12
  • Файлы журналов /var/logобычно доступны для чтения и не требуют пароля для доступа.
  • Если у вас уже есть FTP-сервер - может быть и серверным веб-сервером - самый простой вариант IMO - использовать wputутилиту.
    • Установите его sudo apt-get install wputпри необходимости.
    • Синтаксис:
      wput [параметры] [файл] ... [URL] ...
    • где URL имеет вид:
      FTP: // [имя пользователя [: пароль] @] имя хоста [: порт] [/ [путь /] [файл]]
  • Пример:

    wput / var / log / syslog ftp: // jack: salty@ftp.website.com/www/mylogs/ 
    
  • Используйте -uпараметр для принудительной загрузки, когда целевой файл уже существует.

  • Смотрите wput --helpили man wputдля многих других вариантов.

Примечание. Размещение пароля в виде открытого текста, как в приведенных выше примерах, в целом крайне небезопасно; Я настоятельно рекомендую создать ограниченную учетную запись FTP на сервере, которая позволяет загружать файлы только в специальный каталог, который вы создаете для загрузки / просмотра журналов.

иш
источник
Привет, большое спасибо за это, это именно то, что мне нужно, я знаю, что это старая ветка, но у меня проблемы с каталогами. Когда я использую wput на удаленном сервере, он всегда создает дерево каталогов для назначения файла, возможно ли просто копировать файлы без создания всего дерева каталогов на удаленном сервере?
Александар
0

Другой полезной и безопасной командой, которую вы можете использовать, будет scpкоманда, которая использует ssh для копирования файлов туда и обратно.

Чтобы использовать это, вы можете использовать seahorse, чтобы создать пару ключей ssh ​​и скопировать открытую часть ключа в ~ / .ssh /. Вы не должны защищать пароль, который вы используете для этого, паролем, поскольку вы не хотите входить в систему, чтобы использовать его. Вероятно, вам следует использовать только ту пару паролей, которую вы используете для этого сценария. Вы используете опцию scp -i identity, чтобы выбрать ее.

Закрытый ключ заменяет открытый текстовый пароль.

Я полагаю, что вы можете поместить вызов скрипта в ваш crontab, если хотите.

Благодаря полезному подходу izx вы должны быть осторожны, чтобы защитить место размещения сценария, чтобы защитить «соленый» пароль для удаленного компьютера от посторонних глаз. При таком подходе вам придется позаботиться о защите частной части пары ключей, поскольку она не защищена паролем.

Джон С. Грубер
источник