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
shell脚本——作业二(循环作业)的更多相关文章
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- shell脚本之for循环
shell脚本之for循环 author :headsen chen 2017-10-18 09:50:41 个人原创,转载请注明.否则依法追究法律责任 1,cat forloop ...
- shell脚本(二)
shell脚本(二)——变量 一.定义:用来存放各种数据,编程语言组成部分 变量的命名规则: 变量名由数字 字母下划线组成 必须以字母或者下划线开头 不能使用shell里面的关键词 ...
- shell 脚本中所有循环语法
写出 shell 脚本中所有循环语法 for 循环 : for i in $(ls);do echo item:$i done while 循环 : #!/bin/bash COUNTER=0 whi ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- shell脚本中select循环语句用法
shell脚本中select循环语句 1. 脚本中select的语法格式 select VAR in LIST do command1 command2 ... ... commandN done s ...
- shell脚本进阶之循环判断
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...
- Shell脚本之二 变量、字符串和数组
一.Shell 变量 1.1 定义变量 定义变量时,变量名不加美元符号($),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...
- shell脚本学习(二)
shell传递参数 shell脚本在执行是可以传递参数,脚本内获取参数的格式为:$n,n为一个数字,1为第一个参数,2为第二个参数,以此类推 其中,$0代表了要执行的文件名 实例: 代码如下: #!/ ...
- shell脚本程序中循环、判断语句的介绍
shell的循环主要有3种,for,while,until shell的分支判断主要有2种,if,case 一,for循环 C/C++ Code复制内容到剪贴板 #!/bin/bash for fil ...
随机推荐
- 获取Xshell Xftp等官网下载地址
1. 首先还是得填写邮箱获取试用链接地址,例如我这次获取的是: https://cdn.netsarang.net/c5711331/Xshell-6.0.0175.exe 关键需要记下 c57113 ...
- 百度之星2019第一场1002 Game
思路: 离散化之后dp,dp[i][j]表示完成前i个任务并且处在第j个点所需要的最小代价. 实现: #include <bits/stdc++.h> using namespace st ...
- Red And Green
#include <stdio.h> #include <string.h> #define LENGTH 50 /* * 1.字符序列中有一个字符肯定是分界点,它的左边全为红 ...
- 顺序表的基本操作【c语言】【创建、插入、删除、输出】
作为数据结构初学者,上课时对一些知识点掌握得不是很透彻,所以利用课余时间通过微博平台总结所学知识,加深对知识的见解,记录学习历程便于后需要时参考. #include<stdio.h> #i ...
- 在centos 7下升级内核
前言 今天读了一篇老外的文章,讲的是如何在linux环境下升级内核.比较暴力,比较简单,故做个记录. 文章中,作者先列出一个常识:linux是内核名,不是系统名.我们平时说的"lin ...
- new pdo 连接很慢的原因和解决办法
1.使用IP而不是域名,使用域名会让PDO在连接之前进行一次不必要的dns lookup,当DNS缓存过于巨大的时候,这个问题可能会更严重.(即使是运行在本机,使用 127.0.0.1 而不是 loc ...
- Web应用中访问WEB-INF下的资源
WEB-INF目录是出于保护资源文件的目的,只能我们开发人员自己查看不可以通过URL直接访问的: 有时候我们也想直接访问WEB-INF中的资源,那就需要用到请求转发了(重定向redirect是不可以的 ...
- 织梦DedeCMS给栏目添加缩略图调用的方法
织梦DedeCMS的栏目调用仅仅只有文字调用,没有栏目缩略图调用,而我们有时候又需要给栏目添加缩略图,并能够在前台调用,就可以试试通过下面的方法,给栏目添加缩略图. 首先要给栏目数据库表添加一个存储缩 ...
- Python基础 第三章 使用字符串(1)精简版
所有标准序列操作(索引,切片,乘法,成员资格检查,长度,最小值,最大值)都适于字符串. 但,字符串是不可变得,故所有得元素赋值和切片赋值都是非法的. 1. %s 转换说明符 设置字符串格式 %左边指定 ...
- Django-djangorestframework-响应模块
响应模块 一般都用 Response 对象来做返回(最后一定是打包成符合 HTTP 协议的数据格式来传输,Response 类做了一系列处理,所以这里我们只需要关注下它的那些参数即可) 响应类构造器 ...