Shell编程是一种在命令行环境中编写程序的技术,常用于Linux和Unix系统。它主要使用Shell脚本语言来编写程序。Shell编程常用于系统管理、自动化任务、批处理等领域。

常用的Shell脚本语言包括Bash、Csh、Tcsh和Zsh等。Bash是最常用的Shell编程语言,它是大多数Linux和Unix系统的默认Shell。

Shell编程中,变量使用"$“来引用,变量赋值使用”="。Shell程序中可以使用多种内建命令和Unix工具,如grep、sed、awk等。

编写Shell脚本程序需要在文本编辑器中编写代码,并使用"chmod +x"命令给予可执行权限,最后使用"./"执行该脚本程序。

举个例子,在文本编辑器中编写如下代码,保存为"test.sh":

#!/bin/bash echo “Hello, World!”

使用如下命令给该脚本添加可执行权限:

chmod +x test.sh

然后,执行该脚本:

./test.sh

这样就能在终端中看到输出 “Hello, World!”

请注意,在Windows上不能直接执行sh脚本,但是可以通过在Windows子系统 Linux (WSL) 中执行


实战示例:

#!/bin/bash

log=/root/rw_test.log
test_dir=/test__remotehost_mount

r_dir1=01/suyan_nfs_remote
r_dir2=02/suyan_nfs_remote
r_dir3=03/suyan_nfs_remote
r_dir4=04/suyan_nfs_remote

zabbix_sender="/opt/aspire/product/zabbix/bin/zabbix_sender -z 30.153.1.77 -s"

host1=30.1.177.151
host2=30.1.177.152
host3=30.1.177.153
host4=30.1.177.154
read="time timeout 30 df -h"
write="time timeout 30 touch"

#test rw 30.1.177.151
function RW_151()
{

$read $test_dir$r_dir1 >> $log 2>&1 && $write $test_dir$r_dir1/$host1.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host1 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host1 -k "$host1"_rwtest -o "0"
else
echo "RW.$host1 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host1 -k "$host1"_rwtest -o "1"
fi
}

#test rw 30.1.177.152
function RW_152()
{
$read $test_dir$r_dir2 >> $log 2>&1 && $write $test_dir$r_dir2/$host2.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host2 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host2 -k "$host2"_rwtest -o "0"
else
echo "RW.$host2 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host2 -k "$host2"_rwtest -o "1"
fi
}

#test rw 30.1.177.153
function RW_153()
{
$read $test_dir$r_dir3 >> $log 2>&1 && $write $test_dir$r_dir3/$host3.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host3 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host3 -k "$host3"_rwtest -o "0"
else
echo "RW.$host3 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host3 -k "$host3"_rwtest -o "1"
fi
}

#test rw 30.1.177.154
function RW_154()
{
$read $test_dir$r_dir4 >> $log 2>&1 && $write $test_dir$r_dir4/$host4.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host4 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host4 -k "$host4"_rwtest -o "0"
else
echo "RW.$host4 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host4 -k "$host4"_rwtest -o "1"
fi
}

#running function
RW_151
RW_152
RW_153
RW_154

shell编程之存储读写测试实战脚本的更多相关文章

  1. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...

  2. shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  3. shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机

    shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h ...

  4. shell编程系列23--shell操作数据库实战之mysql命令参数详解

    shell编程系列23--shell操作数据库实战之mysql命令参数详解 mysql命令参数详解 -u 用户名 -p 用户密码 -h 服务器ip地址 -D 连接的数据库 -N 不输出列信息 -B 使 ...

  5. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  6. Shell编程-05-Shell中条件测试与比较

    目录 Shell脚本条件测试 Shell文件测试 Shell字符测试 Shell整数测试 Shell逻辑测试 Shell条件测试总结 Shell脚本条件测试     在Shell脚本中各种条件结构和流 ...

  7. Linux Shell编程(19)——测试与分支

    case和select结构在技术上说不是循环,因为它们并不对可执行的代码块进行迭代.但是和循环相似的是,它们也依靠在代码块的顶部或底部的条件判断来决定程序的分支.在代码块中控制程序分支case (in ...

  8. Shell编程案例:修改运维脚本输出效果

    1. 需求:每日运维检查脚本dailymonitor.sh显示对服务器测试结果,其中命令 zabbix_get -s 192.168.111.21 -p 10050 -k "net.tcp. ...

  9. shell编程实战总结

    最近复习一下shell,顺便高级进阶一下,之前写脚本能简单尽量简单来,发现好多高深的东西还是没有理解,因此在这里记录一下整个过程并做相应的总结. 通过上代码的方式来介绍,后续可能会调整相应的排版 1. ...

  10. 基于Linux系统的Shell编程-基础篇

    1. Shell基础介绍 1.1 Shell编程的意义 为什么使用shell编程 节约时间 1.2 显示脚本执行过程 前面有+表示执行过的命令的 前面没有东西,表示输出到屏幕上的内容. [root@C ...

随机推荐

  1. 用好kafka,你不得不知的那些工具

    前言 工欲善其事,必先利其器.本文主要分享一下消息中间件kafka安装部署的过程,以及我平时在工作中针对kafka用的一些客户端工具和监控工具. kafka部署架构 一个kafka集群由多个kafka ...

  2. 知识拷问:工作站和服务器哪个更适合做CST电磁仿真?

    通常大型企业都会具备工作站和服务器用以作为办公的支持,在大家做仿真分析时,我们一般建议大家更多地使用工作站,工作站要比服务器更适合做CST软件的仿真运算. 什么是服务器? 服务器是指在网络环境下运行相 ...

  3. 【汇编】DOS系统功能调用(INT 21H)

    前言 最近又听了听汇编的课程,发现代码里的MOV xxxxx INT 21H,老师都是一句话带过,而不讲讲其中的原因(也可能前面讲了我没有听QAQ). 顺便夸一下老师,老师懒省事录的视频画质已经成功从 ...

  4. IntelliJ IDEA上手这一篇就够了,从入门到上瘾

    前言 每次换电脑,最最最头疼的事情莫过于安装各种软件和搭建开发环境.这算是不想换电脑的一个原因吧(最主要还是穷).除非是电脑坏了开不了机或者点一下卡一下,真不想换电脑.每次换电脑都得折腾好久. 趁着这 ...

  5. docker安装带postgis插件的postgresql 数据库

    最初直接拉取的postgresql 数据,在导入 .bakup 文件时始终会报错,最后才想到该数据库默认不带postgis空间组件 一.拉取镜像 这里我们拉取postgres 和 gis 组合的镜像 ...

  6. 二进制部署k8s集群

    部署k8s有多种方式,本章我们采取二进制的部署方式来部署k8s集群,二进制部署麻烦点,但是可以在我们通过部署各个组件的时候,也通知能让我们更好的深入了解组件之间的关联,也利于后期维护 主机环境 系统: ...

  7. 如何同步更新 Github 上 Fork 的项目?

    Github Fork 过程概述 在 Github 上有很多优秀的开源项目,相信每一位热衷于技术的朋友都会在 Github 上 Fork 一些感兴趣的项目,然后在本地修改并提交.本文以 Galaxy ...

  8. 【对比】ChatGPT Plus与ChatGPT实操对比体验

    前言 缘由 20美刀大洋充值ChatGPT Plus,必须分享让它物尽其用 应单位追求科技前沿需求,以及花钱就是香的原则.遂找了远在他乡的高中老同学,斥资20美刀为公司身先士卒怒充会员.秉承分享至上原 ...

  9. 4. Mybatis的增删改查(CRUD)

    1.新增 ‍ <!--int insertUser();--> <insert id="insertUser"> insert into t_user va ...

  10. 深入Python网络编程:从基础到实践

    Python,作为一种被广泛使用的高级编程语言,拥有许多优势,其中之一就是它的网络编程能力.Python的强大网络库如socket, requests, urllib, asyncio,等等,让它在网 ...