练习一:获得连通主机的ip和hostname
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

2.测试结果 

 

练习二:有分针秒针的倒计时
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脚本实例三的更多相关文章

  1. 分享7个shell脚本实例--shell脚本练习必备

    概述 看多shell脚本实例自然就会有shell脚本的编写思路了,所以我一般比较推荐看脚本实例来练习shell脚本.下面分享几个shell脚本实例. 1.监测Nginx访问日志502情况,并做相应动作 ...

  2. shell脚本实例-系统监控

    shell脚本监控网站并实现邮件.短信报警shell进程监控脚本(发送邮件报警)Shell脚本监控服务器在线状态和邮件报警的方法 http://www.jbxue.com/jb/shell/ 11. ...

  3. shell脚本实例

    备注:一些与传递给shell的参数相关的变量:$# 命令行参数的个数$? 调用命令的返回值$$ 当前进程的进程号$! 最后一个后台命令的进程号$0 命令行的第一个参数,也就是命令名$n 命令行的第n个 ...

  4. Shell脚本的三种执行方式

    Shell脚本的执行方式可以有以下几种: 方式一:  ./script.sh # 利用小数点来执行 方式二:  sh script.sh 或 bash script.sh # 利用bash(sh)来执 ...

  5. Shell 脚本中调用另一个 Shell 脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...

  6. shell脚本实例一

    一. 什么是shell 脚本时一种解释性语言: shell脚本保存执行动作: 脚本判定命令的执行条件 脚本来实现动作的批量执行.二.如何创建 vim  test.sh     ##shell脚本一般都 ...

  7. shell脚本实例,通向shell脚本大师的必经之路

    概述 读书百遍其义自见,shell脚本也是,只要例子看得多了,自然就知道怎么写了.这里主要整理了20几个例子,因为内容比较多,所以分了几次来做介绍了.下面的实例最好先自己思考怎么去实现,然后再看下实现 ...

  8. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  9. shell脚本实例一,移动文件夹中大于2000B的文件到另一个文件夹

    shell脚本能帮我们简化linux下的一些工作,现在有个需求,把TMPA文件夹下大于2000B的文件都移动到TMPB下 #! /bin/bash function movefiles() { ` d ...

随机推荐

  1. vmware 虚拟机三种网卡

    转:https://blog.csdn.net/lyf_ldh/article/details/78695357 vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NA ...

  2. ElasticSearch(一)ElasticSearch的应用场景及为什么要选择ElasticSearch?

    先了解一下数据的分类 结构化数据又可以称之为行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据.其实就是可以能够用数据或者统一的结构加以表示的数据.比如在数据表存储商品的库存,可以用整型表示 ...

  3. WCF使用安全证书验证消息加密

    首先安装 服务端安全证书  代码如下:  // 下面第一行是安装证书,第二行是将证书列入信任 makecert.exe -sr LocalMachine -ss MY -a sha1 -n CN=lo ...

  4. MR案例:外连接代码实现

    [外连接]是在[内连接]的基础上稍微修改即可.具体HQL语句详见Hive查询Join package join.map; import java.io.IOException; import java ...

  5. 无线网卡在 MAC 系统下的安装与使用过程

    MAC系统安装netgear无线网卡的方法: 1)去网件官网下载相应的驱动软件 2)单击页面左侧的“Version 1.0.0.0”进入下载页面如下图 3)选择对应您系统版本的驱动程序,按右键保存到计 ...

  6. linux如何以十六进制格式来查看任意文件

    答:vim+xxd 使用方法如下: 1.vim -b file.txt 2.在vim的命令行模式下对文件进行16进制转换 输入:%!xxd 3.在vim的命令行模式下回到正常格式 输入:%!xxd - ...

  7. Spring Cloud OAuth2(二) 扩展登陆方式:账户密码登陆、 手机验证码登陆、 二维码扫码登陆

    概要 基于上文讲解的spring cloud 授权服务的搭建,本文扩展了spring security 的登陆方式,增加手机验证码登陆.二维码登陆. 主要实现方式为使用自定义filter. Authe ...

  8. java开发设计六大基本原则

    1.遵循单一职责原则 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责.一个类只专注于做一件事: 高内聚,低耦合: 实例: 普通的手表如果有一个指针坏了,那么手表将不再转动,而 ...

  9. 探索C++虚函数

    探索C++虚函数 1 测试环境 各个编译器对虚函数的实现有各自区别,但原理大致相同.本文基于VS2008探索虚函数 2 测试代码 #pragma once #include <iostream& ...

  10. 对于"第一次创业者"应该给什么样的建议

      转:其实我创业也不是很成功(目前属于第二次).目前为止,基本保证家里足够温饱和足够温馨,偶尔奢侈,但是我坚持走技术路线,不做土豪(因为做不了). 我创业的口号是:成全别人,累死自己!!   有人问 ...