私はスクリプト作成の初心者ですが、ファイルの場所/home/daniel/text.datにユーザー名のみを含むtext.datというテキストファイルを作成し、スクリプト(addusers.sh)を表示しようとしていますそのテキストファイルから名前を取得し、text.datファイルで指定された新しいユーザーアカウントごとにシステム上に新しいユーザーアカウントを作成します。作成された各ユーザーアカウントについて、/ home/daniel/logs/useraccounts.logファイルに行エントリを追加します。行エントリには、次の情報が含まれます。added | <user account name> | <day and time of creation>
。
これは私がこれまでに持っているものです:
#!/bin/bash
echo “cat text.dat”
newuser= grep /home/daniel/text.dat
Sudo adduser $newuser
#!/bin/bash
LANG=C
myuser="/home/george/text.dat"
# create logs directory
mkdir -p ~/logs
# create log file
touch ~/logs/useraccounts.log
# make sure admin is running the script
[ "$(whoami)" != "root" ] && exec Sudo -- "$0" "$@"
# check if log file is empty, if not don't add a new header
file="~/logs/useraccounts.log"
# Add header in logs file if one isn't already there.
if [[ -s $file ]]
then
# log file header
printf "%s %12s %s %18s %s %32s %s\n" "|" "Added" "|" "User Account Name" "|" "Day and Time of Creation" "|" >> ~/logs/useraccounts.log
printf "%50s\n" "========================================================================" >> ~/logs/useraccounts.log
fi
# remove any whitespaces and blank lines from file input
# before passing it to 'while command'
sed '/^[ \t]*$/d' $myuser | while read -r line
do
name="$line"
adduser --disabled-login --gecos "" $name
# check if user was successfully added
isthere=$(cut -d: -f1 /etc/passwd | grep "$name")
# if user was added then make insert record into log file
if [[ "$isthere" == "$name" ]]
then
printf "%s %10s %s %17s %s %33s %s\n" "|" "Yes" "|" "$name" "|" "$(date)" "|" >> ~/logs/useraccounts.log
else
printf "%s %10s %s %17s %s %33s %s\n" "|" "No" "|" "$name" "|" "$(date)" "|" >> ~/logs/useraccounts.log
fi
done
ここで注意すべき点がいくつかあります。
printf
は、独自のスタイルに合わせて変更する必要があります。