shell脚本

通过shell脚本进行数据库操作

橙三吉。 提交于 2019-12-05 08:19:02
在做一些日常的运维工作的时候,经常需要些一些shell脚本进行设备性能以及其它参数的监控。在过去的一年工作中,接触到的比较多的是对数据库中某些信息的监控。 于是就想到了用shell+mysql+crontab进行实现。 下面附上通过shell命令行非交互式的操作数据库的方法: mysql -hhostname -Pport -uusername -ppassword -e 相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。 #!/bin/bash HOSTNAME="192.168.111.84" #数据库信息 PORT="3306" USERNAME="root" PASSWORD="" DBNAME="test_db_test" #数据库名称 TABLENAME="test_table_test" #数据库中表的名称 #创建数据库 create_db_sql="create database IF NOT EXISTS ${DBNAME}" mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}" #创建表 create_table_sql="create table IF NOT EXISTS $

运维常用shell脚本之日志清理

旧街凉风 提交于 2019-12-05 06:45:45
1、创建一个日志清理脚本 #/bin/bash for i in `find /root/.pm2/logs -name "*.log"` do cat /dev/null > $i done 将该脚本添加至定时任务,每隔30分钟执行一次 */30 * * * * /usr/bin/sh /root/.pm2/logs/cleanlog.sh >/dev/null 2>&1    # 查看/opt目录下,所有【非当天】的日志文件及大小 find /opt -name *.log.* | xargs du -sh # 删除/opt目录下所有【非当天】的日志文件 find /opt -name *.log.* | xargs rm -rf # 查看/opt目录下,所有【当天】日志文件及大小 find /opt -name *.log | xargs du -sh    来源: https://www.cnblogs.com/caidingyu/p/11911388.html

shell示例3

天大地大妈咪最大 提交于 2019-12-05 06:14:27
Table of Contents 示例 1 示例 2 示例 3 示例 4 示例 1 显示统计占用系统内存最多的进程,并排序. ps -aux|sed '1d'|sort -k 6 -nr 示例 2 编写脚本,使用 for 和 while 分别实现 192.168.0.0/24 网段内,地址是否能够 ping 通,若 ping 通则输出"success!", 若 ping 不通则输出"fail!" # 设定IP地址的网段 PREFIX=192.168.10 FRONT=1 END=10 # 开始ping,每个IP只ping 1次每次不超过1s. for IP in $(seq $FRONT $END);do ping -c 1 -w 1 $PREFIX.$IP &> /dev/null \ && echo -e $PREFIX.$IP 'success!'\ || echo -e $PREFIX.$IP 'fail!' & done # 当3s后可以确保完成,回车返回命令行提示符 sleep 3 echo 示例 3 每周的工作日 1:30,将/etc 备份至/backup 目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”, 其中日期是前一天的时间 # %F:输出yyyy-mm-dd %H:输出HH echo '30 1 * * 1,2,3,4

Python17个常用内置模块总结

寵の児 提交于 2019-12-05 05:27:05
Python17个常用内置模块总结 1、getpass 2、os 3、sys 4、subprocess 5、hashlib 6、json 7、pickle 8、shutil 9、time 10、datetime 11、re 12、random 13、configparser 14、traceback 15、yaml 16、itertools 17、logging 1、getpass模块详解 pwd = getpass.getpass("请输入密码:") #输入密码不可见 yh = getpass.getuser() #显示当前登录系统用户名; 2、os模块 os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") #改变当前脚本工作目录;相当于shell下cd os.curdir #返回当前目录: ('.') os.pardir #获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') #可生成多层递归目录 os.removedirs('dirname1') #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') #生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname'

Shell批量SSH免交互登录认证

不想你离开。 提交于 2019-12-05 05:02:11
脚本实现功能:批量或单个SSH免交互登录认证 脚本应用场景:当部署集群时,大多数实现要配置好管理节点与从节点的SSH免交互登录,针对这样的情况,写了下面脚本,简化工作。 脚本支持系统:Ubuntu和CentOS #!/bin/bash # Description: configuration local host and remote host ssh keypair authentication, Support Ubuntu and CentOS operation system. # Blog: http://lizhenliang.blog.51cto.com function color_echo() { if [ $1 == "green" ]; then echo -e "\033[32;40m$2\033[0m" elif [ $1 == "red" ]; then echo -e "\033[31;40m$2\033[0m" fi } function os_version() { local OS_V=$(cat /etc/issue |awk 'NR==1{print $1}') if [ $OS_V == "\S" -o $OS_V == "CentOS" ]; then echo "CentOS" elif [ $OS_V == "Ubuntu" ];

解决linux中zookeeper,tomcat等依赖jdk的程序自启动失败问题

梦想的初衷 提交于 2019-12-05 04:47:48
问题现象: 在etc/rc.local中配置了如下命令: /home/hadoop/zookeeper/bin/zkServer.sh start & /run/ayena/solr/tomcat/bin/startup.sh & 系统启动后用jps查看进程,发现zookeeper和tomcat均未启动。 原因: 配置java环境变量时,将JAVA_HOME配置在了etc/profile中。etc/profile中的环境变量只有登录后才会加载,非登录shell中是不会加载的。所以登录后手动启动可以,在rc.local中配置自启动不行。 解决办法(三选一): 1、在程序启动脚本中添加source /etc/profile 2、把etc/profile的信息添加到~/.bashrc中 3、在/zookeeper/bin/zkEnv.sh的中开始位置添加 export JAVA_HOME=/usr/local/jdk1.7.0_45 扩展阅读: 在linux中交互式shell和非交互式shell、登录shell和非登录shell是有区别的 在登录shell里,环境信息需要读取/etc/profile和~ /.bash_profile,~/.bash_login,~/.profile按顺序最先的一个,并执行其中的命令,除非被 --noprofile选项禁止了;在非登录shell里

LINUX SHELL编程笔记 附录 常用shell命令

喜夏-厌秋 提交于 2019-12-05 03:18:19
basename 格式: basename path basename命令能够从路径中分离出文件名。通常用于shell脚本中,请看下面的例子: 如果上面的语句是脚本myscript中的一部分,那么它的输出应为: myscript: give me a file 其中,$ 0是一个包含当前脚本全路径的特殊变量。 cat 格式: cat options files 选项: -v:显示控制字符。 cat是最常用的文本文件显示命令。 $ cat myfile 上面的命令用于显示myfile文件。 $ cat myfile myfile2 >>hold_file 上面的命令把两个文件(myfile和myfile2)合并到holdfile中。 在脚本中cat命令还可以用于读入文件。 compress 格式: compress options files 选项: -v:显示压缩结果。 compress命令可以用来压缩文件。压缩后的文件名具有‘ . Z’后缀。还可以使用该命令解压文件。 cp 格式: cp options file1 file2 选项: -i:在覆盖文件之前提示用户,由用户确认。 -p:保留权限模式和更改时间。 -r:拷贝相应的目录及其子目录。 要将文件myfile拷贝到myfile1.bak,使用: $ cp myfile1 myfile1.bak 要将文件get.prd从

linux shell awk 流程控制语句(if,for,while,do)详细介绍

≡放荡痞女 提交于 2019-12-05 02:40:14
  awk是gawk的链接文件,是一种优良的文本处理工具,实现格式化文本输出,是Linux和Unix现有环境中功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人拥有的知识量,使用"man gawk"给出的简述为“模式扫描和处理语言”。   任何awk语句都是由 模式和动作 组成,一个awk脚本可以有多个语句,模式决定动作语句的触发条件和触发时间。   模式包含:正则表达式,/[正则表达式]/;关系运算符,<、<=、>、>=、!=、==;正则运算符,~(匹配)、!~(不匹配);赋值运算符,=、+=、-=、*=、/=、%=、**=;逻辑运算符||、&&;算术运算符+、-、*、/、++、--;其他运算符,$(用来对字段进行引用),空格(字符串连接符)。   动作包含:变量、命令、内置函数、流程控制语句。   语法:awk [选项] ' BEGIN{开始语句} 模式{动作} END{结束语句} ' [文件]。其中 BEGIN和END 是awk的关键字, 必须大写。 不过开始模块和结束模块 是可选部分,可以省略 。并且 开始语句和结束语句也是动作语句 。另外, 工作模块中的 模式和动作可以都存在,也可以二者选其一 。 如果省略模式,那么文件的所有行都执行动作;如果省略动作,表示对符合条件的行执行默认的print动作 。正因为可以二者选其一,所以一般用{}包裹动作

adb shell常用命令

人盡茶涼 提交于 2019-12-05 02:35:36
一、文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容 -n:显示行号 -b:显示行号,但会忽略空行 -s:显示行号,连续空行标记为一行 df 无 列出分区列表 du [-H] [-L] [-P] [-a] [-d depth] [-s] [-cghikmnrx] [file...] 查询文件或目录的磁盘使用空间 ls [-a] [-i] [-l] [-n] [-s] 列出目录内容 -a:列出所有文件,包括隐藏文件 -i:输出文件的i节点的索引信息 -l列出文件的详细信息 -n:用数字的GUID代替名称 -s:输出该文件的大小 grep [-abcDEFGHhliJLlmnOoPqRSsUVvwxZz] [-A num] [-B num] [-C[num] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context=num] [--directories=action] [--lable] [--line-buffered] [pattern] [file...] 指定文件中搜索特定的内容,并将含有这些内容的行标准输出 mkdir -p,-parents 创建目录 -p,-

shell脚本书写规范

时光总嘲笑我的痴心妄想 提交于 2019-12-05 02:31:29
N年后的第一更,这里主要记录一些平时自己不太注意的点 1. shell脚本开头要注明解释器,并且推荐下面这种方式: #!/usr/bin/env bash 2. 一行代码太长,需要用 “\” 进行分行,看起来更美观 ./configure \ -prefix=/usr \ -sbin-path=/usr/sbin/nginx \ -conf-path=/etc/nginx/nginx.conf 3. 在脚本中获取外部命令返回值的正确方式: Num=$(wc -l FileName.txt|awk '{print $1}') 4. 在定义函数时,最好对函数的输入输出类型做注释 [] <- () # 输入空,输出空 [String] <- (var1: String, var2: String) # 输入两个字符型变量,输出字符型 [Boolean] <- (var1: String, var2: Int) # 输入字符型变量1,整型变量2,输出布尔值 [] <- (var1: String)例如:#[string] <- (string)Test(){  Name=$1  echo "Hello! My Name is:" ${Name}} 5. 一般用于外部调用的函数,用function定义;如果仅脚本内部使用,建议不加function关键词 # 通常情况下用于外部调用