04.17 Shell函数数组
来源:互联网 发布:软件什么是架构 编辑:程序博客网 时间:2024/06/10 07:37
第一章 统计字符串长度的方法
1. 统计字符串长度的方法
char=oldboyecho ${#char} *****echo $char |awk '{print length}'echo $char |wc -Lexpr length $char
[root@nginx02_8 script]# vim char.sh#!/bin/bash. /etc/init.d/functionsfor char in I am oldboy teacher I like linuxdo if [ ${#char} -lt 4 ] then echo $char fidone
2. 打印选择菜单,按照选择一键安装不同的Web服务。
打印选择菜单,按照选择一键安装不同的Web服务。
1.[install lamp]
2.[install lnmp]
3.[exit]
#!/bin/bash. /etc/init.d/functionswhile true;do clearcat <<END 1.[install lamp] 2.[install nginx] 3.[exit]END read -p "please input the number of you want" num case "$num" in 1) action "[install lamp]..." /bin/true sleep 2 ;; 2) action "[install nginx]..." /bin/true sleep 2 ;; 3) exit esacdone
3. 监控网站是否可以打开
#!/bin/bash. /etc/init.d/functionsurl=(http://www.baidu.comhttp://oldboy.blog.51cto.comhttp://blog.oldboyedu.comhttp://10.0.0.7)check(){ wget -q -o /dev/null --spider --timeout=5 --tries=2 "$1" if [[ $? -eq 0 ]]; then action "$1" /bin/true else action "$1" /bin/false fi}main(){ while true; do for i in ${url[*]}; do check "$i" sleep 3 done done}clearmain
第二章 企业Shell运维实战案例
- 使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy
#!/bin/bash. /etc/init.d/functions[ -d /oldboy ] && cd /oldboy || mkdir -p /oldboy && cd /oldboyfor i in `echo oldboy{00..10}`; do word=`uuidgen|md5sum |tr "0-9" "a-z"|cut -c 1-10` touch ${word}_$i.html if [ $? -eq 0 ]; then action "${word}_$i.html" /bin/true fidone
- 将上次文件名中的oldboy字符串全部改成oldgirl(最好用for循环实现),并且将扩展名html全部改成大写。
#!/bin/bash. /etc/init.d/functionscd /oldboynew_File=_oldgirl.HTMLfor i in `ls /oldboy`; do name=$(echo $i | awk -F "_" '{print $1}') mv $i ${name}${new_File}done
- 批量创建10个系统账号oldboy01-oldboy10并设置密码(密码为随机数,要求字符和数字的混合)
#!/bin/bash. /etc/init.d/functionsfor i in `echo oldboy{01..10}`; do oldboy_Password=`uuidgen|sed 's#-##g'|cut -c 1-10` useradd $i && echo ${oldboy_Password} |passwd --stdin $i &>/dev/null if [[ $? -eq 0 ]]; then action "$i 用户创建" /bin/true fi echo "用户名:$i 用户密码:${oldboy_Password}" >>/tmp/passworddone
- 写一个Shell脚本,判断10.0.0.0/24网络里,当前在线的IP有哪些?
#!/bin/bash. /etc/init.d/functionsip="10.0.0."check="ping -w 2 -c 2"for i in `seq 254`; do $check $ip$i &>/dev/null if [[ $? -eq 0 ]]; then action "$ip$i" /bin/true else action "$ip$i" /bin/false fidone
- 写一个Shell脚本解决DOS攻击生产案例。
请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100(读者根据实际情况设定),即调用防火墙命令封掉对应的IP。防火墙命令为:iptables -I INPUT -s IP地址 -j DROP。
#!/bin/bash. /etc/init.d/functions#file=$1 定义一个变量接收命令行传参,参数为日志文件类型while true; do awk '{print $1}' $1|grep -v "^$"|sort|uniq -c >/tmp/tmp.log #分析传入的日志文件,并在排序去重后追加到一个临时文件里。 while read line; do ip=$(echo $line|awk '{print $2}') #获取文件中的每一行的第二列ip列 count=$(echo $line|awk '{print $1}') #获取文件中的每一行的第一列 if [ $count -gt 500 ] && [ $(iptables -nL |grep "$ip"|wc -l -lt 1) ]; then iptables -I INPUT -s $ip -j DROP fi done </tmp/tmp.log sleep 3600 #日志的分隔或过滤分析得按分钟执行done
- MySQL启动脚本
[root@db02 scripts]# cat /etc/init.d/oldgirl#!/bin/bash# chkconfig: 2345 64 36# description: MySQL startup#Author:oldboy#Blog:http://oldboy.blog.51cto.com #Time:2017-07-07 09:24:34#Name:mysqld.sh #Version:V1.0#Description:This is a test script.[ -f /etc/init.d/functions ] && source /etc/init.d/functionsPort=3306User="root"Bindir="/application/mysql/bin"Datadir="/application/mysql/data"mysqld_pid_file_path="/application/mysql/`hostname`.pid"PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin"export PATHreturn_value=0# Lock directory.lockdir='/var/lock/subsys'lock_file_path="$lockdir/mysql"log_success_msg(){ echo " SUCCESS! $@"} log_failure_msg(){ echo " ERROR! $@"} case "$1" in start) # Start daemon echo "Starting MySQL" if test -x $Bindir/mysqld_safe then $Bindir/mysqld_safe --datadir="$Datadir" --pid-file="$mysqld_pid_file_path" >/dev/null & return_value=$? sleep 2 # Make lock for CentOS if test -w "$lockdir" then touch "$lock_file_path" fi exit $return_value else log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)" fi ;; stop) if test -s "$mysqld_pid_file_path" then mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/null) then echo "Shutting down MySQL" kill $mysqld_pid return_value=$? sleep 2 else log_failure_msg "MySQL server process #$mysqld_pid is not running!" rm -f "$mysqld_pid_file_path" fi # Delete lock for CentOS if test -f "$lock_file_path" then rm -f "$lock_file_path" fi exit $return_value else log_failure_msg "MySQL server PID file could not be found!" fi ;; restart) if $0 stop; then $0 start else log_failure_msg "Failed to stop running server, so refusing to try to start." exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;;esacexit $return_value
阅读全文
0 0
- 04.17 Shell函数数组
- shell 函数 返回数组
- Shell函数与数组
- Shell 向函数传递 数组
- shell 函数参数为数组传递
- shell-四(数组和函数)
- shell编程向函数传递数组
- shell脚本变量,数组与函数
- shell数组
- shell数组
- shell 数组
- shell数组
- shell数组
- shell 数组
- shell-------------数组
- shell 数组
- shell数组
- shell数组
- 简单计算器
- 拍照和从相册选取的弹出框
- Qt简易文本编辑器
- Java中判断字符串是否为数字的五种方法
- Shiro-003
- 04.17 Shell函数数组
- php学习笔记--获取Linux随机数
- ORACLE RAC集群的体系结构
- Codeforces Round #423 D. High Load
- LeetCode: 26. Remove Duplicates from Sorted Array
- Jfianl 多数据源连接
- 我们正进入一个文化资本比经济资本更贵的社会
- 交叉验证(CrossValidation)
- kafka生产者与消费者java代码示例