创建与数据库、web、邮件相关的shell

MySQL数据库
    使用 MySQL
        1. 连接到服务器
            $ mysql -u root –p  -- 指定用户并输入密码,连接mysql
        2.  mysql 命令
            show databases -> use mysql -> show tables  -- mysql会话一次只能连一个库,之后可以创表了
        3. 创建数据库
            CREATE DATABASE name;
        4. 创建用户账户
            GRANT SELECT,INSERT,DELETE,UPDATE ON *.* TO 'username'@'host' IDENTIFIED by '123456'  -- host指定服务器,给用户username赋权:所有库的表具有一般权限,用户登录密码123456
        5. 创建数据表(略)
        6. 插入和删除数据(略)
        7. 查询数据(略)
    在脚本中使用 MySQL
        1. 登录到服务器
            $ cat .my.cnf
            [client]
            password = 123456
            $ chmod 400 .my.cnf    -- 设置用户启动的mysql会话的默认密码
            $ mysql mytest -u ly_ibas    -- 可以直接登录了
        2. 向服务器发送命令
            发送单个命令对于 mysql 命令,可以用 -e 选项
                MYSQL=$(which mysql)
                $MYSQL mytest -u ly_ibas -e 'select * from employees'
            发送多条SQL命令,可以利用文件重定向
                MYSQL=$(which mysql)
                $MYSQL mytest -u ly_ibas <<EOF
                show tables;
                select * from employees where salary > 40000;
                EOF    -- 只返回了原始数据而不是在数据两边加上ASCII符号框,将有利于提取个别的数据元素
                向数据库中插入数据并检查是否成功
                    MYSQL=$(which mysql)
                    if [ $# -ne 4 ]
                    then
                        echo "Usage: mtest3 empid lastname firstname salary"
                    else
                        statement="INSERT INTO employees VALUES ($1, '$2', '$3', $4)"
                        $MYSQL mytest -u test << EOF
                        $statement
                        EOF
                        if [ $? -eq 0 ]
                        then
                            echo Data successfully added
                        else
                            echo Problem adding data
                        fi
                    fi
        3. 格式化数据
            MYSQL=$(which mysql)
            dbs=$($MYSQL mytest -u ly_ibas -Bse 'show databases')    -- 。 -B 选项指定mysql程序工作在批处理模式运行, -s 选项用于禁止输出列标题和格式化符号
            for db in $dbs
            do
                echo $db
            done
            通过使用XML,标识出每条记录以及记录中的各个字段值。然后可以使用标准的Linux字符串处理功能来提取需要的数据
                $ mysql mytest -u ly_ibas -X -e 'select * from employees where empid = 1'
                <?xml version="1.0"?>    -- 以xml返回的数据
                <resultset statement="select * from employees">
                <row>
                    <field name="empid">1</field>
                    <field name="lastname">Blum</field>
                    <field name="firstname">Rich</field>
                    <field name="salary">25000</field>
                </row>
                </resultset>
                $
使用 Web
    Web页面由三种类型的数据组成:
        HTTP头部    -- HTTP头部提供了连接中传送的数据类型、发送数据的服务器以及采用的连接安全类型的相关信息
        cookie    -- 网站用cookie存储有关网站的访问数据,以供将来使用
        HTML内容
    安装 Lynx
        Lynx程序使用了Linux中的curses文本图形库。大多数发行版会默认安装这个库,如果没有安装,可以从lynx.isc.org网站上下载源码并编译(假定你已经在Linux系统上安装了C开发库)
    lynx 命令行
        Lynx程序支持三种不同的格式来查看Web页面实际的HTML内容:
            在终端会话中利用curses图形库显示文本图形;
            文本文件,文件内容是从Web页面中转储的原始数据;
            文本文件,文件内容是从Web页面中转储的原始HTML源码。
        lynx格式:
            lynx options URL
    Lynx 配置文件
        位置可能存在于:
            /usr/local/lib/lynx.cfg
            /etc/lynx.cfg
            /etc/lynx-curl
        代理服务器可以过滤不良内容和恶意代码,甚至可以发现钓鱼网站,降低网络带宽的使用(缓存了经常浏览的Web页面,并将其返回给客户端)
    从 Lynx 中获取数据
         lynx 进行屏幕抓取的最简单办法是用 -dump 选项,它会将Web页面文本数据直接显示在 STDOUT 上
            URL="http://weather.yahoo.com/united-states/illinois/chicago-2379574/"
            LYNX=$(which lynx)
            TMPFILE=$(mktemp tmpXXXXXX)
            $LYNX -dump $URL > $TMPFILE
            conditions=$(cat $TMPFILE | sed -n -f sedcond)
            temp=$(cat $TMPFILE | sed -n -f sedtemp | awk '{print $4}')
            rm -f $TMPFILE
            echo "Current conditions: $conditions"
            echo The current temp outside is: $temp
            $ sh weather    -- 根据脚本可以制作温度表
            Current conditions: Mostly Cloudy
            The current temp outside is: 32 °F
使用电子邮件
    Mailx程序发送消息的命令行的格式为:
        mail [-eIinv] [-a header] [-b addr] [-c addr] [-s subj] to-addr
    Mailx命令行参数
        参 数  描 述
        -a     指定额外的SMTP头部行
        -b     给消息增加一个BCC:收件人
        -c     给消息增加一个CC:收件人
        -e     如果消息为空,不要发送消息
        -i     忽略TTY中断信号
        -I     强制Mailx以交互模式运行
        -n     不要读取/etc/mail.rc启动文件
        -s     指定一个主题行
        -v     在终端上显示投递细节
    #磁盘信息邮件发送
    $
    date=$(date +%m/%d/%Y)
    MAIL=$(which mailx)
    TEMP=$(mktemp tmp.XXXXXX)
    df -k > $TEMP
    cat $TEMP | $MAIL -s "Disk stats for $date" $1  -- 从脚本外部输入URL
    rm -f $TEMP

 

posted on 2019-07-17 10:38  丿星痕☆森文  阅读(177)  评论(0编辑  收藏  举报

导航