zoukankan      html  css  js  c++  java
  • shell脚本——作业二(循环作业)

    1、通过位置变量创建linux系统账户及密码

    $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数

           #!/bin/bash

           #创建用户与密码

          

           declare -i c=0

           if [ -z $1 ] || [ -z $2 ];then

                   echo "请输入用户名和密码!"

           fi

           for i in $(cat /etc/passwd|cut -d: -f1);do

                   if [ $1 == $i ];then

                           let c=1

                   fi

           done

           if [ $c -ne 1 ];then

                   useradd $1

                   `echo $2|passwd $1 --stdin &>/dev/null`

                   if [ $? -eq 0 ];then

                           echo "添加成功"

                   fi

           else

                   echo "此用户已存在"

           fi

    2、每周5使用tar命令备份/var/log 下的所有日志文件,防止文件覆盖

           #!/bin/bash

           #每周五备份/var/log下的所有日志文件

          

           tar -zcf log-`date +%Y%m%d`.tar.gz /var/log

           [root@sv7 ~]# crontab -e

           0 3 5 /root/tar.sh

          

    3、

     脚本生成一个 100 以内的随机数值,提示用户猜数字,更具用户的输入,提示用户猜对了,猜打了或猜小了,直至用户猜对脚本结束。

           #!/bin/bash

          

           num=$(($RANDOM%100+1))

           c=0

          

           while [ $c -lt 5 ]

           do

                   read -p "输入你猜的数>>" mynum

                   if [ $mynum -eq $num ];then

                           echo "你猜对了!!"

                           break

                   elif [ $mynum -gt $num ];then

                           echo "你猜大了!!请继续!!"

          

                   elif [ $mynum -lt $num ];then

                           echo "你猜小了!!请继续!!"

                   fi

                   c=$(($c+1))

           done

           if [ $c -eq 5 ];then

                   echo "随机数为$num"

           fi

          

    4、依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

           #!/bin/bash

          

           read -p "请输入第一个数>>" a

           read -p "请输入第二个数>>" b

           read -p "请输入第三个数>>" c

           if [ $a -gt $b ];then

                   if [ $b -gt $c ];then

                           echo "$a>$b>$c"

                   elif [ $b -lt $c ];then

                           if [ $a -gt $c ];then

                                   echo "$a>$c>$b"

                           elif [ $a -lt $c ];then

                                   echo "$c>$a>$b"

                           fi

                   fi

           elif [ $a -lt $b ];then

                   if [ $b -gt $c ];then

                           if [ $a -gt $c ];then

                                   echo "$b>$a>$c"

                           elif [$a -lt $c ];then

                                   echo "$b>$c>$a"

                           fi

                   elif [ $b -lt $c ];then

                           echo "$c>$b>$a"

                   fi

           fi

    5、编写脚本,实现人机《石头,剪刀,布》游戏

           #!/bin/bash

          

           j=1

           while [ $j -le 5 ]

           do

                   echo "1.石头 2.剪刀 3.布 "

                   read -p "请出拳1-3:" i

                   if [ $i -ne 1 -o $i -ne 2 -o $i -ne 3 ];then

                           echo "请输入1-3之间的数"

                   fi

                   game=(石头 剪刀 布)

                   num=$((RANDOM%3))

                   echo computer=${game[$num]}

                   case $i in

                   1)

                           if [ 0 -eq $num ];then

                           echo "平局"

                           elif [ 1 -eq $num ];then

                                   echo "你输了"

                           else

                                   echo "你赢了"

                           fi;;

                   2)

                           if [ 1 -eq $num ];then

                                   echo "平局"

                           elif [ 0 -eq $num ];then

                                   echo "你输了"

                           else

                                   echo "你赢了"

                           fi;;

                   3)

                           if [ 2 -eq $num ];then

                                   echo "平局"

                           elif [ 1 -eq $num ];then

                                   echo "你输了"

                           else

                                   echo "你赢了"

                           fi;;

                   esac

                   let j++

           done

          

    6、编写脚本测试192.168.4.0/24整个网段中那些主机处于开机状态,那些主机处于关机状态(for 版本)

           #!/bin/bash

          

           declare -i sum=0

           declare -i nsum=0

           for i in $(seq 1 254);do

                   ping -c 1 -w 1 10.6.12.$i &> /dev/null

                   if [ $? -eq 0 ];then

                           let sum++

                           echo "10.6.12.$i 开机 "

                   else

                           let nsum++

                           echo "10.6.12.$i 关机"

                   fi

           done

          

           echo "总共有$sum 台电脑开机!"

           echo "总共有$nsum 台电脑关机!" 

    7、9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表)

           #!/bin/bash

          

           for i in {1..9};do

                   for j in $(seq $i);do

                           echo -ne "$i*$j=$((i*j)) "

                   done

                   echo ''

           done

    8、使用死循环实时显示 eth0 网卡发送的数据包流量

           #!/bin/bash

           while :

           do

           echo “本地网卡 eth0 流量信息如下:”

               ifconfig eth0 | grep "RX pack" | awk ‘{print $5}‘

               ifconfig eth0 | grep "TX pack" | awk ‘{print $5}‘

               sleep 1

           done

    9、使用user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码

    脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户信息

           #!/bin/bash

           c=`wc -l user.txt|cut -d' ' -f1`

           for i in $(seq $c);do

                   username=`head -$i user.txt|tail -1 |cut -f1`

                   passwd=`head -$i user.txt|tail -1 |cut -f2`

                   c=0

                   for j in $(cat /etc/passwd|cut -d: -f1);do

                           if [ $username == $j ];then

                                   echo "$username 已经存在无法添加"

                                   c=1

                           fi

                   done

                   if [ $c -eq 0 ];then

                           `useradd $username &>/dev/null`

                           `echo $passwd|passwd $username --stdin &>/dev/null`

                           echo "添加成功"

                   fi

          

           done

    10、编写批量修改扩展名脚本,如批量将 txt 文件修改为doc文件

    执行脚本时,需要给脚本添加位置参数

    脚本名 txt doc (可以将 txt 的扩展名修改为doc)

    脚本名 doc jpg(可以将doc 的扩展名修改为jpg)

           #!/bin/bash

           # Author: Sean Martin

           # Blog: https://www.cnblogs.com/shy13138/

           # Time: 2019-08-16 10:24:42

           # Name: houzhui.sh

           # Version: v1.0

           read -p "输入旧的后缀名:" a

           read -p "输入新的后缀名:" b

           read -p "输入文件夹:" d

           cd $d

           for i in $(ls $d | grep .$a)

                   do

                   name=$(ls $i | cut -d. -f1)

                   mv $i ${name}.$b

                   echo "$name.$a ====> $name.$b"

                   done

          

           echo "修改完毕"

          

    11、查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计)

    使用 netstat -atn 可以查看本机所有连接状态,-a 查看所有,-t 仅显示tcp连接信息, -n数字格式显示local address(第四列是本机的IP和端口信息)Foreign address(第五烈是远程主机的IP和端口信息)使用awk命令仅显示第5列数据,再显示第1列IP地址的信息

    sort 可以按数字的大小排序,最后使用 Uniq 将多余重复的删除,并统计重复次数

           #!/bin/bash

           # Author: Sean Martin

           # Blog: https://www.cnblogs.com/shy13138/

           # Time: 2019-08-16 10:32:19

           # Name: netstat1.sh

           # Version: v1.0

           declare -i L=0

           declare -i E=0

           declare -i O=0

           for i in $(netstat -tna|grep "^tcp"|awk '{print $6}');do

                   if [ $i = "LISTEN" ];then

                           let L++

                   elif [ $i = "ESTABLISHED" ];then

                           let E++

                   else

                           let O++

                   fi

           done

           echo "监听链接有$L 个,建立的链接有$E 个,其他链接有$O"

          

    12、对100 以内的所有正整数相加求和(1+2+3.。。+100)

    eq 100 可以快速自动生成100个整数

           #!/bin/bash

           # Author: Sean Martin

           # Blog: https://www.cnblogs.com/shy13138/

           # Time: 2019-08-18 06:26:33

           # Name: 1-100.sh

           # Version: v1.0

           declare -l sum=0

           for i in $(seq 0 2 100);do

                   let sum=$sum+$i

           done

    echo $sum

  • 相关阅读:
    图算法(一)——基本图算法(BFS,DFS及其应用)(1)
    设置drawable图片
    view的加载
    onSaveInstanceState和onRestoreInstanceState
    android中的生命周期(新增2个函数)
    int integer string间的转换
    andorid中Html.fromHtml方法
    android获取inflater
    android中获取string字符串的方法
    c#基础试题
  • 原文地址:https://www.cnblogs.com/shy13138/p/11387648.html
Copyright © 2011-2022 走看看