脚本练习

1、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
tar Jcf /etc/ /data/ectbak-`date -d “-1 day” +%F-%H`.tar.xz
30 1 * * 1-5 /root/Myscripts/backetc.sh

2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
0 */2 * * * cat /proc/meminfo |grep “^\(S\|M\)” >>/tmp/meminfo.txt

3、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就执行wall警报
#!/bin/bash
Diskspace=`df |sed -nr ‘s,^/dev/sd.*[ ]+(.*)%.*,\1,p’ |sort -nr |head -1`
Diskinode=`df -i |sed -nr ‘s,^/dev/sd.*[ ]+(.*)%.*,\1,p’ |sort -nr |head -1`

if [ $Diskspace -gt 80 -o $Diskinode -gt 80 ] ;then
wall “Disk space will not enough space!”
fi

*/10 * * * * /root/Myscripts/diskcheck.sh

1、判断/var/目录下所有文件的类型

cd /var ;ls |while read line ;do
file $line
done

2、添加10个用户user1-user10,密码为8位随机字符
for I in {1..10} ;do
if ! id user$I &>/dev/null ;then
useradd user$I
echo `openssl rand -hex 4 |head -c 8` |passwd –stdin user$I
else
echo “user is exist.”
fi
done

3、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的输出为文件加stop,以S开头的输出为文件名加start,如K34filename stop S66filename start

for I in `ls -1 /etc/rc.d/rc3.d/` ;do
echo $I |sed -r -e ‘/^S/s/(.*)/\1 start/’ -e ‘/^K/s/(.*)/\1 stop/’
done

4、编写脚本,提示输入正整数n的值,计算1+2+…+n的总和
read -p “please input a positive integer: ” N
for (( i=0; i <= $N; i++ )) ;do
let SUM+=$i
done
echo $SUM

5、计算100以内所有能被3整除的整数之和
for I in {1..100} ;do
U=$[$I%3]
if [ “$U” -eq 0 ] ;then
let SUM+=$I
fi
done
echo $SUM

6、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态
read -p “please input a network address: ” DIP
echo $DIP |grep -qE “^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.){2}0$” || { ech
o “ipaddr error”; exit; }

for I in {1..254} ;do
{
if ping -W1 -c1 ${DIP%.*}.$I &>/dev/null ;then
echo “${DIP%.*}.$I is up.”
fi
}&
done

7、打印九九乘法表
for I in {1..9} ;do
for ((U=1; U<=I; U++)) ;do
T=$[I*U]
echo -n “${I}x${U}=$T ”
done
echo “”
done

8、在/testdir目录下创建10个html文件,文件名格式为数字N(从1到10)加随机8个字母,如:1AbCdeFgH.html
mkdir /testdir
for i in `seq 1 10` ;do
touch /testdir/$[RANDOM%11]`openssl rand -base64 20 |grep -o “\([a-z]\|[A-Z]\)” |tr -d ‘\n’ |head -c 8`.html
done

9、打印等腰三角形
for i in `seq $1` ;do
for j in `seq $[$1-i]` ;do
echo -n ” ”
done
for k in `seq $[i*2-1]` ;do
let color=$RANDOM%7+31
echo -e “\e[1;5;${color}m*\e[0m\c”
done
echo
done

1、编写脚本,求100以内所有正奇数之和
declare -i sum=0
declare -i i=1

while [ $i -le 100 ] ;do
let sum+=i
let i+=2
done
echo $sum
2、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态,并统计在线和离线主机各多少
trap ‘exit’ 2

read -p “please input a network address: ” DNET
echo $DNET |grep -qE “^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.){2}0$” || { echo “ipaddr error”; exit; }

for I in {1..254} ;do
{
if ping -W1 -c1 ${DNET%.*}.$I &>/dev/null ;then
echo “${DNET%.*}.$I is up.”
fi
}&
done

unset DNET
unset I
wait
3、编写脚本,打印九九乘法表
for i in {1..9} ;do
for j in `seq $i` ;do
temp=$[i*j]
echo -e “$j*$i=$temp\t\c”
done
echo
done
4、编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大值和最小值
tmpnum=0
for i in {1..10} ;do
RNUM=$RANDOM
echo $RNUM
if [ $tmpnum -lt $RNUM ] ;then
let tmpnum=RNUM
fi
done
echo “Maxinum: $tmpnum”
5、编写脚本,实现打印国际象棋棋盘
for i in {1..16} ;do
if [ $[i%2] -eq 0 ] ;then
for j in {1..16} ;do
if [ $[j%2] -eq 0 ] ;then
echo -e “\033[41m \033[0m\c”
else
echo -e “\033[47m \033[0m\c”
fi
done
echo
else
for k in {1..16} ;do
if [ $[k%2] -eq 1 ] ;then
echo -e “\033[41m \033[0m\c”
else
echo -e “\033[47m \033[0m\c”
fi
done
echo
fi
done

for i in {1..8} ;do
if [[ $[i%4] =~ [1-2] ]] ;then
for j in {1..4} ;do
if [ $[j%2] -eq 1 ] ;then
echo -e “\033[41m \033[0m\c”
else
echo -e “\033[47m \033[0m\c”
fi
done
echo
else
for k in {1..4} ;do
if [ $[k%2] -eq 0 ] ;then
echo -e “\033[41m \033[0m\c”
else
echo -e “\033[47m \033[0m\c”
fi
done
echo
fi
done

6、后续六个字符串:efbaf275cd、4be9c40b8b 、44b2395c46、f8c8873ce0、b902c16c8b、ad865d2f63是通过对随机数变量RANDOM随机执行命令: echo $RANDOM|md5sum|cut –c1-10 后的结果,请破解这些字符串对应的RANDOM值
ad865d2f63:1000
b902c16c8b:3000
f8c8873ce0:6000
44b2395c46:9000
4be9c40b8b:12000
efbaf275cd:15000

for STR in efbaf275cd 4be9c40b8b 44b2395c46 f8c8873ce0 b902c16c8b ad865d2f63 ;do
{
for i in `seq 32767` ;do
tmpstr=`echo $i |md5sum |cut -c 1-10`
if [ $tmpstr == $STR ] ;then
echo $STR:$i
fi
done
}&
done
wait

1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并退出脚本
while :;do
if who |grep -q “hacker” ;then
echo hacker: `who |grep “hacker” |sed -r ‘s,.* ([0-9]+-.*),\1,’` >>/var/l
og/login.log
break
fi
sleep 3

2、随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出
tmpnum=0
for i in {1..10} ;do
RNUM=$RANDOM
echo $RNUM
if [ $tmpnum -lt $RNUM ] ;then
let tmpnum=RNUM
fi
done

echo “Maxinum: $tmpnum”
3、用文件名做为参数,统计所有参数文件的总行数
while [ “$#” -gt 0 ] ;do
anum=`wc -l $1 |cut -d’ ‘ -f1`
let linunum+=anum
shift
done
echo “lines : $linunum”

4、用二个以上的数字为参数,显示其中的最大值和最小值
declare -i temp=0
while [ “$#” -gt 0 ] ;do
if [ “$1” -gt “$temp” ] ;then
temp=$1
fi
shift
done
5、扫描/etc/passwd文件每一行,如发现GECOS字段为空,则填充用户名和单位电话为62985600,并提示该用户的GECOS信息修改成功
while read line ;do
staring=`echo $line |cut -d: -f5`
if [ -z “$staring” ] ;then
username=`echo $line |cut -d: -f1`
chfn -f “$username” -p “62985600” “$username” &>/dev/null
echo “$username GECOS message is cheange seccessful.”
fi
done < /etc/passwd

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97801

(1)
lidongfeilidongfei
上一篇 2018-05-08
下一篇 2018-05-08

相关推荐

  • ansible进阶小技巧

    用ansible写playbook的朋友可能会发现,当配置工作很多时,如果在中间过程出错了,修改后想重新执行,前面的一大堆步骤让人感觉很烦躁。虽然提供了“retry”文件,但是却只是根据host来判断重新执行,仍然不够方便;又或者,中间的某些步骤特别耗时,比如下载一个很大的数据包,每次执行特别浪费时间,想要特别的跳过。怎么办?我猜你就是把不需要的部分给注释掉…

    Linux笔记 2018-06-03
  • 09葵花宝典Openssl和DNS

    openssl cd bind named

    Linux笔记 2018-05-16
  • 第十一周作业

    1、搭建php-fpm工作方式的LAMP环境,实现wordpress正常访问

    2、什么是DML?常用SQL举例,每个命令至少1个例子,最多不超过3个例子

    3、简述ftp的主动和被动模式,并实现基于pam认证的vsftpd

    4、简述NFS服务原理及配置

    5、简述samba服务,并实现samba配置

    2018-07-20
  • linux下rpm、yum、sed基础用法介绍

    一、RPM包管理介绍 RPM是radhat系列和suse系列等的包管理系统,主要管理系统上软件包的安装、卸载和查询 rpm安装语法:rpm [install options] [programname…] 常用安装option:-i,表示安装程序包 -v,表示输出详细安装过程 -h,安装过程输出进度条 -U,升级程序包 -c,查看程序包的配置文件…

    2018-04-01
  • Linux系统中的软链接和硬链接

    Linux系统中的软连接和硬链接小结

    2018-04-01
  • mysql 高可用

    实验:集群高可用 一个管理——一个主——两个从 管理 主机 从机1 从机2 1.必须先统一时间,做集群必须时间一致,所有主机做如下操作 所有主机统一ntp服务器时间,写入文件里 前期需要手工同步下 启用ntp服务 2.所有主机关掉iptables 和selinux 3.先做主从复制 主机配置文件 这四项必须写 重启服务 查看主机二进制文件的位置 主机创建账号…

    2018-06-19