Оказывается, adduser
отстой, если вы попытаетесь использовать его в автономном скрипте. В итоге я использовал старый добрый useradd
, который полностью исправил мой сценарий ниже.
#!/bin/bash
PASSWORD="somepassword"
USERNAME="default"
if id -u "$USERNAME" >/dev/null 2>&1; then
userdel -r -f $USERNAME
useradd -m -p $PASSWORD -s /bin/bash $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
else
useradd -m -p $PASSWORD -s /bin/bash $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
fi
Можно использовать протокол HTTP для загрузки файлов на сервер, а также использовать curl
для этого из командной строки.
Но для того, чтобы это работало, вам нужен HTTP-сервер для поддержки загрузки файлов (либо изначально, либо через приложение, работающее на этом сервере ), чтобы эта функция была включена и настроена, и обычно вам нужна некоторая форма аутентификация/авторизация для предотвращения неожиданных загрузок на ваш сервер. Вам также может понадобиться иметь дело с разрешениями для файлов и каталогов, чтобы разрешить веб-серверу или веб-приложению записывать в локальную файловую систему, когда он получает загруженный файл.
Если это все на месте, у вас есть два способа использовать curl
для загрузки файлов по HTTP:
Это родной «глагол» для загрузки файлов. Одним из преимуществ является то, что URL-адрес, который вы используете для загрузки, совпадает с URL-адресом, по которому загруженный файл должен быть доступен после загрузки. Но, как упоминалось выше, вам нужно, чтобы ваш сервер поддерживал загрузку файлов с использованием этого метода, чтобы это работало.
Если это возможно,используйте следующий синтаксис:
cat tmp.txt | curl -T - domain.com/file-to-store
Это способ вызвать приложение, работающее на веб-сервере, которое может реализовывать загрузку файлов... В этом случае вам нужно вызвать URL-адрес самого приложения, поэтому обычно вам нужно закодировать ожидаемую цель URL-адрес или имя файла в качестве отдельного аргумента («поле» ), передаваемое в POST-запросе.
Одним из преимуществ этого подхода является то, что как правило, проще установить и настроить приложение для загрузки файлов на сервер (существует множество простых решений, использующих для этого протокол CGI ), чем настройка веб-сервер для приема запросов PUT.
Если это опция, используйте такой синтаксис, как:
curl -F file=@tmp.txt -F url=/file-to-store domain.com/fileupload.cgi
Обратите внимание, что приведенный выше пример не является буквальным, а является просто иллюстрацией гипотетического приложения для загрузки файлов... Фактические детали будут зависеть от того, какое приложение для загрузки файлов вы решите использовать и какое оно будет доступно. Смысл этого примера в том, чтобы проиллюстрировать использование аргумента curl -F
и использование @
для включения содержимого локального файла при его использовании.
Подробную информацию см. в руководстве curl , особенно в разделе «Загрузка», в котором описывается метод PUT. В нем также упоминается использование POST в качестве опции.