Как автоматизировать отправку файла на FTP-сервер с помощью скрипта?
Мне нужно сделать сценарий, который принимает определенный файл журнала в /var/log/ и помещает это куда-нибудь, где я могу легко получить это (наиболее вероятно веб или сервер FTP, к которому у меня есть доступ). Я не думаю, что хочу использовать почту для отправки. Webdav может быть вариантом. Это просто должно работать без какого-либо взаимодействия с пользователем, и быть довольно быстрым и безболезненным. Какие-либо предложения? (пароль не требуется, в основном)
2 ответа
- Лог файлы в
/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 на сервере, которая позволяет загружать файлы только в специальный каталог, который вы создаете для загрузки / просмотра журналов.
Другой полезной и безопасной командой, которую вы можете использовать, будет scp команда, которая использует ssh для копирования файлов туда и сюда.
Чтобы использовать это, вы можете использовать морской конек, чтобы создать пару ключей ssh и скопировать открытую часть ключа в ~/.ssh/. Вы не должны защищать пароль, который вы используете для этого, паролем, поскольку вы не хотите входить в систему, чтобы использовать его. Возможно, вам следует использовать только ту пару паролей, которую вы используете для этого сценария. Вы используете опцию scp -i identity, чтобы выбрать ее.
Закрытый ключ заменяет открытый текстовый пароль.
Я предполагаю, что вы можете поместить вызов скрипта в ваш crontab, если хотите.
Благодаря полезному подходу izx вы должны быть осторожны, чтобы защитить место размещения сценария, чтобы защитить "соленый" пароль для удаленного компьютера от посторонних глаз. При таком подходе вам нужно будет позаботиться о защите частной части пары ключей, поскольку она не защищена паролем.