纯数字文本中获取最大数字

纯数字文本中获取最大数字

1
2
3
4
5
6
7
8
9
10
11
# number.txt

232
123 456 789
856 45
12
458
65 5 89 654 2123 544
45 88 46 53 64 87 998 112 456 789 654


1
2
3
4
5
6
7
8
# 将空格换成换行符
cat number.txt |sed 's/ /\n/g'
# 以及将空行去掉
cat number.txt |sed 's/ /\n/g' |grep -v "^$"
# 添加排序
cat number.txt |sed 's/ /\n/g' |grep -v "^$" |sort -nr
# 添加输出限制,只显示最大和最小的,即在文本中第一位和最后一位的
cat number.txt |sed 's/ /\n/g' |grep -v "^$" |sort -nr|sed -n '1p;$p'

Apache,MySQL,PHP安装功能函数

Apache,MySQL,PHP安装功能函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
#auto install apache

#Httpd define path variable
H_FILES=httpd-2.2.27.tar.bz2
H_FILES_DIR=httpd-2.2.27
H_URL=http://mirrors.cnnic.cn/apache/htpd/
H_PREFIX=/usr/local/apache2/
#MySQL
M_FILES=...
M_FILES_DIR=...
M_URL=...
M_PREFIX=...
#PHP
P_FILES=...
P_FILES_DIR=...
P_URL=...
P_PREFIX=...

MODULE=NOTHING

function Menu(){
echo "--------------------------------------------------"
echo "Please choose to install the following optional modules."
select i in "Apache" "MySQL" "PHP"
do
case $i in
Apache)
$MODULE=$H_FILES_DIR
ApacheInstall
;;
MySQL)
$MODULE=$M_FILES_DIR
MySQLInstall
;;
PHP)
$MODULE=$P_FILES_DIR
PHPInstall
;;
*)
echo "FOUND NOTHING BY USING SUPPORTED ARGUMENT"
;;
done

}

function ApacheInstall(){
echo "The Apache Server wait install..."
wget -c $H_URL/$H_FILES && tar -jxvf && cd &H_FILES_DIR && ./configure --prefix=$H_PREFIX

if [ $? -eq 0 ];then
make && make install
echo "--------------------------------------------------"
echo "$MODULE Server Installation succeed!"
else
echo "$MODULE Make or Make install ERROR, Please Check...."
exit 0
fi
}

function MySQLInstall(){
...
}

function PHPInstall(){
...
}

Menu

自动备份Mysql Shell脚本

自动备份Mysql Shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

#auto backup mysql db

BACK_DIR=/data/backup/`date + %y%m%d`
MYSQLDB=discuz
MYSQLUSR=backup
MYSQLPW=123456
MYSQLCMD=/usr/bin/mysqldump
if [ $UID -ne 0];then
echo "Must to be use root for exec shell"
exit
fi

if [ ! -d $BAcK_DIR];then
mkdir -p $BAcK_DIR
echo "\033[32mThe $BACK_DIR Create Successfully!"
else
echo "This $BACK_DIR is exists."
fi

$MYSQLCMD -u$MYSQLUSR -p$MYSQLPW discuz >$BACK_DIR/$MYSQLDB.sql

使用Docker遇到的问题

使用Docker遇到的问题

  1. **Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? **

    重新配置daemon,并重启docker

    1
    2
    systemctl daemon-reload
    systemctl restart docker.service
  2. ES运行内存不足

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 登陆docker容器进行修改
    docker exec -it 容器名 /bin/bash
    cd ../etc/elasticsearch
    vim jvm.options

    # jvm.options
    # 修改-Xms和-Xmx
    -Xms128m
    -Xmx128m
  3. 查看logs

    1
    docker container logs 容器名
  4. 在容器出现错误时修改内部文件的办法

    1
    2
    3
    4
    #找到docker容器的文件路径
    find / -name 出现错误的文件名
    #进入并修改文件
    vim 文件路径

Shell 数组

Shell 数组

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

soft = (
nginx-1.6.1.tar.gz
mysql-5.1.17.tar.gz
php-5.3.3.tar.gz
/etc/sysctl.conf
)
echo "tHIS SOFT TOTAL ${#soft[@]} !"
tar -xzf ${soft[0]} ;cd nginx-1.6.1 ;./configure ;make install

自动化运维

自动化运维

1. 自动禁止恶意IP访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
# 从访问记录log里获取恶意ip访问信息

SEC_FILE=/var/log/secure
# 筛选恶意访问(密码错误多次[>=4次])多次的ip
IP_ADDR=`tail -n 1000 $SEC_FILE | grep "Failed password" | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort -nr | uniq -c | awk ' $1>=4 {print $2}'`
IPTABLE_CONF=/etc/sysconfig/iptables
echo
cat <<EOF
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---------------------welcome to use ssh login drop failed ip------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EOF
for i in `echo $IP_ADDR`
do
# 抓取防火墙中对应的ip信息
cat $IPTABLE_CONF | grep $i >/dev/null

# 判断是否已经存在对应ip的拒绝信息, 如存在, 就不添加相应信息
if [ $? -ne 0];then
sed -i "/lo/a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dropt 22 -j DROP" $IPTABLE_CONF
else
echo "This $i is exists in the iptables."
fi
done

/etc/init.d/iptables restart

2.网络自动化部署以及管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
# Auto change Server Files


# 缺少ip.txt
if [ ! -f ip.txt ];then
echo "Please Create ip.txt Files, the ip.txt contents models are as follows: "
cat <<EOF
192.168.149.128
192.168.149.129
EOF
exit
fi
# 缺少参数
if [ -z "$1" ];then
echo "Usage: $0 command, example{Src_Files|Src_Dir Des_dir}. "
exit
fi
# 抓去ip.txt的行数
count='cat ip.txt | wc -l'
rm -rf ip.txt.swp
i=0
while ((i< $count))
do
i=`expr $i + 1`
# 抓去ip.txt的第$i行的ip并赋予至ip.txt.swp
sed "${i}s/^/&${i} /g" ip.txt >>ip.txt.swp
# 获取需要同步的ip
IP=`awk -v I="$i" '{if(I==$1)print $2}' ip.txt.swp`
# 同步语句
scp -r $1 root@${IP}:$2

done

3.批量远程服务器执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash

if [ ! -f ip.txt ];then
echo "Please Create ip.txt Files, the ip.txt contents models are as follows: "
cat <<EOF
192.168.149.128
192.168.149.129
EOF
exit
fi

if [ -z "$*" ];then
echo "Usage: $0 command, example {rm /tmp/test.txt | mkdir /tmp/20140228}"
exit
fi

count='cat ip.txt | wc -l'
rm -rf ip.txt.swp
i=0
while ((i< $count))
do
i=`expr $i + 1`
# 抓去ip.txt的第$i行的ip并赋予至ip.txt.swp
sed "${i}s/^/&${i} /g" ip.txt >>ip.txt.swp
# 获取需要同步的ip
IP=`awk -v I="$i" '{if(I==$1)print $2}' ip.txt.swp`
# 命令语句, 并输出操作返回结果
ssh -q -l root $IP "$*";echo "The $IP Execution Command: $* succeed";sleep 2"
done

4.Rsync+SSH批量自动化部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash

# 刷新函数
flush(){
if [ ! -f rsync.list ];then
echo "Please Create rsync.list Files, the rsync.list contents should be look like as follow:"
cat <<EOF
192.168.149.128 src_dir des_dir
192.168.149.127 src_dir des_dir
EOF
exit
fi

rm -rf rsync.list.swp ; cat rsync.list | grep -v "#" >rsync.list.swp
COUNT=`cat rsync.list.swp | wc -l`
i=0
while ((${i} < $COUNT))
do
i = `expr $i + 1`
Line=`sed -n "${i}p" rsync.list.swp`
IP=`echo $Line | awk '{print $1}'`
SRC=`echo $Line | awk '{print $2}'`
DES=`echo $Line | awk '{print $3}'`
rsync -ap --delete ${SRC}/ root@${IP}:${DES}/
done
}

# 重启
restart(){
if [ ! -f restart.list ];then
echo "Please Create restart.list Files, the rsync.list contents should be look like as follow:"
cat <<EOF
192.168.149.128 Command
192.168.149.127 Command
EOF
exit
fi
rm -rf restart.list.swp ; cat restart.list | grep -v "#" >>restart.list.swp
COUNT=`cat restart.list.swp | wc -l`
i=0
while ((${i} < $COUNT))
do
i = `expr $i + 1`
Line=`sed -n "${i}p" restart.list.swp`
IP=`echo $Line | awk '{print $1}'`
Command=`echo $Line | awk '{print $2}'`
ssh -l root $IP "sh $Command;echo 'The $IP Exec Command and : sh $Command success'"
done
}

case $i in
flush )
flush
;;
restart )
restart
;;
*)
echo "Usage: $0 command, example{flush|restart}"

4.增量备份脚本

  • 完整备份

    完整的将文件全部备份

    tar -g /tmp/snapshot -czvf /tmp/2014_full_system_data.tar.gz /data/sh/

  • 增量备份

    将新增的文件进行备份

    tar -g /tmp/snapshot -czvf /tmp/2014_add01_system_data.tar.gz /data/sh/

一般是周日进行完整备份,每天进行一次增量备份

定时备份:

1
确定今天是周几: date +%u
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash

# 所有文件
SOURCE_DIR=(
$*
)

TARGET_DIR=/data/backup/

YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
WEEK=`date +%u`
A_NAME=`date +%H%M`
FILES=${A_NAME}_system_backup.tgz
CODE=$?

if [ -z "$*" ];then
echo "Please Enter Your Backup Files or Directories"
echo "Usage: { $0 /boot /etc }"
exit
fi

if [ ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ];then
mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY
echo "The $TARGET_DIR Created success"
fi
Full_Backup(){
if [ "$WEEK" -eq "7" ];then
rm -rf $TARGET_DIR/snapshot
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES ${SOURCE_DIR[@]}
[ "$CODE" == "0" ]&&echo "These Full_backup System Files $TARGET_DIR/$YEAR/$MONTH/$DAY/$FILES Backup Success"
fi
}
Add_Backup(){
if [ "$WEEK" -ne "7" ];then
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES ${SOURCE_DIR[@]}
[ "$CODE" == "0" ]&&echo "These Add_backup System Files $TARGET_DIR/$YEAR/$MONTH/$DAY/$FILES Backup Success"
fi
}
sleep 3
Full_Backup;Add_Backup