linuxShell的簡單練習

  • 用腳本添加10個用戶
#!/bin/bash 2 
  3 for i in {1..10};do
  4         if ! id user$i &> /dev/null ;then
  5 useradd user$i 6                 echo user$i | passwd --stdin user$i &> /dev/null
  7                 echo "add user$i finished"
  8         else
  9                 echo "user$i exists" 
 10         fi
 11 
 12 done
View Code
  • 刪除用戶
1 #!/bin/bash 2 
  3 for I in {1..10};do
  4         if id user$I &> /dev/null ;then
  5                 userdel -r user$I 6                 echo "del user$I finish"
  7         else
  8                 echo "user$I not exists"
  9         fi
 10 done
View Code
  • 添加或刪除用戶
#!/bin/bash 2 
  3 if [ $# -lt 1 ];then
  4         echo "Uage : adminusers ARG"
  5         exit 1
  6 fi
  7 if [ $# -gt 1 ];then
  8         echo "too many argument"
  9         exit 2
 10 fi
 11 
 12 if [ $1 == 'add' ];then
 13         for I in {1..10};do
 14                 if id user$I &> /dev/null;then
 15                         echo "user$I exists"
 16                 else
 17 useradd user$I 18                         echo "user$I" | passwd --stdin user$I &> /dev/null
 19                 fi
 20         done
    elif [ $1 == 'del' ];then
 24         for I in {1..10};do
 25                 if ! id user$I &> /dev/null;then
 26                         echo "user$I not exists"
 27                 else
 28 userdel user$I 29                         echo "user$I deleted"
 30                 fi
 31         done
     else
         echo "Unkown you input you common!"
 32 fi
View Code
  • 更加複雜的添加用戶命令
#!/bin/bash 2 
  3 echo $1 
  4 if [ $1 == '--add' ];then
  5         for I in `echo $2 | sed 's/,/ /g'`;do
  6                 if id $I &> /dev/null;then
  7                         echo "$I exists"
  8                 else
  9 useradd $I 10                         echo $I | passwd --stdin $I &> /dev/null
 11                         echo "$I add finish"
 12                 fi
 13         done
 14 elif [ $1 == '--del' ];then
              for I in `echo $2 | sed 's/,/ /g'`;do
 16                 if id $I &> /dev/null;then
 17                         userdel -r $I 18                         echo "$I deleted"
 19                 else
 20                         echo "$I not exist"
 21                 fi
 22         done
 23 elif [ $1 == '--help' ];then
 24         echo "Usage:--add,--del"
 25 else
 26         echo "Unkown options"
 27 fi
View Code
  • 計算100內的奇數和,偶數和
declare -i ODDSUM declare -i EVENSUM for i in `seq 1 100`;do
        if [ $[$i%2] == 0 ];then let EVENSUM+=$i else let ODDSUM+=$i fi
done
echo "ODDSUM=$ODDSUM"
echo "EVENSUM=$EVENSUM"
View Code
  • 更爲強大的添加刪除幫助
#!/bin/bash # DEBUG=0 ADD=0 DEL=0

for I in `seq 0 $#`; do
  if [ $# -gt 0 ]; then
      case $1 in
      -v|--verbose) DEBUG=1
        shift ;; -h|--help) echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help" exit 0 ;; --add) ADD=1 ADDUSERS=$2
        shift 2 ;; --del) DEL=1 DELUSERS=$2
        shift 2 ;; *) echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help" exit 7 ;; esac
  fi
done

if [ $ADD -eq 1 ]; then
  for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
    if id $USER &> /dev/null; then [ $DEBUG -eq 1 ] && echo "$USER exists."
    else useradd $USER [ $DEBUG -eq 1 ] && echo "Add user $USER finished."
    fi
  done
fi

if [ $DEL -eq 1 ]; then
  for USER in `echo $DELUSERS | sed 's@,@ @g'`; do
    if id $USER &> /dev/null; then userdel -r $USER [ $DEBUG -eq 1 ] && echo "Delete $USER finished."
    else [ $DEBUG -eq 1 ] && echo "$USER not exist."
    fi
  done
fi
View Code
  • 寫一個腳本showlogged.sh,其用法格式爲:
    showlogged.sh -v -c -h|--help
    其中,-h選項只能單獨使用,用於顯示幫助信息;-c選項時,顯示當前系統上登陸的全部用戶數
    ;若是同時使用了-v選項,則既顯示同時登陸的用戶數,又顯示登陸的用戶的相關信息;
#!/bin/bash # declare -i SHOWNUM=0 declare -i SHOWUSERS=0

for I in `seq 1 $#`; do
  if [ $# -gt 0 ]; then
    case $1 in
    -h|--help) echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose" exit 0 ;; -v|--verbose) let SHOWUSERS=1
      shift ;; -c|--count) let SHOWNUM=1
      shift ;; *) echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose" exit 8 ;; esac
  fi
done

if [ $SHOWNUM -eq 1 ]; then
  echo "Logged users: `who | wc -l`."
  if [ $SHOWUSERS -eq 1 ]; then
    echo "They are:"
    who
  fi
fi
View Code
  • 用戶輸入文件,按照指定壓縮格式進行壓縮
#!/bin/bash read -p "input three file to tar :" FILE1 FILE2 FILE3 read -p "select object name:" TARNAME read -p "select Compress type:gzip|bzip2|xz:" COMPRESS case $COMPRESS in
gzip) tar -zcf ${TARNAME}.tar.gz $FILE1 $FILE2 $FILE3 ;; bzip2) tar -jcf ${TARNAME}.tar.bz2 $FILE1 $FILE2 $FILE3 ;; xz) tar -Jcf ${TARNAME}.tar.xz $FILE1 $FILE2 $FILE3 ;; *) echo "Unknow you command" ;; esac
View Code
  • 寫一個腳本:
    1) 顯示一個菜單給用戶:
    d|D) show disk usages.
    m|M) show memory usages.
    s|S) show swap usages.
    *) quit.
    2) 當用戶給定選項後顯示相應的內容;
#!/bin/bash # cat << EOF d|D) show disk usages. m|M) show memory usages. s|S) show swap usages. *) quit. EOF read -p "Your choice: " CHOICE while [ $CHOICE != 'quit' ];do
  case $CHOICE in d|D) echo "Disk usage: "
    df -Ph ;; m|M) echo "Memory usage: "
    free -m | grep "Mem" ;; s|S) echo "Swap usage: "
    free -m | grep "Swap" ;; *) echo "Unknown.." ;; esac read -p "Again, your choice: " CHOICE done
View Code
  • 寫一個腳本:
    1) 顯示一個菜單給用戶:
    d|D) show disk usages.
    m|M) show memory usages.
    s|S) show swap usages.
    *) quit.
    2) 當用戶給定選項後顯示相應的內容;
    當用戶選擇完成,顯示相應信息後,不退出;而讓用戶再一次選擇,再次顯示相應內容;除了用戶使用quit;
#!/bin/bash cat << EOF d|D) show disk usages. m|M) show memory usages. s|S) show swap usages. *) quit. EOF echo -ne "\033[1;34mplease input you choice(input quit to exit):\033[0m" read CHOICE while [ $CHOICE != "quit" ];do
case $CHOICE in d|D) echo -e "\e[1;32mdisk usages\e[0m"
        df -Ph ;; m|M) echo -e "\e[1;32mmemory usages\e[0m"
        free -m | grep "Mem" ;; s|S) echo -e "\e[1;32mswap usages\e[0m"
        free -m | grep "Swap" ;; *) echo "Unkown you input command" ;; esac
        echo -e "\e[1;35mplease input againt command:\e[0m" read CHOICE done
View Code
  • 寫一個腳本(前提:請爲虛擬機新增一塊硬盤,假設它爲/dev/sdb),爲指定的硬盤建立分區:
    一、列出當前系統上全部的磁盤,讓用戶選擇,若是選擇quit則退出腳本;若是用戶選擇錯誤,就讓用戶從新選擇;
    二、當用戶選擇後,提醒用戶確認接下來的操做可能會損壞數據,並請用戶確認;若是用戶選擇y就繼續,n就退出;
    不然,讓用戶從新選擇;
    三、抹除那塊硬盤上的全部分區(提示,抹除全部分區後執行sync命令,並讓腳本睡眠3秒鐘後再分區);
    併爲其建立三個主分區,第一個爲20M,第二個爲512M, 第三個爲128M,且第三個爲swap分區類型;
    (提示:將分區命令經過echo傳送給fdisk便可實現)
#!/bin/bash echo "Initial a disk...."
echo -e "\033[31mWarning:\033[0m" fdisk -l 2> /dev/null | grep -o "^Disk /dev/[sh]d[a-z]" read -p "your chioce:" PARTDISK if [ $PARTDISK == 'quit' ];then
        echo "quit" exit 7
fi

until fdisk -l 2> /dev/null | grep -o "^Disk /dev/[sh]d[a-z]" | grep "^Disk $PARTDISK" &> /dev/null;do read -p "Wrong option,your choice aging:" PARTDISK done read -p "Will destroy all data,continue,are you sure[y|n]: " CHIOCE until [ $CHIOCE == 'y' -o $CHIOCE == 'n' ];do read -p "Will destroy all data,continue: " CHIOCE done

if [ $CHIOCE == 'n' ];then
        echo "Quit" exit 9
else
dd if=/dev/zero of=$PARTDISK bs=512 count=1
sync
sleep 3
echo 'n
p 1

+20M n p 2

+512M n p 3

+128M t 3
82
w'| fdisk $PARTDISK &> /dev/null
 partprobe $PARTDISK sync
sleep 2 mke2fs -j ${PARTDISK}1 &> /dev/null mke2fs -j ${PARTDISK}2 &> /dev/null mkswap ${PARTDISK}3 &> /dev/null
View Code
  • 複製二進制程序及其依賴的庫文件的腳本:
#!/bin/bash # DEST=/mnt/sysroot libcp() { LIBPATH=${1%/*} [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished." } bincp() { CMDPATH=${1%/*} [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do libcp $LIB done } read -p "Your command: " CMD until [ $CMD == 'q' ]; do ! which $CMD &> /dev/null && echo "Wrong command" && read -p "Input again:" CMD && continue COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"` bincp $COMMAND echo "copy $COMMAND finished." read -p "Continue: " CMD done
View Code
相關文章
相關標籤/搜索