目录
- [root@localhost2 ~]#vim chengfabiao.sh
- #!/bin/bash
- for ((i=1;i<=9;i++))
- do
- for ((j=1;j<=i;j++))
- do
- m=$[ $i * $j ] #乘积值赋给m
- echo -ne "$i*$j=${m} " #指定输出样式
- done
- echo -e '\n' #每行输出完后换行
- done
-
-
- [root@localhost2 ~]#bash chengfabiao.sh
- 1*1=1
-
- 2*1=2 2*2=4
-
- 3*1=3 3*2=6 3*3=9
-
- 4*1=4 4*2=8 4*3=12 4*4=16
-
- 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
-
- 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
-
- 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
-
- 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
-
- 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
-
- [root@localhost2 ~]#vim numchange.sh
- #依次减数法
- #!/bin/bash
- read -p "请输入一个0~255的整数:" num
- for i in 128 64 32 16 8 4 2 1
- do
- NUM=$[num - i]
- if [ $NUM -lt 0 ];then
- echo -n 0
- else
- echo -n 1
- num=$[num - i]
- fi
- done
- echo ""
-
- #取余倒排法
- #!/bin/bash
- sum=''
- read -p "请输入一个0~255的整数:" num
- for i in {1..8}
- do
- NUM=$[num % 2]
- sum=$NUM$sum
- let num/=2
-
- done
- echo $sum
-
- [root@localhost2 ~]#bash numchange.sh
- 请输入一个0~255的整数:231
- 11100111
- [root@localhost2 ~]#bash numchange.sh
- 请输入一个0~255的整数:54
- 00110110
- [root@localhost2 ~]#bash numchange.sh
- 请输入一个0~255的整数:83
- 01010011
- [root@localhost2 ~]#vim changeip.sh
- #!/bin/bash
- read -p "请输入您的ip地址:" ip
- b=0
- IFSb=$IFS
- IFS=$IFS'.' #为$IFS添加字段分隔符'.'
- for i in `echo $ip`
- do
- for a in 128 64 32 16 8 4 2 1 #依次减数法将十进制转二进制
- do
- NUM=$[$i - $a]
- if [ $NUM -lt 0 ];then
- echo -n 0
- else
- echo -n 1
- i=$[$i - $a]
- fi
- done
- let b++
- if [ $b -eq 4 ];then #第四次循环不输出'.',否则格式不对
- break
- fi
- echo -n '.'
- done
- echo " "
-
- [root@localhost2 ~]#bash changeip.sh
- 请输入您的ip地址:192.156.34.166
- 11000000.10011100.00100010.10100110
-
- [root@localhost2 ~]#bash changeip.sh
- 请输入您的ip地址:192.168.13.11
- 11000000.10101000.00001101.00001011
- [root@localhost2 ~]#vim checkalivedhosts.sh
- #!/bin/bash
- for ip in 192.168.116.{1..254} #指定ip范围
- do
- {
- ping -c 3 -i 0.5 -w 2 $ip &> /dev/null #每0.5秒ping目标主机3个包
- if [ $? -eq 0 ];then -- 判断上条命令执行结果
- echo "$ip is online" > /root/alive_hosts.txt #执行成功将在线的主机名重定向输入文件
- else
- echo "$ip is outline"
- fi
- }& #将命令程序段放入后台执行(实现多线程,加快执行效率)
- done
-
- wait
- echo "存活主机统计:"
- cat /root/alive_hosts.txt #将存活主机ip统计显示出来
-
- [root@localhost2 ~]#bash checkalivedhosts.sh
- 192.168.116.14 is outline 192.168.116.3 is outline 192.168.116.5 is outline
- 192.168.116.11 is outline 192.168.116.7 is outline 192.168.116.6 is outline
- 192.168.116.10 is outline 192.168.116.15 is outline 192.168.116.9 is outline
- 192.168.116.17 is outline 192.168.116.18 is outline 192.168.116.16 is outline
- 192.168.116.19 is outline 192.168.116.4 is outline 192.168.116.21 is outline
- ... #输出结果太多,这里省略
- 192.168.116.242 is outline 192.168.116.241 is outline 192.168.116.243 is outline
- 192.168.116.244 is outline 192.168.116.245 is outline 192.168.116.247 is outline
- 192.168.116.246 is outline 192.168.116.248 is outline 192.168.116.249 is outline
- 192.168.116.251 is outline 192.168.116.252 is outline 192.168.116.250 is outline
- 192.168.116.254 is outline 192.168.116.253 is outline
- 存活主机统计:
- 192.168.116.20 is online
- #创建 users.txt 用户列表文件
- [root@localhost1 ~]#cd /data
- [root@localhost1 data]#vim users.txt
- #需要创建的用户列表
- zhangsan
- lisi
- wangwu
- zhaoliu
- qianqi
- zhuba
-
- #编写 checkuser.sh 脚本
- [root@localhost1 data]#vim checkuser.sh
- #!/bin/bash
- #用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码;若该用户不存在,则建立用户并提示用户设置密码
-
- for user in `cat /data/users.txt` #指定循环范围(用户列表文件users.txt)
- do
- grep "^$user" /etc/passwd &> /dev/null #判断用户是否存在
- if [ $? -eq 0 ];then #用户存在
- echo "用户${user}已存在!"
-
- #检查存在的用户密码是否为空
- checkpd=`cat /etc/shadow | grep "^${user}" | awk -F: '{print $2}'`
- if [ $checkpd = "!!" ] || [ -z ${checkpd} ];then #存在用户密码为空
- while true #一直循环提示用户输入密码
- do
- read -p "用户${user}尚未输入密码,请创建密码:" passwd1
- read -p "再次输入确认密码:" passwd2
- if [ ${passwd1} = ${passwd2} ];then #只有当两次密码相同时,设置密码并退出循环
- echo ${passwd1} | passwd --stdin $user
- break
- fi
- done
- fi
- else #用户不存在
- useradd ${user} #创建用户
- echo "用户${user}不存在,已为您创建${user}!"
- while true #一直循环提示用户输入密码
- do
- read -p "用户${user}尚未输入密码,请创建密码:" passwd3
- read -p "再次输入确认密码:" passwd4
- if [ ${passwd3} = ${passwd4} ];then #只有当两次密码相同时,设置密码并退出循环
- echo ${passwd3} | passwd --stdin $user
- break
- fi
- done
- fi
- done
-
- #测试 checkuser.sh
- [root@localhost1 data]#bash checkuser.sh
- #zhangsan存在且有密码
- 用户zhangsan已存在!
-
- #lisi存在但无密码,需要设置
- 用户lisi已存在!
- 用户lisi尚未输入密码,请创建密码:123123
- 再次输入确认密码:123123
- 更改用户 lisi 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
-
- #wangwu存在但无密码,需要设置
- 用户wangwu已存在!
- 用户wangwu尚未输入密码,请创建密码:123123
- 再次输入确认密码:123123
- 更改用户 wangwu 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
-
- #zhaoliu存在且有密码
- 用户zhaoliu已存在!
-
- #qianqi不存在且无密码,需要设置
- 用户qianqi不存在,已为您创建qianqi!
- 用户qianqi尚未输入密码,请创建密码:123123
- 再次输入确认密码:123123
- 更改用户 qianqi 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
-
- #zhuba不存在且无密码,需要设置
- 用户zhuba不存在,已为您创建zhuba!
- 用户zhuba尚未输入密码,请创建密码:123123
- 再次输入确认密码:123123
- 更改用户 zhuba 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
- [root@localhost1 ~]#vim checkhttpd.sh
- #!/bin/bash
- systemctl is-active httpd &> /dev/null #判断httpd服务是否开启
- if [ $? -eq 0 ];then
- echo 'httpd is active!' #如果开启输出已开启
- else #如果未开启进行如下操作
- rpm -q httpd &> /dev/null #检查httpd是否下载
- if [ $? -ne 0 ];then #如果未下载,进行以下操作
- yum -y install httpd &> /dev/null #联网且有在线源可直接下载,如果不行,进行以下操作
- df -hT | grep /dev/sr0 &> /dev/null #检查光盘是否挂载
- if [ $? -ne 0 ];then
- mount /dev/sr0 /mnt &>/dev/null #未挂载则挂载
- fi
- yum -y install httpd &> /dev/null #本地镜像源下载(需要有本地yum源配置文件)
- fi
- systemctl start httpd &> /dev/null #启动httpd服务
- echo 'httpd is starting...'
- if systemctl is-active httpd &> /dev/null #再次判断httpd服务是否开启
- then
- echo 'httpd was stated succesfully!' #如果开启输出启动成功
- else
- echo 'fail to start httpd!' #如果关闭输出启动失败
- fi
- fi
-
- [root@localhost1 ~]#bash checkhttpd.sh
- httpd is starting...
- httpd was stated succesfully!
- [root@localhost1 ~]#vim judgerace.sh
- #!/bin/bash
- #提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;
- #进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
-
- read -p "请输入您的100米赛跑成绩(s):" time
- if [ $time -gt 0 -a $time -le 10 ] ;then
- echo "恭喜您,进入选拔赛!"
- read -p "请输入您的性别(男/女):" sex
- case $sex in
- 男)
- echo "请您进入男生组!"
- ;;
- 女)
- echo "请你进入女生组!"
- ;;
- *)
- echo "输入有误,请重新输入!"
- ;;
- esac
- elif [ $time -gt 10 ];then
- echo "很遗憾,您没有进入选拔赛!"
- else
- echo "输入有误,请重新输入!"
- fi
-
- [root@localhost1 ~]#bash judgerace.sh
- 请输入您的100米赛跑成绩(s):8
- 恭喜您,进入选拔赛!
- 请输入您的性别(男/女):男
- 请您进入男生组!
- [root@localhost1 data]#bash guessprice.sh
- #!/bin/bash
- #获取0~999的随机数
- num=$[RANDOM % 1000]
- i=1 #定义i为循环条件
- a=0 #定义a为猜测次数变量
- while [ $i -eq 1 ]
- do
- read -p "请输入你猜测的价格(0~999):" price
- if [ $price -eq $num ];then
- echo "恭喜你猜对了!"
- let a++
- let i+=1
- elif [ $price -gt $num ];then
- echo "你猜高了,请继续!"
- let a++
- elif [ $price -lt $num ];then
- echo "你猜低了,请继续!"
- let a++
- fi
- done
- echo "你一共猜了${a}次。"
-
- [root@localhost1 data]#bash guessprice.sh
- 请输入你猜测的价格(0~999):600
- 你猜高了,请继续!
- 请输入你猜测的价格(0~999):400
- 你猜高了,请继续!
- 请输入你猜测的价格(0~999):200
- 你猜高了,请继续!
- 请输入你猜测的价格(0~999):100
- 你猜低了,请继续!
- 请输入你猜测的价格(0~999):150
- 你猜高了,请继续!
- 请输入你猜测的价格(0~999):120
- 你猜低了,请继续!
- 请输入你猜测的价格(0~999):134
- 你猜低了,请继续!
- 请输入你猜测的价格(0~999):140
- 你猜高了,请继续!
- 请输入你猜测的价格(0~999):135
- 你猜低了,请继续!
- 请输入你猜测的价格(0~999):137
- 你猜高了,请继续!
- 请输入你猜测的价格(0~999):136
- 恭喜你猜对了!
- 你一共猜了11次。
- [root@localhost1 data]#vim randompasswd.sh
- #!/bin/bash
- #指定随机字符的范围
- STR="ABCDRFGHIJKLMNOPQRSTUVWXTZabcdrfghijklmnopqrstuvwxtz0123456789"
- sum=''
- for ((i=1; i<=6; i++)) #指定循环6次(实现输出6位字符)
- do
- length=${#STR} #获取字符范围的长度
- num=$[RANDOM % length] #在指定长度中生成随机数(作为取字符的索引)
- value=${STR:num:1} #截取指定索引字符
- sum+=$value #字符追加到sum变量中
- done
- echo $sum #输出$sum(即6位随机密码)
-
- [root@localhost1 data]#bash randompasswd.sh
- 3qCkpA
- [root@localhost1 data]#bash randompasswd.sh
- CtdDOG
- [root@localhost1 data]#bash randompasswd.sh
- nTuF0G
- [root@localhost2 ~]#vim findxfile.sh
- #!/bin/bash
- IFSb=$IFS
- IFS=$IFS':' #为$IFS添加字符分隔符'.'
- for i in `echo $PATH`
- do
- echo ---------${i}---------- #每个文件用此条分割
- find $i -type f -a -executable #查找可执行文件
- done
-
- [root@localhost2 ~]#bash findxfile.sh
- ---------/usr/local/bin----------
- ---------/usr/local/sbin----------
- ---------/usr/bin----------
- /usr/bin/cpio
- /usr/bin/less
- /usr/bin/catchsegv
- /usr/bin/gencat
- /usr/bin/getent
- /usr/bin/plistutil
- ... #文件太多这里省略