if 语句
if then elif fi
if then else fi
#!/bin/bash
read -p "请输入两个数" n1 n2
expr $n1 + $n2 + 1
n3=0
if [[ $? == 0 ]]
then
echo "input ok"
expr n3=$(($n1+$n2))
else
echo "input error"
fi
if [ $n1 -gt $n2 ]
#if test $n1 -gt $n2
then
echo "第一个数大"
else
echo "第二个数大"
fi
echo $n3
for 循环
read -p "please in put a num" num
sum=0
for((i=1;i<=$num;i+=1))
do
sum=$(($sum+$i))
done
echo $sum
sum1=0
for i in `seq 1 100`
do
sum1=$(($i+$sum1))
done
echo $sum1
批量創建用戶
for n in `seq 10`
do
useradd olddog$n
pass=openssl rand -base64 10
echo -e "olddog$n:\t $pass" >>/etc/passwd.txt
echo $pass|passwd --stdin
done
for n in `seq 11 15`
do
id olddog$n
if [ $? -ne 0 ]
then
useradd olddog$n
pass=openssl rand -base64 10
echo -e "olddog$n:\t $pass" >>/etc/Passwd.txt
fi
done
chapasswd<Passwd.txt
批量查詢ip段是否通10.0.0.0/24
for n in {1..254}
do
if `ping -c 2 -w 3 10.0.0.$n &>>/dev/null`
then
echo "10.0.0.$n is up"
else
echo "10.0.0.$n is down"
fi
done
case语句
read -p "请输入选项" l
case $l in
1)
echo 1
;;
2)
echo 2
;;
*)
echo "hha"
;;
esac
while 循环
read -p "请输入一个数字" line
while [ $line -gt 0 ]
do
line=$(($line-1))
echo $line
done
awk 数组
#!/bin/bash
awk '{S[$1]++}END{for(key in S) print key,S[key]}' < 1.log
[root@localhost logs]# sh 3.sh
192.168.1.10 5
192.168.1.11 1
[root@localhost logs]# cat 1.log
192.168.1.10
192.168.1.10
192.168.1.10
192.168.1.10
192.168.1.10
192.168.1.11
${olddog}、${#olddog}、${olddog:offset:length}、${olddog#word}、${olddog##word}、${olddog%word}、${olddog%%word}、${olddog/pattern/string}、${olddog//pattern/string}、${olddog:-word}
${olddog} 取值
${#olddog} 求长度
${olddog:offset:length} 取length+1之后的字符串
${olddog#word} 从头开始删除第一个worl
${olddog##word}从头开始删除所有word
${olddog%word}从末尾删除第一个world
${olddog%%word} 从末尾开始删除所有word
${olddog/pattern/string} 替换匹配的字符串
${olddog:-word} olddog为空时word赋值给最左边接收的变量
随机密码
l长度 s 特殊字符 C 大写字符 c小写字符 -d 数字
mkpasswd -l 10 -d 6 -c 6 -C 3 -s 2
openssl rand -base64 10
date +%s%N
截取10个数字 cut -c 1-10
[root@localhost logs]# date +%s%N|cut -c 1-10
1602077263
sort排序 r反向排序 n对数字排序
[root@localhost logs]# cat 1.txt|sort -rn
34
23
3
1
[root@localhost logs]# cat 1.txt|sort -n
1
3
23
34
函数:
function name {
echo "hahah"
}
name
创建随机数字替换为字母的10个文件
path=/olddog
[ -d $path ] || mkdir $path
for n in {1..10}
do
random=`echo "OLDDOG$RANDOM"|md5sum|tr "0-9" "m-z"|cut -c 2-11`
touch $path/${random}_olddog.html
done
文件批量改名file=aasdqwe_olddog.html
echo ${file/olddog.html/oldmaledog.HTML/}
for file in `ls /olddog/*.html`
do
mv file `echo ${file/olddog.html/oldmaledog.HTML/}`
done
ls /oldboy/*.HTML|awk -F "oldgirl.HTML" '{print "mv",$0,$1"olddog.html"}'|bash
检测网络是否正常
. /etc/init.d/functions
URL=(
https://www.baidu.com
https://luffycity.com
)
CheckUrl(){
wget --spider -t 2 -T 5 -o /dev/null -q $1
if [ $? -eq 0 ]
then
echo "is ok"
fi
}
DearUrl(){
for url in ${URL[*]}
do
CheckUrl $url
done
}
main(){
while true
do
DearUrl
sleep2
done
}
awk '{$S[$1]++}END{for (key in S) print S[key],key}' access.log|sort -rn>/tmp/ip.log
while read line
do
ip=`echo $line|awk '{print $2}'`
count=`echo $line|awk '{print $1}'`
if [ $count -gt 35 -a `grep "$ip" /tmp/drop.log|wc -l` -lt 1]
then
iptables -IINPUT -s $ip -j DROP &&\
echo "$ip" >>/tmp/drop.log
else
echo "$ip">>/tmp/accept.log
done</tmp/1.log