Написание этого скрипта для принятия аргументов?

2804
Urda

Как мне перейти к конвертации этого скрипта bash:

mkdir /store/sftp/%USERNAME%  sudo useradd -d /incoming %USERNAME% sudo passwd %USERNAME% ## Password needs to be typed or passed in here sudo usermod -g sftp %USERNAME% sudo usermod -s /bin/false %USERNAME%  sudo chmod 755 /store/sftp/%USERNAME% sudo chown root:root /store/sftp/%USERNAME% sudo mkdir /store/sftp/%USERNAME%/incoming sudo chown %USERNAME%:sftp /store/sftp/%USERNAME%/incoming 

Принять имя пользователя и пароль?

0
Помните, что аргументы командной строки, как правило, могут видеть другие пользователи системы. coneslayer 14 лет назад 1
Да, но это закрытая среда, в которую может войти только администратор, а все остальные пользователи были «заключены в тюрьму» для целей SFTP. Urda 14 лет назад 0

1 ответ на вопрос

5
petersohn

Во-первых, вы должны избегать такого количества sudoзвонков. Вместо этого вы должны запустить скрипт с sudo. Окончательная версия будет выглядеть так:

#!/bin/bash  # first check for root user if [ ! $UID -eq 0 ]; then echo "This script must be run as root." exit 1 fi  # check if the user provided an argument if [ -z $1 ]; then echo "No username provided. Usage: $0 username" exit 2 fi   username=$1 # set the first argument as the username  mkdir "/store/sftp/$username"  useradd -d /incoming "$username" passwd "$username" ## Password needs to be typed or passed in here usermod -g sftp "$username" usermod -s /bin/false "$username"  chmod 755 "/store/sftp/$username" mkdir "/store/sftp/$username/incoming" chown "$username:sftp" "/store/sftp/$username/incoming" 

Заключение в кавычки необходимо, потому что имя пользователя может содержать пробелы (но, конечно, это не так).

Отредактировано для работы.

Работает отлично! В любом случае, чтобы остановить запуск сценария, если не указан пользователь? Urda 14 лет назад 0
`if [-z $ 1]; затем echo "Имя пользователя не указано. Использование: $ 0 username"; выход 2; fi` Dennis Williamson 14 лет назад 2
`echo" blah "> & 2`, чтобы получить дополнительные очки за правильное использование` stderr`. grawity 14 лет назад 1

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