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

shell脚本——作业二(循环作业)的更多相关文章

  1. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  2. shell脚本之for循环

    shell脚本之for循环 author :headsen  chen       2017-10-18    09:50:41 个人原创,转载请注明.否则依法追究法律责任 1,cat forloop ...

  3. shell脚本(二)

              shell脚本(二)——变量 一.定义:用来存放各种数据,编程语言组成部分 变量的命名规则: 变量名由数字 字母下划线组成 必须以字母或者下划线开头 不能使用shell里面的关键词 ...

  4. shell 脚本中所有循环语法

    写出 shell 脚本中所有循环语法 for 循环 : for i in $(ls);do echo item:$i done while 循环 : #!/bin/bash COUNTER=0 whi ...

  5. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  6. shell脚本中select循环语句用法

    shell脚本中select循环语句 1. 脚本中select的语法格式 select VAR in LIST do command1 command2 ... ... commandN done s ...

  7. shell脚本进阶之循环判断

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  8. Shell脚本之二 变量、字符串和数组

    一.Shell 变量 1.1 定义变量 定义变量时,变量名不加美元符号($),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...

  9. shell脚本学习(二)

    shell传递参数 shell脚本在执行是可以传递参数,脚本内获取参数的格式为:$n,n为一个数字,1为第一个参数,2为第二个参数,以此类推 其中,$0代表了要执行的文件名 实例: 代码如下: #!/ ...

  10. shell脚本程序中循环、判断语句的介绍

    shell的循环主要有3种,for,while,until shell的分支判断主要有2种,if,case 一,for循环 C/C++ Code复制内容到剪贴板 #!/bin/bash for fil ...

随机推荐

  1. PAT 甲级 1014 Waiting in Line (30 分)(queue的使用,模拟题,有个大坑)

    1014 Waiting in Line (30 分)   Suppose a bank has N windows open for service. There is a yellow line ...

  2. rabbitmq-BasicReject

    拒收,是接收端在收到消息的时候响应给RabbitMQ服务的一种命令,告诉服务器不应该由我处理,或者拒绝处理,扔掉.接收端在发送reject命令的时候可以选择是否要重新放回queue中.如果没有其他接收 ...

  3. Jmeter 逻辑控制器 之 While Controller

    一.认识 While Controller 如下图,创建一个While Controller (While 循环控制器) 设置界面如下: Condition (function or variable ...

  4. linux命令帮助 man bash

    BASH(1) BASH(1) NAME bash - GNU Bourne-Again SHell (GNU 命令解释程序 “Bourne二世”) 概述(SYNOPSIS) bash [option ...

  5. Charles系列三:Charles打断点(包含修改请求,修改返回的内容),模拟慢速网络(弱网测试),域名映射,过滤请求,接口调试,打压测试

    一:Charles断点的使用(包含修改请求,修改返回的数据) 设置断点来修改请求和返回的数据,在开发过程中可以模拟多种响应.步骤如下: 1.添加断点方法有两种: 方法1:找到Charles中菜单项Pr ...

  6. 要求设计 LazyMan 类,实现以下功能

    LazyMan('Tony'); // Hi I am Tony LazyMan('Tony').sleep(10).eat('lunch'); // Hi I am Tony // 等待了10秒.. ...

  7. RxJava基本使用

    更多文章请点击链接:http://77blogs.com/?p=162 转载请标明出处:https://www.cnblogs.com/tangZH/p/12088300.html,http://77 ...

  8. 【转帖】sysbench的安装和做性能测试

    iMySQL | 老叶茶馆 sysbench的安装和做性能测试 http://imysql.cn/node/312 我仿照这个学的 但是 需要用更新的版本才可以.   By yejr on 14 六月 ...

  9. SpreadJS:一款高度类似Excel的开发工具,功能涵盖Excel的 95% 以上

    Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面.出色的计算性能.数据分析和图表,已经成为数据统计领域不可或缺的软件之一. 基于Excel对数据处理与分析的卓越表现,把Excel的功能 ...

  10. XSSFWorkbook对象 进行zip打包时 用write资源流自动关闭处理办法

    XSSFWorkbook对象的write方法内会将传入的资源流自动关闭 导致下载excel失败 错误代码 OutputStream out = response.getOutputStream(); ...