常用的Shell脚本

1、通过位置变量创建linux系统账户及密码
$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 19:19:45
5 # Name: userad.sh
6 # Version: v1.0
7 # Description: This is a Script.
8
9 `useradd $1`
10 echo "$2" |passwd --stdin "$1"

2、每周5使用tar命令备份/var/log 下的所有日志文件,防止文件覆盖

vim backup.sh
tar zcfP /tmp/varlog_$(date +%F).tar.gz /var/log
crontab -e
* * * * 5 bin/bash /server/scripts/backup.sh

3、实时监控本机内存和硬盘剩余空间,剩余内存小于500M,根分区剩余空间小于1000M的时候发送报警邮件

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 20:29:30
5 # Name: jiankong.sh
6 # Version: v1.0
7 # Description: This is a Script.
8
9 free=`free -m|awk ‘NR==3 {print$4 }‘`
10 df=`df |awk ‘NR==2{print $4}‘`
11
12 if [[ $free -lt 500 && $df -lt 1000000 ]];then
13 mail -s "Warning~" 1227566276@qq.com
14 echo ‘send success!‘
15 else
16 echo ‘zhengchang!‘
17 exit 0
18 fi

4、脚本生成一个 100 以内的随机数值,提示用户猜数字,更具用户的输入,提示用户猜对了,猜打了或猜小了,直至用户猜对脚本结束。

5、检测本机当前用户是否为超级管理员,如果是管理员,使用 yum 安装 vsftpd,如果不是,则提示您非管理员,使用字串对比版本

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 20:43:03
5 # Name: root.sh
6 # Version: v1.0
7 # Description: This is a Script.
8
9 root=`id -u`
10 if [ $root -eq 0 ];then
11 yum install -y vsftpd
12 else
13 echo ‘no super user~‘
14 fi

6、依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 20:45:50
5 # Name: 3geshu.sh
6 # Version: v1.0
7 # Description: This is a Script.
8 read -p "first:" a
9 read -p "second:" b
10 read -p "third:" c
11
12 if [[ -z $a || -z $b || -z $c ]];then
13 echo "please input num---"
14 exit 1
15 fi
16
17 if [[ -n "$(echo $a| sed -n "/^[0-9]\+$/p")" && -n "$(echo $b| sed -n "/^[0-9]\+$/p")" && -n "$(echo $c| sed -n "/^[0-9]\+$/p")" ]];then
18
19 if [ $a -lt $b ];then
20 t=$a;a=$b;b=$t;
21 fi
22 if [ $a -lt $c ];then
23 t=$a;a=$c;c=$t;
24 fi
25 if [ $b -lt $c ];then
26 t=$b;b=$c;c=$t;
27 fi
28 echo " big --- small:$a,$b,$c"
29
30 else
31 echo "dont abcd...."
32 fi

7、编写脚本,实现人机《石头,剪刀,布》游戏

8、编写脚本测试192.168.4.0/24整个网段中那些主机处于开机状态,那些主机处于关机状态(for 版本)

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 21:13:05
5 # Name: ping1.sh
6 # Version: v1.0
7 # Description: This is a Script.
8 for i in {1..254}
9 do
10 ping 192.168.4.$i -c 2 -w 1 2&>1 >/dev/null
11 if [ $? -eq 0 ];then
12 echo "192.168.4.$i active!!!"
13 else
14 echo "192.168.4.$i down..."
15 fi
16 done

9、编写脚本测试 192.168.4.0/24 整个网段中那些主机处于开机状态,那些主机处于关机状态(多进程版),定义一个函数来实现,ping 某一台主机,并检测主机的存货状态

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 21:18:43
5 # Name: ping2.sh
6 # Version: v1.0
7 # Description: This is a Script.
8 fun_ping(){
9
10 ping 192.168.4.$i -c 1 -w 1 2&>1 >/dev/null
11 if [ $? -eq 0 ]
12 then
13 echo "192.168.4.$i active!"
14 else
15 echo "192.168.4.$i down."
16 fi
17 }
18 for i in {1..254}
19 do
20 fun_ping
21 done

10、编写脚本,复制文件的时候,显示进度条

11、9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表)

12、使用死循环实时显示 eth0 网卡发送的数据包流量

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 21:50:32
5 # Name: eth4.sh
6 # Version: v1.0
7 # Description: This is a Script.
8 while :
9 do
10 ifconfig eth4 |sed -n ‘5,6p‘
11 done

13、使用user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码
脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户信息

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 21:27:13
5 # Name: zidonguser.sh
6 # Version: v1.0
7 # Description: This is a Script.
8 user=`cat /server/scripts/user.txt`
9 for i in $user
10 do
11 useradd $i
12 echo "123456" |passwd --stdin "$i"
13 done

14、编写批量修改扩展名脚本,如批量将 txt 文件修改为doc文件
执行脚本时,需要给脚本添加位置参数
脚本名 txt doc (可以将 txt 的扩展名修改为doc)
脚本名 doc jpg(可以将doc 的扩展名修改为jpg)

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 18:58:14
5 # Name: rename.sh
6 # Version: v1.0
7 # Description: This is a Script.
8 read -p "input weizhi" $wz
9 for i in `ls $wz`
10 do
11 mv $i `echo $i|sed s#txt#doc#g`
12
13 done

15、查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计)
使用 netstat -atn 可以查看本机所有连接状态,-a 查看所有,
-t 仅显示tcp连接信息, -n数字格式显示
local address(第四列是本机的IP和端口信息)
Foreign address(第五烈是远程主机的IP和端口信息)
使用awk命令仅显示第5列数据,再显示第1列IP地址的信息
sort 可以按数字的大小排序,最后使用 Uniq 将多余重复的删除,并统计重复次数

#netstat -atn | awk -F"[: ]+" ‘{print $5}‘ 端口号
netstat -atn |egrep ":80|:22|:21" | awk ‘{print $5}‘ |awk -F ":" ‘{print $1}‘ |sort -rn |uniq -c

16、对100 以内的所有正整数相加求和(1+2+3.。。+100)
eq 100 可以快速自动生成100个整数

1 #!/bin/bash
2 # Author: Peter zh
3 # Blog: https://home.cnblogs.com/zhangwduoduoj/
4 # Time: 2019-08-17 21:10:05
5 # Name: qiuhe.sh
6 # Version: v1.0
7 # Description: This is a Script.
8
9 sum=0
10 for i in `seq 100`
11 do
12 let sum+=i
13 done
14 echo $sum
15 

原文地址:https://www.cnblogs.com/zhangwduoduoj/p/11360289.html

时间: 2024-10-13 13:37:38

常用的Shell脚本的相关文章

Linux Shell 高级编程技巧4----几个常用的shell脚本例子

4.几个常用的shell脚本例子    4.0.在写脚本(同样适用在编程的时候),最好写好完善的注释    4.1.kill_processes.sh(一个杀死进程的脚本) #!/bin/bash current_PID=$$ ps -aux | grep "/usr/sbin/httpd" | grep -v "grep" | awk '{print $2}' > /tmp/${current_PID}.txt for pid in `cat /tmp/${

10个实战及面试常用的shell脚本--1

###10个实战及面试常用的shell脚本 写脚本之前的一些注意事项 1.开头加解释器: #!/bin/bash 2.语法缩进,使用4个空格,多加注视说明 3.命名规则: 变量名大写 局部变量小写 函数名小写 名字体现出实际作用 4.默认变量是全局的,在函数中的变量local指定为局部变量,避免污染其他作用域 5.两个命令帮助调试脚本: set -e 遇到执行非0时退出脚本 set -x 打印执行过程 6.写完后要测试再到生产 1.获取本机ip地址(有的需要根据机器来修改,不全通用) metho

sed && awk工具 及一些常用的shell脚本

(一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出. 逐行读取文件内容存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.原文件爱你的内容并没有改变. sed '4,$d' test.in # 删除4~最后一行 sed '3q' test.in # 读到指定行之后退出 sed 's/public

常用linux shell脚本记录

遍历目录下所有的文件是目录还是文件 for file in ./* do if test -f $file then echo $file 是文件 fi if test -d $file then echo $file 是目录 fi done filelist=`ls ./proto` echo $filelist for file in $filelist;do #不能有判断if [-f $file ] ,为什么?因为文件是在当前目录的proto目录下,我们filelist输出的是文件列表,没

Linux之常用Shell脚本总结

一.简介本文将总结一些常用的shell脚本,方便以后工作中使用. 二.shell脚本[a]定期备份mysql数据库,需结合cronb定时任务调度实现. #!/bin/bash#首先声明一些自定义变量 #数据库备份路径DB_BAK_PATH=/data/db#当前时间CURRENTTIME=$(date +%Y%m%d_%H%M%S)#备份数据库名称DB_NAME=test_db_bak#用户名DB_USERNAME=root#密码DB_PASSWORD=0905#主机名称DB_HOSTNAME=

linux下shell脚本编程1

1. shell脚本是什么 它是一种脚本语言,并非编程语言. 可以使用一些逻辑判断.循环等语法. 可以自定义子函数,是系统命令的集合. shell脚本可以实现自动化运维,大大增加我们的工作效率. 2.shell脚本结构以及执行方法 开头行指定bash路径: #! /bin/bash 以#开头的行作为解释说明 #注释自己的脚本内容,方便自己查阅:utf8字符集,支持中文: 脚本的名字以.sh结尾,用于区分这是一个shell脚本 执行脚本方式有两种: chmod a+x 1.sh    添加x执行权

shell脚本中单双引号疑惑

工作中常用到shell脚本,遇到了一个疑惑,求解.    常见的解释: 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用. 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 我的问题如图一:在vim编辑器中,第21行,在使用单引号的情况下,'$i' 是打印出了数值,不是上面解释的单引号里面的变量是无效的,打印出$i. 图一   与之类似的脚本,用双

常用shell脚本

获取IP地址和子网掩码 ifconfig eth0 | grep "inet addr" | awk -F "[ : ]+"  '{print $4 "\\" $8}' 常用shell脚本,布布扣,bubuko.com

shell脚本中常用的命令:wget、curl、ss、lsof、nmap、nc、netstat、telnet

shell脚本中常用的命令:wget.curl.ss.lsof.nmap.nc.netstat.telnet 实验环境说明: (1)远程nginx服务器IP:192.169.5.136,nginx服务使用的端口是80: (2)本地ceshiji的IP: 192.169.5.121 在服务器本地监控服务端口常见命令:netstat.ss.lsof(简称三'S') 举例说明常用命令的选项: (1)[[email protected] ~]# netstat -lnp |grep nginx tcp