# 注意: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脚本批量执行命令----必需判断上一步执行结果--没有捷径的更多相关文章

  1. shell脚本批量ssh登陆主机并执行命令

    shell脚本批量ssh登陆主机并执行命令 今天在客户现场遇到了这个问题,客户没有管理工具,无法批量登陆主机下发命令,几个个C段啊,让我一个一个登陆,.................. 所以写了个s ...

  2. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  3. shell脚本批量开启防火墙端口

    # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...

  4. linux系统配置文件或shell脚本批量注释

    1. 配置文件批量注释 1.1 批量注释 ① 进入命令行模式,按ctrl + v进入 visual block模式,键盘上下箭头选中多行,把需要注释的行标记起来 ② 按大写字母I,再输入注释符:# ③ ...

  5. shell脚本一条命令直接发送http请求(xjl456852原创)

    我们知道nc命令是一个网络工具.可以连接tcp/udp.也能模拟发送http请求. 现在介绍通过shell脚本,一条命令直接发送http请求. 命令如下,可以对下面的地址等信息自行修改: #!/bin ...

  6. shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出

    shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...

  7. Linux shell脚本 批量创建多个用户

    Linux shell脚本 批量创建多个用户 #!/bin/bash groupadd charlesgroup for username in charles1 charles2 charles3 ...

  8. Shell 脚本批量创建数据库表

    使用 Shell 脚本批量创建数据表 系统:Centos6.5 64位 MySQL版本:5.1.73 比如下面这个脚本: #!/bin/bash #批量新建数据表 for y in {0..199}; ...

  9. (转)shell脚本之seq命令

    shell脚本之seq命令 原文:http://blog.csdn.net/paoxiaohui/article/details/52830595 seq 用于生成从一个数到另一个数之间的所有整数. ...

随机推荐

  1. H5s播放rtsp和rtmp视频

    最近接触的几个项目都有对接视频的功能,目前国内视频厂商以海康和大华为主,其对应的视频流格式也不一致,导致对接起来很麻烦.有幸在客户那接触到一种新的视频对接解决方案,支持Html5标准.废话不多少,看一 ...

  2. BZOJ1997 HNOI2010 平面图判定 planar (并查集判二分图)

    题意 判断一个存在哈密顿回路的图是否是平面图. n≤200,m≤10000n\le200,m\le10000n≤200,m≤10000 题解 如果一定存在一个环,那么连的边要么在环里面要么在外面.那么 ...

  3. python 操作excle 之第三方库 openpyxl学习

    目录 python 操作excle 之第三方库 openpyxl学习 安装 pip install openpyxl 英文文档链接 : 点击这里~ 1,定位excel 2,读取excle中的内容 3, ...

  4. Define Interfaces and Share Class Members through Mixins in Dart

    In this lesson, we will cover Interfaces and Mixins. Interfaces act as a contract containing propert ...

  5. oracle存储过程把查询到的值更新到别的表

    create or replace procedure update_nst_t_Clime2 as cursor c_db is select * from NST_T_FRAME f ,) as ...

  6. qt动态库实现无边框窗体的消息处理 nativeEvent的使用

    需求: 在动态库中创建一个窗口句柄,可以给外部调用,库的调用者,通过这个句柄发送消息到底层库,库里面可以实现对消息的处理 m_FHandle=AllocateHWnd(WndProcDllMsg); ...

  7. Vue.js 中的 v-cloak 指令

    可以使用 v-cloak 指令设置样式,这些样式会在 Vue 实例编译结束时,从绑定的 HTML 元素上被移除. 当网络较慢,网页还在加载 Vue.js ,而导致 Vue 来不及渲染,这时页面就会显示 ...

  8. pyCharm专业版破解方案【附:四种破解】

    前言: 一般适合我们的工具才是好的工具,通过调研对比发现pycharm还不错,其它工具就不一一列举了 pyCharm社区版可以永久免费,但是它不支持HTML, JS, and SQL等,为了方便以后使 ...

  9. C++标准库分析总结(二)——<模板,分配器,List>

    本节主要总结模板及其类模板分类以及STL里面的分配器.容器内部结构以及容器之间的关系和分类,还介绍了容器中List的结构分布 1.源代码版本介绍 1.1 VC的编译器源码目录: 2.类模板 2.1 类 ...

  10. MySql通过Data恢复数据库数据

    公司的服务器开不了机,把硬盘装在其他机器上面,文件是没有丢失,可是数据库开不了了.上网查了下,用DATA恢复了数据. 1.先通过MYSQL目录下的my.ini配置文件找到 datadir的文件夹地址. ...