shell脚本实例

python调用shell命令

时光怂恿深爱的人放手 提交于 2020-01-29 07:18:01
1.1 os.system(command) 在一个子shell中运行command命令,并 返回command命令执行完毕后的退出状态 。这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。 1.2 os.popen(command,mode) 打开一个与command进程之间的管道。这个函数的 返回值是一个文件对象 ,可以读或者写(由mode决定,mode默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。 os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。 1.3 commands.getstatusoutput(command)   使用 commands.getstatusoutput 函数执行command命令并 返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果 。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。 实例: >>>import commands >

shell编程基础

不羁岁月 提交于 2020-01-29 04:30:00
1.1 命名规则 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 1.2 使用变量 使用一个定义过的变量,只要在变量名前面加美元符号($)即可 加花括号是为了帮助解释器识别变量的边界,推荐给所有变量加上花括号,这是个好的编程习惯 已定义的变量,可以被重新定义 使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变 使用 unset 命令可以删除变量, 不能删除只读变量 1.3 变量类型 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行 1.4 Shell字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似 字符串的拼接 获取字符串长度 echo

模块二、shell脚本逻辑结构

核能气质少年 提交于 2020-01-29 01:19:23
七、if结构条件句知识与实践 (一)if条件句单双分支语法 1、单分支 if 条件 then 指令 fi 2、双分支 if 条件 then 指令 else 指令集2 fi (二)if条件句多分支语句 if 条件1 then 指令1 elif 条件2 then 指令2 elif 条件3 then 指令3 else 指令4 fi 实例: 如果不存在目录/backup,则创建。 [root@centos6-kvm3 scripts]# cat 07-01.sh #!/bin/bash path="/backup" [ -d $path ] || mkdir $path -p if [ -d $path ] then : else mkdir $path -p fi if [ !-d $path] then mkdir $path -p fi [root@centos6-kvm3 scripts]# 开发shell脚本判断内存是否充足,如果小于100,提示不足,如果大于100提示充足。 [root@centos6-kvm3 scripts]# cat 07-02.sh #!/bin/bash mem=`free -m | awk 'NR==3{print $NF}'` if [ $mem -lt 100 ] then echo "内存不充足!" else echo "内存充足!" fi

python调用shell命令

≯℡__Kan透↙ 提交于 2020-01-27 07:28:40
在 python 程序中调用 shell 命令 1. os.system(command) 此函数会启动子进程,在子进程中执行 command ,并返回 command 命令执行完毕后的退出状态,如果 command 有执行内容,会在标准输出显示。这实际上是使用 C 标准库函数 system() 实现的。 缺点:这个函数在执行 command 命令时需要重新打开一个终端,并且无法保存 command 命令的执行结果。 实例: os.system('ls -l *') 2. os.popen(command,mode) 打开一个与 command 进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写 ( 由 mode 决定, mode 默认是 ’r') 。如果 mode 为 ’r' ,可以使用此函数的返回值调用 read() 来获取 command 命令的执行结果。 os.system(cmd) 或 os.popen(cmd) ,前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。 实例: tmp = os.popen('ls -l *').readlines() 3. commands.getstatusoutput(command)   使用 os.popen() 函数执行 command 命令并返回一个元组 (status

linux netcat命令

心不动则不痛 提交于 2020-01-26 00:38:37
netcat是网络工具中的“ 瑞士军刀” ,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。 netcat所做的就是在两台电脑之间建立链接并返回两个数据流, 在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。 -a 显示所有socket,包括正在监听的。 netstat –apn |grep 进程名 查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name 下面是一些使用netcat的例子. [A(172.31.100.7) B(172.31.100.23)] Linux netcat 命令实例: 1,端口扫描 端口扫描经常被系统管理员和黑客用来发现在一些机器上开放端口,帮助他们识别系统中的漏洞。 $nc -z -v -n 172.31.100.7 21-25 可以运行在TCP或者UDP模式,默认是TCP,-u参数调整为udp. z 参数告诉netcat使用0 IO,指的是一旦连接关闭,不进行数据交换(译者注:这里翻译不准,如有其它更好的,请指出) v 参数指使用冗余选项(译者注:即详细输出) n 参数告诉netcat 不要使用DNS反向查询IP地址的域名

Linux 用户组 用户 以及 管理用户用户组的命令和文件详解

怎甘沉沦 提交于 2020-01-22 09:20:38
groups 查看当前登录用户的组内成员 groups gliethttp 查看gliethttp用户所在的组,以及组内成员 whoami 查看当前登录用户名 /etc/group文件包含所有组 /etc/shadow和/etc/passwd系统存在的所有用户名 1、/etc/group 解说; /etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组,那么这个用户就可以浏览root用户家目录的文件,如果root用户把某个文件 的读写执行权限开放,root用户组的所有用户都可以修改此文件,如果是可执行的文件(比如脚本),root用户组的用户也是可以执行的; 用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进去, 2、/etc/group 内容具体分析 /etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录;格式如下: group_name:passwd

shell基础之变量及表达式

柔情痞子 提交于 2020-01-22 01:49:32
本节内容 1. shell 变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 10. 退出状态 11. shell 表达式与运算符 11.1 条件表达式 11.2 整数比较符 11.3 字符串比较符 11.4 文件测试 11.5 布尔运算符 11.6 逻辑判断符 11.7 整数运算 11.8 其他运算工具 11.9 shell 括号用途总结 一、 shell 变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以, Shell 变量也遵循这个规则。 在 Bash shell 中,每一个变量的值都是字符串, 无论你给变量赋值时有没有使用引号,值都会以 字符串 的形式存储 。这意味着, Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。 二、定义变量 Shell 支持以下三种定义变量的方式: variable= value variable= 'value' variable= "value" variable 是变量名, value 是赋给变量的值。如果 value 不包含任何空白符(例如空格、 Tab

CentOS7.5通过shell脚本使用mysql_multi自动安装MySQL5.7.28多实例

大憨熊 提交于 2020-01-22 01:23:46
在文章上一篇文章中 https://blog.51cto.com/8355320/2466817 我使用的是手动使用mysql_multi方式安装mysql5.7.28多实例,安装过程比较耗时,这里我编写了shell脚本来自动化安装,请大家参考,脚本经测试没有出现问题,脚本我有二次修改里面的实例名与变量名,可能存在不一致,请自行对比确认下。脚本中有什么可以优化的还请多多指点,谢谢!!以下是脚本中的几点说明: 1、mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz包上传路径: /opt 如果没有此软件包,请将此脚本中如下代码行去掉 # 号注释,自动联网下载(下载过程很慢,建议提前下载并上传到/opt路径下) wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 2、mysql数据库脚本上传路径: /opt 包含如下文件(需要修改sql文件中的实例名) testone.sql testtwo.sql 4、根据服务器磁盘分配情况,创建对应软链接,例如: mkdir /home/data ln -s /home/data/ /data 5、修改(确保局域网内值唯一) mysql3306.cnf 的 server_id

CentOS7通过shell脚本自动部署oracle12c

笑着哭i 提交于 2020-01-22 01:22:46
由于经常需要部署oracle12c环境,我就将部署过程编写成shell脚本来,提高安装部署的效率,自动安装部署的脚本分为两部分,第一部分oracle_software.sh的作用是安装oracle软件环境;第二部分是listener_dbca.sh,作用是安装监听、配置oracle系统启停服务、配置数据库实例,临时表空间,数据表空间及授权。完成这两个脚本之后,最后的操作就是将待导入的dmp备份文件上传到服务器,操作expdp还原即可。 脚本的内容具体如下: oracle数据库自动安装部署脚本: [root@~]# cat oracle_software.sh #!/bin/bash #################### Steup 1 Install oracle software #################### #script_name: oracle_software.sh #Author: Danrtsey #mail:mydefiniteaim@126.com #auto_install_oracle12c version=12.1.0.2 # attentions: # 1.上传12c软件安装包至/opt/路径下(本脚本支持上传至任意路径,根据脚本执行执行) ######################################## # #

shell脚本实例-for实现批量主机的探测

孤者浪人 提交于 2020-01-21 18:57:17
#!/usr/bin/bash >ip.txt for i in {2..254} do { ip=192.168.234.$i ping -c1 -W1 $ip &>/dev/null if [ $? -eq 0 ];then echo "$ip" | tee -a ip.txt fi }& #这个是后台执行这个程序 done wait #这个是等待后台程序运行结束才执行成功 echo "finish...." 作者简介: 陈志珂(头条号: 强扭的瓜不好吃 )目前就职于中国最大的安卓应用软件公司,任高级工程师 , 现在公司任php开发工程师,python开发工程师,高级运维工程师,公众号“铅笔学园”运维内容合作作者之一。 铅笔学园 :IT资源分享|知识分享,做初级程序员的指明灯 来源: https://www.cnblogs.com/qianbixueyuan/p/9452575.html