Linux学习日志记录001

以前记录的学习日志,做个记录,以资鼓励学习:

#批量自动 增加用户---------------------useradd.sh

#!/bin/bash
#program : this is program for adduser batch

accountfile=accountinfo.txt
cat /dev/null > $accountfile
test -e "accountfile" && rm -f "$accountfile"; touch "$accountfile" || touch "#accountfile"

read -p "Please input your majar : " majar
read -p "Please input your grade : " grade
read -p "Please input your start number :" start_nu

read -p "Please input your the user number :" user_nu
read -p "Please choice passwd stardand: 1) same as username 2) random: " pwd

if [ "majar" = "" ];then

 echo "You should input the majar!!!";exit 1

fi
testing1=`echo $grade | grep [^0-9]`
testing2=`echo $start_nu | grep [^0-9]`
testing3=`echo $user_nu | grep [^0-9]`

if [ "$testing" != "" -o "$testging2" != "" -o "$itesting3" != "" ]; then
 echo "The grade or start number  or user number has include character";exit 1
fi

echo "Generate users ................."
for ((i=$start_nu;i< $(($start_nu + $user_nu));i++))
do
 account=$majar$grade$i
 if [ "$pwd" = "1" ]; then
  password="$account"
 else
  password=""
  test_nu=0
  until [ "$test_nu" = "6" ]
  do
   temp_nu=$(($RANDOM*50/32767+30))
   until [ "$temp_nu" != "60" ]
   do
    temp_nu=$(($RANDOM*50/32767+30))
   done
   temp_ch=`printf "\x$temp_nu"`
   password=$password$temp_ch
   test_nu=$(($test_nu+1))
  done
 fi
 echo "$account":"$password" >> "$accountfile"
done
cat "$accountfile" | cut -d ":" -f1 | xargs -n 1 useradd  #批量增加用户,逐行增加第一个field
chpasswd < "$accountfile"   #批量增加密码,符合格式:win00:123456 
cat "$accountfile"   
pwconv     #避免明码
echo "OK,Successful"

#批量自动 增加用户---------------------useradd.sh

 

#批量自动 删除用户---------------------userdel.sh

#需要与上面指定文件配合操作,文件路径

 

#!/bin/bash
cat "accountinfo.txt" | cut -d : -f1 | xargs -n 1 userdel -r

#需要与上面指定文件配合操作,文件路径

#批量自动 删除用户---------------------userdel.sh

 

 

 

 

#------强制踢出用户

方法一:

[root@Centos ~]# w
 15:20:07 up  5:11,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.128.1    15:03   18.00s  0.42s  0.10s -bash
root     pts/1    192.168.128.1    15:05    0.00s  0.07s  0.00s w
math2000 pts/2    192.168.128.1    15:13    2:39   0.04s  0.04s -bash

 

[root@Centos user]# pkill -kill -t pts/2

 

方法二:

ps -ef

501       4204  4202  0 15:32 ?        00:00:00 sshd: math20001@pts/2

 

kill -9 4204

#------强制踢出用户

 

 

 

 

 

#各种for 循环用法----------------------------------------

 

#!/bim/bash
echo "for((i=1;i<=10;i++));---------------"
for((i=1;i<=10;i++));
do
 echo $(expr $i \* 4)
done

echo "for((i=1;i<=10;i++));---------------"
echo "for a in (seq 10)------------------ "
for a in $(seq 10) 
do
 echo "print a: "$a;
done

echo "for a in (seq 10)------------------ "

echo "ls variable------------------ "
ls=`ls  /u01/study/`
for var in $ls 
do
 echo "print variable : "$var;
done
echo "==========for i in *.sh=============="

for sh in `ls *.sh`
do 

echo "print sh file : $sh"

done
echo "========================="
for v in abc xxx yyy zzz 123 444 
do
 echo "print slef define variable ====" $v;
done

echo "-----------------------"
for x in {5..15} 
do
 echo "print number(5-15)=====" $x
done
echo "======(seq 2 11)=============="

for m in $(seq 2 11) 
do
 echo $m;
done
echo "==========for i in stringchar {1..10}"
for ii in  {1..10}
do
 echo $ii
done

echo "awk==============="
awk 'BEGIN{for(i=1;i<=10;i++)print i}'

#各种for 循环用法----------------------------------------

 

 

 

 

 

#各种for 循环用法2------阶乘----------------------------------

#!/bin/bash

list="We want to test shell script."
for a in $list; do

        echo "print : $a"

done


for i in {1..10}; do
        echo "test : $i"
done
echo "Test awk.........."
awk 'BEGIN{for(i=1;i<10;i++)print i}'
echo "--------------------------------"
 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
#echo "print : $"
echo "----------------"

echo "----------------"
fact=1
for((i=1;i<=10;i++));
do
        # echo $(expr $i \* 4);
        fact=$(expr $fact \* $i);
        echo "check fact value ===" $fact;
done
echo "print sum : " $fact
#各种for 循环用法2------阶乘----------------------------------

 

 

 

#文件比较运算符=======================

-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符
num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]
num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]
num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]

 

#文件比较运算符=======================

 

 

 

#抽取所有的jpg文件图片,然后统一压缩成文档==================

find / -name *.jpg -type f -print | xargs tar -zcvf images.tar.gz

#抽取所有的jpg文件图片,然后统一压缩成文档==================

猜你喜欢

转载自xiaobo.iteye.com/blog/2116894