Escrevendo este script Bash para aceitar Argumentos?

0

Como eu faria para converter este script 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

Para aceitar um nome de usuário e uma senha?

    
por Urda 07.04.2010 / 17:39

1 resposta

5

Primeiro, você deve evitar as muitas chamadas sudo . Em vez disso, você deve executar o script com sudo . A versão final ficaria assim:

#!/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"

As citações são necessárias porque o nome do usuário pode conter espaços (mas, com certeza, isso não acontece).

Editado para trabalhar.

    
por 07.04.2010 / 17:51