创建与数据库、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
生活就要逢山开路遇水搭桥,愿共勉!