以前记录的学习日志,做个记录,以资鼓励学习:
#批量自动 增加用户---------------------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文件图片,然后统一压缩成文档==================