shell脚本实例三
1.脚本编写
vim checkhost.sh
#!/bin/bash
Auto_conn()
{
/usr/bin/expect << EOF
set timeout 2
spawn ssh root@$1 $2
expect {
"yes/no" {send "yes\r";exp_continue }
"password" {send "westos\r" }
}
expect eof
EOF
}
for i in {75..79}
do
ping -w1 -c1 172.25.254.$i &>> /dev/null && {
IP=172.25.254.$i
hn=`Auto_conn $IP hostname|grep -E "ECDSA|authenticity|connecting|Warning|password|spawn" -v`
echo $hn $IP >> /mnt/dns_file
sed 's/^M//g ' -i /mnt/dns_file
}
done
练习二:有分针秒针的倒计时
vim daojishi1.sh
#!/bin/bash
for ((i=70;i>0;i--))
do
shi=$((i/60))
miao=$((i%60))
echo -ne "\r倒计时:还有$shi分 $miao 秒结束"
sleep 2
done
echo -ne "\r倒计时:0分 0秒!!"
练习三:两个文件分别为userlist和passlist,每行作为对应的用户和密码并进行创建,并对各种情况做出说明!
[root@desktop5 mnt]# cat users_create.sh
#!/bin/bash
[ "$USER" = "root" ]||{
echo -e "\033[31mplease use rootuser!!\033[0m"
exit
}
[ -z "$1" -o -z "$2" ]&&{
echo -e "\033[31mparamater is not two!!\033[0m"
exit
}
[ ! -e "$1" -o ! -e "$2" ]&&{
echo -e "\033[31mfile is not exist!!\033[0m"
exit
}
num1=`wc -l $1|cut -d " " -f 1`
num2=`wc -l $2|cut -d " " -f 1`
[ "$num1" = "$num2" ]&&{
for i in `seq 1 $num1`
do
user=`sed -n ${i}p $1`
ps=`sed -n ${i}p $2`
dge=`getent passwd $user`
if [ -z "$dge" ]
then
useradd $user
echo $ps | passwd --stdin $user &> /dev/null
else
echo -e "\033[31m$user is already exit!!\033[0m"
fi
done
}||{
echo -e "\033[31m$1 和 $2 行数不一致!!\033[0m"
exit
}
练习四:数据库的备份
[root@desktop5 mnt]# cat mariadb.sh
#!/bin/bash
[ -z "$1" ]&&{
echo nopass
exit
}
#用来判断mariadb是否安装
DBCHECK=`rpm -qa | grep mariadb-server`
if [ -z "$DBCHECK" ]
then
echo database software no install!!
exit 1
fi
#判断是否开启mariadb服务
DB_STATE=`mysql -uroot -p$1 -e "show databases;" 2>&1 | awk '/sock/{print}'`
if [ ! -z "$DB_STATE" ]
then
echo DB not start!!
exit 2
fi
#判断密码是否正确
DB_STATE=`mysql -uroot -p$1 -e "show databases;"`
if [ "$?" != "0" ]
then
echo DB passwd erro!!
exit 3
fi
#创建目录
until [ -e "/mnt/mysqldump" ]
do
mkdir -p /mnt/mysqldump
done
for DB_NAME in `mysql -uroot -p$1 -e "show databases;" -NE | grep -E "\*|chema" -v `
do
[ ! -e "/mnt/mysqldump/${DB_NAME}.sql" ]&&{
mysqldump -uroot -p$1 $DB_NAME > /mnt/mysqldump/$DB_NAME.sql
}||{
echo "/mnt/mysqldump/${DB_NAME}.sql is exist you can do this:"
echo "[S]kip [B]ackup [O]verwrite"
read -p "please input action:" ACTION1
ACTION=`echo $ACTION1 | tr 'a-z' 'A-Z'`
case $ACTION in
S)
echo skip it!!
;;
B)
mv /mnt/mysqldump/${DB_NAME}.sql /mnt/mysqldump/${DB_NAME}_backup.sql
mysqldump -uroot -p$1 $DB_NAME > /mnt/mysqldump/${DB_NAME}.sql
echo backup file create success!!
;;
O)
mysqldump -uroot -p$1 $DB_NAME > /mnt/mysqldump/${DB_NAME}.sql
echo overwrite is ok!!
;;
*)
echo no sign
esac
}
done
shell脚本实例三的更多相关文章
- 分享7个shell脚本实例--shell脚本练习必备
概述 看多shell脚本实例自然就会有shell脚本的编写思路了,所以我一般比较推荐看脚本实例来练习shell脚本.下面分享几个shell脚本实例. 1.监测Nginx访问日志502情况,并做相应动作 ...
- shell脚本实例-系统监控
shell脚本监控网站并实现邮件.短信报警shell进程监控脚本(发送邮件报警)Shell脚本监控服务器在线状态和邮件报警的方法 http://www.jbxue.com/jb/shell/ 11. ...
- shell脚本实例
备注:一些与传递给shell的参数相关的变量:$# 命令行参数的个数$? 调用命令的返回值$$ 当前进程的进程号$! 最后一个后台命令的进程号$0 命令行的第一个参数,也就是命令名$n 命令行的第n个 ...
- Shell脚本的三种执行方式
Shell脚本的执行方式可以有以下几种: 方式一: ./script.sh # 利用小数点来执行 方式二: sh script.sh 或 bash script.sh # 利用bash(sh)来执 ...
- Shell 脚本中调用另一个 Shell 脚本的三种方式
主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...
- shell脚本实例一
一. 什么是shell 脚本时一种解释性语言: shell脚本保存执行动作: 脚本判定命令的执行条件 脚本来实现动作的批量执行.二.如何创建 vim test.sh ##shell脚本一般都 ...
- shell脚本实例,通向shell脚本大师的必经之路
概述 读书百遍其义自见,shell脚本也是,只要例子看得多了,自然就知道怎么写了.这里主要整理了20几个例子,因为内容比较多,所以分了几次来做介绍了.下面的实例最好先自己思考怎么去实现,然后再看下实现 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- shell脚本实例一,移动文件夹中大于2000B的文件到另一个文件夹
shell脚本能帮我们简化linux下的一些工作,现在有个需求,把TMPA文件夹下大于2000B的文件都移动到TMPB下 #! /bin/bash function movefiles() { ` d ...
随机推荐
- kali 安装最新firefox的悲惨经历
最新的的firefox用的是量子内核,在windows上面的确感觉相比之前的firefox快了好多 想把kali 2017虚拟机的也替换掉 按照步骤: 1 添加源: /etc/apt/sources. ...
- RocEDU.阅读.写作《苏菲的世界》书摘(三)
根据柏拉图的说法,人是一种具有双重性质的生物.我们的身体是"流动"的,与感官的世界不可分割,并且其命运与世界上其他每一件事物(如肥皂泡)都相同.我们所有的感官都是以身体为基础,因此 ...
- 20145314郑凯杰 《Java程序设计》实验四 实验报告
20145314郑凯杰 <Java程序设计>实验四 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145324 《Java程序设计》第8周学习总结
20145324 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 1.NIO使用频道来衔接数据节点,可以设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记,提供clear ...
- LeetCode (226):Invert Binary Tree 递归实现
Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia:This problem was ...
- [专业亲测]Ubuntu16.04安装Nvidia显卡驱动(cuda)--解决你的所有困惑【转】
本文转载自: 因为要做毕设需要安装caffe2,配置cuda8.0,但是安装nvidia驱动真的是把我难倒了,看了很多篇博文都没有效果,现在我自己重新总结了下几种 安装方法(亲测有效),希望能帮到大家 ...
- MySQL修改max_allowed_packet
因mysql从库报错Last_IO_Error: Got a packet bigger than 'max_allowed_packet' bytes mysql> show slave st ...
- LVS-net
一.LVS基本情况 lvs:Linux Virtual Server,是一种负载均衡集群,其主要是由工作在内核的ipvs与用户空间的命令行工具ipvsadm组成.支持TCP,UDP,AH,EST,AH ...
- 爬虫框架Scrapy之Request/Response
Request yield scrapy.Request(url, self.parse) Request 源码: # 部分代码 class Request(object_ref): def __in ...
- cocos2d-x入门三 分层设计框架
helloworld就是一个完整的框架,大致分为四个层次如下: 导演-------场景------图层-----精灵 Director-----Scene----Layer----Sprite 导演类 ...