顯示具有 Programs-Bash Shell 標籤的文章。 顯示所有文章
顯示具有 Programs-Bash Shell 標籤的文章。 顯示所有文章

2014年12月2日 星期二

一次建立20個使用者帳號

利用 Bash / Shell Script 來一次完成建置 20 個使用者帳號,
且要給每個使用者加入不同的登入密碼,
並且強制要求第一次登入後,要修改使用者密碼。

設定群組:s100
建立帳號:s100a000 ~ s100a020
設置密碼:`date +%N` 來產生亂數

vi buildAccount.sh
# !/bin/bash
# 2014/12/02    Author:AaronHuang
# Create 20 user
# account:   s100a000 ~ s100a020,
# usergroup: s100

# Setting Parameter
GROUP=s100
USER_HEAD=s100a0

# Check root
if [ `whoami` != "root" ]
then
        echo "===== Permision Deny ====="
        echo "You need login root."
        echo
        exit 0
fi

# Create group
groupadd s100

# Create account 0~9
for i in `seq 0 9`
do
        USER_NAME=${USER_HEAD}0$i
        # Setting account password is ramdon
        PASSWD=`date +%N`
        echo "Creating User 0$i: $USER_NAME"
        echo "Set Password: $PASSWD"
        useradd -m -s /bin/bash -g $GROUP $USER_NAME
        echo $USER_NAME:$PASSWD | chpasswd
        chage -d 0 $USER_NAME
done

# Create account 10~20
for i in `seq 10 20`
do
        USER_NAME=${USER_HEAD}$i
        # Setting account password is ramdon
        PASSWD=`date +%N`
        echo "Creating User $i: $USER_NAME"
        echo "Set Password: $PASSWD"
        useradd -m -s /bin/bash -g $GROUP $USER_NAME
        echo $USER_NAME:$PASSWD | chpasswd
        chage -d 0 $USER_NAME
done



刪除剛剛建的群組:s100,及使用者s100a000 ~ s100a020

vi deleteAccount.sh
# !/bin/bash
# 2014/12/02    Author:Kai-Lin Liao
# Delete 20 user 
# account:   s100a000 ~ s100a020,

# Setting Parameter
GROUP=s100
USER_HEAD=s100a0

# Check root
if [ `whoami` != "root" ]
then
        echo "===== Permision Deny ====="
        echo "You need login root."
        echo
        exit 0
fi


# Create account 0~9
for i in `seq 0 9`
do
        USER_NAME=${USER_HEAD}0$i
        echo "Delete User 0$i: $USER_NAME"
        userdel -r $USER_NAME
done

# Create account 10~20
for i in `seq 10 20`
do
        USER_NAME=${USER_HEAD}$i
        echo "Delete User $i: $USER_NAME"
        userdel -r $USER_NAME
done

# Delete group
groupdel $GROUP

2014年10月11日 星期六

半自動備份檔案

這是我寫來備份一些辛苦調好的設定檔跟重要資料用。

說明:使用需要 ROOT 權限,需要裝有 xz-utils 套件,
要使用需要修改幾個地方: 

09 USER = 這邊改你自己的一般使用者帳號。

10 SAVE_AS = 要先建立好要存放備份檔的地方,
我個人是放 /bak_dir 下,再上傳到雲端空間。


最後是註解圍起來的地方「Backup List」,請自訂你想要備份的檔案、目錄。
vi Backup_data.sh
#!/bin/bash
# 2014/06/24 aaronhuang
# Backup My data.

# parameter setting
TIME=`date +"%Y%m%d"`

# Use Setting
USER=youUsserName
SAVE_AS=/bak_dir

BAK_DIR=backup_$TIME
BAK_TARGET=$SAVE_AS/$BAK_DIR

# check account
if [ ! `whoami` == root ];then
        echo "Permision Deny, you're no root."
        exit 0
fi

# check directory
if [ -e "$BAK_TARGET.tar.xz" ];then
        echo "Directory exist!" 
        exit 0
fi

# build directory
mkdir $BAK_TARGET
mkdir -p $BAK_TARGET/root_dir
mkdir -p $BAK_TARGET/${USER}_dir

##############################################################
## Backup List
# system backup list
rsync -av /etc $BAK_TARGET/root_dir

# root backup list
rsync -av /root/.bashrc $BAK_TARGET/root_dir
rsync -av /root/.vimrc $BAK_TARGET/root_dir
rsync -av /root/* $BAK_TARGET/root_dir

# user backup list
rsync -av /home/$USER/.bashrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.conkyrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.vimrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.xinitrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.asoundrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/bin $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/images $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Notes $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Other_work $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/sdl $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Script $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Eclipse $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Java $BAK_TARGET/${USER}_dir
#rsync -av /home/$USER/driver $BAK_TARGET/${USER}_dir
##############################################################

# compress
cd $SAVE_AS;tar -c --xz -f $BAK_DIR.tar.xz $BAK_DIR

# remove dir
rm -r $BAK_TARGET

# permision change
chown $USER:$USER $BAK_TARGET.tar.xz

最後加入可執行權限,放到執行檔目錄下:
chmod a+x Backup_data.sh
mv Backup_data.sh /usr/local/bin/

使用方法,直接下 Backup_data.sh 指令。






2014年7月24日 星期四

Linux Icewm 隨機自動換桌布

筆者使用 Debian Linux 的 GUI 為 icewm,下面為 shell script。

此 Shell Script 要修改幾個簡單變數,就可以使用了:
1. IMG_POSTION ,在06行,為你自己的桌圖目錄位置。
2. IMG_TYPE*.jpg 要修改, 在 12 行,該部份為你自己所擁的圖片副檔名,若只有 JPG 改 *.jpg,若有多種副檔名 (例如 JPG、PNG) 就改為 *.{jpg, png}。


  • 自動更換桌面,首先先安裝有 hsetroot,桌面布圖指令
sudo apt-get update && apt-get install hsetroot

  • 接下來,寫一個可以自動換圖的 Shell Script 
vi WallpaperChange.sh


  • My code
#!/bin/bash
# 2014/04/19    Author: AaronHunag
# Auto Change Wallpaper

# Parameter
IMG_POSITION=/home/lin/images/Wallpaper

# Change Director 
cd $IMG_POSITION

# Parameter
IMG_TYPE=`find *.jpg`
#IMG_TYPE=`find *.{jpg,png}`
IMG_AMOUNT=`find $IMG_TYPE -type f | wc -l`

# Test World
#echo "Image Type: $IMG_TYPE"
#echo "Wallpaper Postion: $IMG_POSITION, File Amount: $IMG_AMOUNT"

# Build Picture List
for N in $(seq 1 $IMG_AMOUNT)
do
        GET_IMG=`find $IMG_TYPE | sort | sed -n ${N}p`
        DeskPicture[${N}]=$GET_IMG
done

# Create RANDOM
LOW=1
HIGH=$IMG_AMOUNT
COUNT=$(($LOW + $RANDOM % $HIGH))
#echo $COUNT 

# Seting Wallpaper
echo "Wallpaper Change: ${DeskPicture[$COUNT]}"
hsetroot -fill $IMG_POSITION/${DeskPicture[$COUNT]}&


  • 測試、記得加入 x 權限
chmod +x WallpaperChange.sh
./WallpaperChange.sh 2> /dev/null