1 输入YES打印

INPUT=$1
if [ $INPUT  ==  "YES" ];then
        echo "Please install LAMP."
else
        echo "Please exit."
fi

2 创建用户修改密码并输入到文件中

#!/bin/bash
#auto modify user passwd
#by author chy
for i in 1 2 3 4 5
do
        useradd chy_$i
        echo "m_pwd_$i"|passwd --stdin chy_$i
        echo "用户名/密码:"chy_$i m_pwd_$i >>/tmp/user_list.txt
done

3 在上一条命令的基础上循环修改密码

[root@192 sh]# more for_user.sh 
#!/bin/bash
#auto modify user passwd
#by author chy
for i in chy_1 chy_2 chy_3 chy_4 chy_5
do
	echo "m_pwd"|passwd --stdin $i
	echo "用户名/密码:"chy_$i m_pwd >>/tmp/user_list2.txt
done

注:echo "m_pwd"|passwd --stdin root   //修改root密码

4 求和1-100

#!/bin/sh
#auto add 1-100
j=0
for ((i=1;i<=100;i++))
do
        j=`expr $i + $j`
done
echo $j

5 找到相关log,然后批量打包

[root@192 sh]# more log.sh 
#!/bin/sh
#auto tar log
for i in ` find /var/log -name "*.log" `
do
	tar -cPzf 2016log.tgz $i
        echo "压缩" $i
done
	echo "压缩完毕"

6 远程主机批量传输文件,可以用在设置密钥上

[root@192 sh]# more scp.sh 
#!/bin/sh
#auto scp files for client
#by authors chy 2016
for i in 131 135
do
	scp /root/test.txt root@192.168.57.$i:/root
done

7 批量传输,可实现批量部署

[root@192 sh]# more while.sh 
#!/bin/sh
while read i
do
	IP=`echo $i|awk '{print $1}'`
	DIR=`echo $i|awk '{print $2}'`
	DES=`echo $i|awk '{print $3}'`
	echo scp -r $DIR/* root@$IP:$DES/
done < test.txt

8 while逐行读取某个(/etc/hosts)文件

[root@192 sh]# more read.sh 
#!/bin/sh
while read line
do
	echo $line;
done < /etc/hosts

9 until条件判断数字

[root@192 sh]# more until.sh 
#!/bin/sh
a=$1
until [[ $a -lt 0 ]];do
#until [[ $a -lt 0 ]];do
echo $a;
((a--));
done;

10 打包日志文件

[root@192 sh]# more auto_log_tgz.sh 
#!/bin/bash
#auto log packages
#by chy 20161130
LOGS_DIR="/var/log/"
for i in `find $LOGS_DIR -name "secure-*"`
do
	FILES=`echo $i|xargs basename`
	DIR=`echo $i|xargs dirname`
        cd $DIR
	echo "The tar -czPvf $FILES.tar.gz $FILES"
	tar -czPvf $FILES.tar.gz $FILES
	rm -rf $FILES
done

11远程执行命令

#!/bin/sh
CMD=$*
FILES=/data/sh/test.txt

if [ -z “$CMD” ];then
        echo -e "\033[32mUsage:{Please enter $0 CMD df-h|ifconfig ehto} \033[0m"
        exit
fi
for i in `cat $FILES`
do
        echo -e "\033[32m-------------\033[0m"
        echo -e "\033[32mssh -l root $i $CMD\033[0m"
        ssh -l root $i "$CMD"
done


远程执行命令脚本
[root@192 sh]# cat cat_List.sh 
#!/bin/sh
##sed有变量要用双引号
CMD=$*
FILES=/data/sh/test.txt
#####判断是否有命令输入########
if [ -z "$CMD" ];then
	echo -e "\033[32mUsage:{Please enter $0 IP and CMD df-h|ifconfig ehto} \033[0m"
	exit
fi
########判断如果输入ip#########
NUM=`echo $1|sed 's/\./\n/g'|wc -l`
if [[ $NUM == 4 ]];then
	CMD=`echo $*|sed "s/$1//g"`
	echo -e "\033[32m$1\033[0m"
	ssh -l root $1	"$CMD"	
	exit
fi
############执行远程命令####3
for i in `cat $FILES`
do
	echo -e "\033[32m-------------\033[0m"
	echo -e "\033[32mssh -l root $i $CMD\033[0m"
	ssh -l root $i "$CMD"
done

12 read---可以传值

root@192 sh]# more read-p.sh 
#!/bin/sh
read -p "Please enter a number:" NUM
echo $NUM
[root@192 sh]# ./read-p.sh 
Please enter a number:i love you
i love you

13 while

小于10时一直输出
#!/bin/sh
i=1;
while [[ $i -lt 10 ]];
do
        echo $i;
        #((i++));
        i=`expr $i + 1`
done;
循环打印
[root@192 sh]# more while.sh   无限循环
#!/bin/sh
i=1;
while true;
do
	echo $i;
done;
执行命令并将命令输入到文本
#!/bin/sh
while read i
do
        echo ssh -l root $i 'df -h;ifconfig'
done < test.txt

14 case条件打印菜单

[root@192 sh]# more case.sh 
#!/bin/sh
#i=$1
read -p "Please Enter A OS system[centos|redhat|windows]:" i
case $i in
	centos)
	echo "The OS System is $i"
	;;
	redhat)
        echo "The OS System is $i"
        ;;
	windows)
        echo "The OS System is $i"
        ;;
	*)
        echo "The OS System is MAC"
        ;;

esac

15 select打印菜单

#!/bin/sh
PS3="What you like most of the open source system?"
select i in CentOS RedHat Ubuntu
do
echo "Your Select System: "$i
done
输出:
[root@192 sh]# ./select.sh 
1) CentOS
2) RedHat
3) Ubuntu
What you like most of the open source system?1
Your Select System: CentOS
What you like most of the open source system?2
Your Select System: RedHat
What you like most of the open source system?3
Your Select System: Ubuntu
What you like most of the open source system?

16 判断ip输入是否正确

[root@192 ~]# echo 192.168.57.132 |awk -F . '$1<=255&&$2<=255&&$3<=255&&$4<=255 {print $0}'
192.168.57.132

17 find

find 之-type f/d  类型是文件或者目录
[root@192 sh]# find / -name httpd.conf -type f
/etc/httpd/conf/httpd.conf
/usr/lib/tmpfiles.d/httpd.conf
xargs将find找到的文件进行删除 \;——对应find  {}——对应find的内容
[root@192 ~]# find /root/ -name "httpd.conf" |xargs rm -rf {} \;
exec找到目录并删除
find /tmp/* -type d -exec rm -rf {} \;
exec将find找到的内容进行复制
[root@192 ~]# find /etc/ -name "httpd.conf" -exec cp {} /root/ \; 
[root@192 sh]# for i in `find /etc/ -name "httpd.conf"`;do cp $i /root ;done
exec——mv
[root@192 ~]# find /root/ -name httpd.conf -exec mv {} /tmp \;
find找到大于4M的文件
[root@192 ~]# find /root/ -type f -size +4M
/root/download
/root/root@192.168.57.132
/root/test.img
find找到大于4M的文件并打包
[root@192 ~]# find /root/ -type f -size +4M -exec tar czPvf 2016.tar.gz {} \;
find查找mtime100天以前创建的文件
[root@192 ~]# find /root/* -type f -mtime +100
/root/mysql-community-release-el7-5.noarch.rpm
log中-大小size 时间mtime 权限 perm 剔除某个文件! -name
[root@192 log]# find . -name "messages-*" -size +500k -mtime +1 ! -name "messages-20161129" -perm 755
./messages-201611222
find找到一级目录名称
[root@192 ~]# find . -maxdepth 1 -type d
! -name -除去. 当前目录
sed-替换
[root@192 ~]# find . -maxdepth 1 -type d ! -name "." |sed "s/.\///g"
.ssh
g

18  sed

a 替换
将zabbix替换为mocha
[root@192 ~]# sed -i 's/zabbix/mocha/g' passwd
i-打印预览,没有i的话只打印不输入,可进行调试
1-3行将lib替换为mocha
没有g只替换1行,1-替换第一个,2-替换第2个
[root@192 ~]# sed -i '1,3s/lib/mocha/g' passwd
b 查找 
n -找到指定这一条 
p-打印,p放在外面里面都可以
, -1到3行
;-1和3行
[root@192 ~]# df -h|sed -n '/sda1/p'
/dev/sda1                497M  125M  373M   25% /boot
[root@192 ~]# df -h|sed -n '/sda1'/p
/dev/sda1                497M  125M  373M   25% /boot
[root@192 ~]# df -h|sed -n '1,2p'
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  4.1G   14G   24% /
[root@192 ~]# df -h|sed -n '1p;2p'
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  4.1G   14G   24% /
a -下一行添加,只在sed里生效,a后面可以有空格也可以没有空格,匹配到/home/
[root@192 ~]# sed '/home/aMy name is chy,you can do it' passwd
rpc:x:32:32:Rpcbind Daemon:/var/mocha/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/mocha/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/mocha/nfs:/sbin/nologin
mocha:x:1000:1000::/home/mocha:/sbin/nologin
My name is chy,you can do it
ntp:x:38:38::/etc/ntp:/sbin/nologin
i-上一行添加
[root@192 ~]# sed '/home/iMy name is chy,you can do it' passwd
rpc:x:32:32:Rpcbind Daemon:/var/mocha/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/mocha/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/mocha/nfs:/sbin/nologin
My name is chy,you can do it
mocha:x:1000:1000::/home/mocha:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
^ -开头
& -添加
$ -结尾
[root@192 ~]# sed 's/^ntp/& you can do it/g' passwd
rpc:x:32:32:Rpcbind Daemon:/var/mocha/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/mocha/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/mocha/nfs:/sbin/nologin
mocha:x:1000:1000::/home/mocha:/sbin/nologin
ntp you can do it:x:38:38::/etc/ntp:/sbin/nologin
[root@192 ~]# sed 's/ntp$/& you can do it/g' passwd
rpc:x:32:32:Rpcbind Daemon:/var/mocha/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/mocha/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/mocha/nfs:/sbin/nologin
mocha:x:1000:1000::/home/mocha:/sbin/nologin
ntp:x:38:38::/etc/ntp:/bin/ntp you can do it
找到/结尾的
[root@192 ~]# df -h |sed -n '/\/$/p'
/dev/mapper/centos-root   18G  4.1G   14G   24% /
找到后面是/的,将G去掉,将%去掉
[root@192 ~]# df -h |sed -n '/\/$/p'|sed 's/G//g'|sed 's/%//g'
/dev/mapper/centos-root   18  4.1   14   24 /
合并sed后,用;
[root@192 ~]# df -h |sed -n '/\/$/p'|sed 's/G//g;s/%//g'
/dev/mapper/centos-root   18  4.1   14   24 /
或者,用e
[root@192 ~]# df -h |sed -n '/\/$/p'|sed -e 's/G//g' -e 's/%//g'
/dev/mapper/centos-root   18  4.1   14   24 /
在文件的每一行末尾加you can do it/g
[root@192 ~]# sed 's/$/& you can do it/g' aa.txt
rpc you can do it
rpcuser you can do it
nfsnobody you can do it
mocha you can do it
ntp you can do it
在文件的每一行开头加you can do it/g
[root@192 ~]# sed 's/^/& you can do it/g' aa.txt
 you can do itrpc
 you can do itrpcuser
 you can do itnfsnobody
 you can do itmocha
 you can do itntp
 查找ip
 ifconfig|grep "inet"|sed '2,$d'|awk -F: '{print $2}'|awk '{print $1}'
 [root@test1 ~]# ifconfig|grep "inet"
          inet addr:10.8.202.162  Bcast:10.8.202.255  Mask:255.255.255.0
          inet6 addr: fe80::c8c9:b6ff:fe78:1a09/64 Scope:Link
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host]
 [root@test1 ~]# ifconfig|grep "inet"|sed '2,$d' //sed的意思是删除第二行到最后一行
          inet addr:10.8.202.162  Bcast:10.8.202.255  Mask:255.255.255.0

19 awk

 awk
 NR 当前行数,从1开始
 $0 当前记录
 $1~$n 当前记录第n个字段
[root@192 ~]# cat aa.txt |awk 'NR==1 {print $0}'
rpc   1
[root@192 ~]# cat aa.txt |awk 'NR==1 {print $1}'
rpc
[root@192 ~]# cat aa.txt |awk '{print $1}'
rpc
rpcuser
nfsnobody
mocha
ntp
NF 当前记录字段个数
(NF-1)
[root@192 ~]# more aa.txt 
rpc   1 you can do it
rpcuser  2 you can do it
nfsnobody  3 you can do it
mocha  4 you can do it
ntp  5 you can do it
[root@192 ~]# cat aa.txt |awk ' {print $NF}'
it
it
it
it
it
[root@192 ~]# cat aa.txt |awk ' {print $(NF-1)}'
do
do
do
do
do
^it 匹配it开头的
[root@192 ~]# cat aa.txt |awk '/it/'
rpc   1 you can do it
rpcuser  2 you can do it
nfsnobody  3 you can do it
mocha  4 you can do it
it   5 you can do it
[root@192 ~]# cat aa.txt |awk '/^it/'
it   5 you can do it
查找tcp开头的,打印最后一个域
[root@192 ~]# netstat -an|awk '/^tcp/ {print $NF}'
LISTEN
ESTABLISHED
LISTEN
LISTEN
LISTEN
打印长度大于10的
[root@192 ~]# cat passwd |awk 'length($0)>10 {print}'
rpc:x:32:32:Rpcbind Daemon:/var/mocha/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/mocha/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/mocha/nfs:/sbin/nologin
mocha:x:1000:1000::/home/mocha:/sbin/nologin
ntp:x:38:38::/etc/ntp:/bin/ntp
[root@192 ~]# cat passwd |awk 'length($0)>10 {print NR}'
1
2
3
4
5
tail -3 最后三行
[root@192 ~]# more passwd 
rpc:x:32:32:Rpcbind Daemon:/var/mocha/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/mocha/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/mocha/nfs:/sbin/nologin
mocha:x:1000:1000::/home/mocha:/sbin/nologin
ntp:x:38:38::/etc/ntp:/bin/ntp
[root@192 ~]# awk -F: '{print $1}' passwd|tail -3
nfsnobody
mocha
ntp

20 grep

grep -匹配
[root@192 ~]# grep --color mocha passwd
rpc:x:32:32:Rpcbind Daemon:/var/mocha/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/mocha/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/mocha/nfs:/sbin/nologin
mocha:x:1000:1000::/home/mocha:/sbin/nologin
^mocha开头
[root@192 ~]# grep ^mocha passwd
mocha:x:1000:1000::/home/mocha:/sbin/nologin
i-不区分大小写
[root@192 ~]# grep -i --color can aa.txt 
rpc   1 you can do it
rpcuser  2 you can do it
nfsnobody  3 you can do it
mocha  4 you can do it
it   5 you can do it
YOU CAN DO IT
n-打印行号
[root@192 ~]# grep --color -in mocha aa.txt 
4:mocha  4 you can do it
v-反向选择
[root@192 ~]# grep --color -v can aa.txt 
YOU CAN DO IT
不区分大小写,取反
[root@192 ~]# ls -l|grep -vi ^-
总用量 28180
drwxr-xr-x. 3 root root       35 11月 30 15:22 g
grep+awk结合,cut截取
[root@192 ~]# more aa.txt |grep broadcast|awk '{print $2}'
addr:192.168.57.131
[root@192 ~]# more aa.txt |grep broadcast|awk '{print $2}'|cut -d: -f1
addr
[root@192 ~]# more aa.txt |grep broadcast|awk '{print $2}'|cut -d: -f2
192.168.57.131
[root@192 ~]#
grep -v反相选择
[root@192 ~]# ifconfig |grep inet|awk '{print $2}'|cut -d: -f2|grep -v "127"
192.168.57.131
[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep
[root@192 ~]# cat aa.txt |grep [yY]ou
[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和
匹配三个数字的
[root@192 ~]# cat aa.txt |grep [0-5][0-5][0-9]
inet addr:192.168.57.131  netmask 255.255.255.0  broadcast 192.168.57.
大小写一起匹配
[root@192 ~]# cat aa.txt |grep [Aa-zZ]
grep-E {6} 重复执行某条命令6次,或者:
\{6\} 重复执行某条命令
[root@192 ~]# grep -E "^[a-z]{6}" aa.txt 
rpcuser  2 you can do it
nfsnobody  3 you can do it
[root@192 ~]# grep "^[a-z]\{6\}" aa.txt 
rpcuser  2 you can do it
nfsnobody  3 you can do it
匹配6和7,建议使用grep-E
[root@192 ~]# grep -E "^[a-z]{6,7}" aa.txt 
rpcuser  2 you can do it
nfsnobody  3 you can do it
匹配IP
[root@192 ~]# grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" aa.txt 
inet addr:192.168.57.131  netmask 255.255.255.0  
或者()将重复的东西作为一个变量
[root@192 ~]# grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" aa.txt 
inet addr:192.168.57.131  netmask 255.255.255.0  broadcast 192.168.57
/(../) 标记匹配字符,如'/(love/)',love被标记为1
[root@192 ~]# grep "\(rpc\)" aa.txt 
rpc   1 you can do it
rpcuser  2 you can do it
<>严格匹配
[root@192 ~]# grep "\<rpc\>" aa.txt 
rpc   1 you can do it
c-统计
[root@192 ~]# grep -c "you" aa.txt 
5
r.c-查找三个字符的,开头是r,结尾是c的
[root@192 ~]# grep "r.c" aa.txt 
rpc   1 you can do it
rpcuser  2 you can do it
[root@192 ~]# 
^$-查找空格
[root@192 ~]# grep "^ss$" aa.txt 
ss
[root@192 ~]# grep "^$" aa.txt 
A-下面三行打印
B—上面三行打印
c-上下三行
看日志会有用
[root@192 ~]# grep -B 3 "111" aa.txt 
mocha  4 you can do it
it   5 you can do it
YOU CAN DO IT
111
[root@192 ~]# grep -A 3 "111" aa.txt 
111
inet addr:192.168.57.131  netmask 255.255.255.0  broadcast 192.168.57.
10.10.168.162
1.1.1.1
[root@192 ~]# grep -A 3 -B 3 "111" aa.txt 
mocha  4 you can do it
it   5 you can do it
YOU CAN DO IT
111
inet addr:192.168.57.131  netmask 255.255.255.0  broadcast 192.168.57.
10.10.168.162
1.1.1.1
[root@192 ~]# grep -C 3 "111" aa.txt 
查找111这个配置在那个文件中
[root@192 test]# grep -ra "111" *
a:111
aa.txt:111
脚本:
备份脚本---链接
更新
获取cpu
[root@192 test]# cat /proc/cpuinfo|grep "physical id"|sort |uniq -c|wc -l
1
获取磁盘大小,注意修改参数
[root@192 test]# fdisk -l|grep "^Disk"|grep -v "lab"|grep -v "iden"|awk '{sum+=$3}END {print sum}'
21.3