在linux系统下,编写一个shell脚本 实现对文件按时间备份,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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值