shell脚本批量执行命令----必需判断上一步执行结果--没有捷径
# 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的。必须要有一个判断命令执行成功与否的语句
# 简单的命令可以不加结果判断符号,但是遇到解压包、sed 的命令就不往下执行了。测试过
实例1、 shell脚本批量开启防火墙端口 [mysql@www ~]$ cat firewall.sh
#!/bin/bash
func1(){
firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
[ $? -eq ] firewall-cmd --reload
} func1 sudo ./firewall.sh > /dev/null #这个sudo就相当于脚本里面所有命令行写上了sudo 实例2、 # shell脚本安装python、pip 首先把pip-18.0.tar.gz 、Python-3.6..tgz 安装包放在 /usr/local 下面,按照顺序先安装pip,再安装python。不要先安装或只安装python,否则很容易出错, [root@bogon ~]# cat pip-python.sh
#!/bin/bash
func1(){
yum -y groupinstall "Development tools"
[ $? -eq ] && yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
} func2(){
yum remove pip -y && cd /usr/local/ && tar -xf pip-18.0.tar.gz && cd pip-18.0/ && python setup.py install
[ $? -eq ] && echo "安装完成pip"
} func3(){
cd /usr/local/ && tar -zxvf Python-3.6..tgz && mv Python-3.6. python3 && cd python3 && ./configure && make && make install
[ $? -eq ] && mv /usr/bin/python /usr/bin/python.bak
[ $? -eq ] && ln -s /usr/local/bin/python3 /usr/bin/python && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
[ $? -eq ] && whereis pip && /usr/local/bin/pip3. install --upgrade pip && /usr/local/bin/pip install paramiko
[ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/bin/yum
[ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/libexec/urlgrabber-ext-down
[ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/sbin/firewalld
[ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/sbin/firewalld
[ $? -eq ] && systemctl restart firewalld
[ $? -eq ] && echo "安装完成python"
} #脚本菜单函数 menu(){
clear
echo "# 1. 安装依赖包"
echo "# 2. 安装pip"
echo "# 3. 安装python"
echo "# 4. 退出程序"
} #功能选择函数
choice(){
read -p "Please choice a menu[1 2 3 4]:" select } #程序开始
while true
do
menu
choice
case $select in
)
func1;;
)
func2;;
)
func3;;
)
exit;;
*)
echo "choice error"
esac
done
shell脚本批量执行命令----必需判断上一步执行结果--没有捷径的更多相关文章
- shell脚本批量ssh登陆主机并执行命令
shell脚本批量ssh登陆主机并执行命令 今天在客户现场遇到了这个问题,客户没有管理工具,无法批量登陆主机下发命令,几个个C段啊,让我一个一个登陆,.................. 所以写了个s ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- shell脚本批量开启防火墙端口
# 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...
- linux系统配置文件或shell脚本批量注释
1. 配置文件批量注释 1.1 批量注释 ① 进入命令行模式,按ctrl + v进入 visual block模式,键盘上下箭头选中多行,把需要注释的行标记起来 ② 按大写字母I,再输入注释符:# ③ ...
- shell脚本一条命令直接发送http请求(xjl456852原创)
我们知道nc命令是一个网络工具.可以连接tcp/udp.也能模拟发送http请求. 现在介绍通过shell脚本,一条命令直接发送http请求. 命令如下,可以对下面的地址等信息自行修改: #!/bin ...
- shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出
shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...
- Linux shell脚本 批量创建多个用户
Linux shell脚本 批量创建多个用户 #!/bin/bash groupadd charlesgroup for username in charles1 charles2 charles3 ...
- Shell 脚本批量创建数据库表
使用 Shell 脚本批量创建数据表 系统:Centos6.5 64位 MySQL版本:5.1.73 比如下面这个脚本: #!/bin/bash #批量新建数据表 for y in {0..199}; ...
- (转)shell脚本之seq命令
shell脚本之seq命令 原文:http://blog.csdn.net/paoxiaohui/article/details/52830595 seq 用于生成从一个数到另一个数之间的所有整数. ...
随机推荐
- 关于WAMP的apache 人多了就访问非常卡的问题解决方法
一直用WAMP 但人多了(在线人数上了500) 就卡得不得了 而这时服务器负载却很小 CPU15% 内存25% 整了好久都没个结果 偶然看到一篇教程 原来是连接数限制的问题 改了就速度飞快了 打开ap ...
- Matplotlib模块的基本使用
一.折线绘图 import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv("F:\\ml\\机器学习\\01 ...
- Selenium常用API的使用java语言之8-模拟鼠标操作
通过前面例子了解到,可以使用click()来模拟鼠标的单击操作,现在的Web产品中提供了更丰富的鼠标交互方式, 例如鼠标右击.双击.悬停.甚至是鼠标拖动等功能.在WebDriver中,将这些关于鼠标操 ...
- HTML 001 入门介绍
HTML 教程- (HTML5 标准) 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. 您可以使用 HTML 来建立自己的 ...
- 001_matlab_变量打印
MATLAB输出变量方法很多,主要包括以下几类.(1)语句后面不加分号“;”,这是直接输出数值的比较简单的方法.(2)disp(a)直接在命令窗口显示a变量,这种方法输出和第一种差不多.(3)fpri ...
- Docker 学习10 Docker的系统资源限制及验证
一.资源限制 二.内存限制 1.OOME 每一个进程都会有oom_adj(oom计算分数的权重)值,此值越大,oom_score(oom得分)越高,越容易被干掉,因此非常非常重要的容器化应用,一开始就 ...
- 2019暑期金华集训 Day3 图论
自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...
- H-Fashion in Berland
#include <bits/stdc++.h> using namespace std; int a[1005]; int main() { int n; scanf("%d& ...
- [bzoj 1010][HNOI 2008]玩具装箱
传送门 Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号 ...
- zabbix(7)邮件报警配置
邮件报警可以使用Linux自带邮件服务器(postfix等),也可以使用其他邮件服务器(像腾讯邮箱,126邮箱) 一.使用mail. 1.确定zabbix server是否安装发送邮件的命令mail, ...