linux脚本

Shell高级编程学习笔记(基础篇)

孤街浪徒 提交于 2019-12-20 08:26:03
目录 1.shell脚本的执行方法    2.shell的变量类型    3.shell特殊变量 4.变量子串的常用操作    5.批量修改文件名实践    6.变量替换 7.在shell中计算字符串长度的方法   8.变量的数值计算:(()) 的用法 9. 变量的数值计算:let的用法     10.变量的数值计算:expr的用法 11.变量的数值计算:bc的用法    12.条件测试的多种方法 13.字符串测试操作符           14.整数二元比较操作符 15.逻辑操作符               16.利用shell知识制作单级及多级菜单 17.case结构条件语句         18. 当型循环和直到型循 环 19.for循环         待续。。。 1.shell脚本的执行方法 返回目录 当shell脚本以非交互的方式运行时,它会先查找环境变量ENV,该变量指定了一个环境文件(通常是.bashrc),然后从该环境变量文件开始执行,当读取了ENV文件后,SHELL才开始执行shell脚本中的内容。 shell脚本的执行通常可以采用以下三种方法: bash script-name 或者 sh script-name path/script-name 或者 ./script-name(当前路径下执行) source script-name 或 . script

解决centos6执行salt-api失败思路(upgrade pyOpenSSL to at least 0.14.1 to enable the use of X509 extension)

我与影子孤独终老i 提交于 2019-12-19 12:41:24
文章目录 前文 问题排查 解决方案 总结 前文   公司的机器大部分由centos6升到7了,于此同时用于管理机器的saltstack也纷纷从python2启动到变成python3启动,不过一些老机器由于服务未迁移的原因,所以还停留在python2,而问题就出现在一台centos6上由python2启动的salt-minion。   当通过salt-master调用salt-api执行modules里的脚本时出现异常,查看salt日志报错如下: You should upgrade pyOpenSSL to at least 0.14.1 to enable the use of X509 extension 问题排查   从报错信息来看是pyOpenSSL的版本过低(未到达0.14)导致,于是通过yum install pyOpenSSL来更新版本,发现centos6最多仅支持0.13版本,相关链接: https://github.com/saltstack/salt/issues/28872   然后查阅大量资料,并没有相关的解决方案…毕竟是python2.6,即使相对于Python2.7也是更老的版本,而2.7相关支持还更多点,于是我决定升级Python2.7来处理。   在将centos6默认python2.6升级到python2.7后(相关升级的安装可以自行百度)

shell 编程入门

亡梦爱人 提交于 2019-12-19 05:39:04
shell 介绍 在计算机科学中,shell 是一个命令解释器, shell 脚本是 shell 编程的一种实现 shell 是位于操作系统和应用程序之间,是他们二者最主要的接口,shell 负责把应用程序的命令解释给操作系统,将操作系统处理后的结果解释给应用程序,所以,shell 相当于是应用程序与操作系统之间的媒介(翻译官的角色) linux 内一般是 bash,mac 是 zsh,然后还有 windows 的cmd,不过最近 windows 发布了完整内核的 linux 子系统 WSL 2 查看当前系统的 shell 类型:echo $SHELL shell 脚本 定义:可执行的 linux 命令不在命令行下执行,而是通过一个文件执行时,称这个文件是 shell 脚本 一般用 vim 直接打开文件即可创建一个脚本,例如 vim start_service.sh 表示创建一个开启服务的脚本,脚本的内容自然是各种可执行的命令 #!/bin/bash echo 'start service~' 注释:单行使用 #,多行注释有两种方法,分别是 :<<! ... ! 和 :<<字符 ... 字符 #!/bin/bash echo '1' :<<! echo '3' echo '4' ! echo '5' 脚本执行方式:   bash /path/test.sh     使用 bash

Python执行脚本方法

ⅰ亾dé卋堺 提交于 2019-12-18 22:35:17
Python中调用shell脚本,常用的函数有os.system、os.popen()和subprocess.Popen() os.system方法 语法:os.system(cmd) os.system()执行过程中主要执行了:fork()出一子进程;子进程调用exec()执行命令。 例1: >>> import os >>> os.system('dir D:\Python') 执行成功,返回0。 例2: import os res = os.system('ping www.baidu.com -n 3') if res == 0: print('成功') else: print('失败了') 执行结果: 注: 1).os.system()执行cmd指令,返回结果0表示执行成功,返回1表示失败。 2).os.system()无法获取在cmd输出的内容。 3).os.system()调用外部系统命令,返回命令结果码,无法获取命令执行输出结果。 os.popen方法 语法:popen(cmd, mode='r', buffering = -1) 参数: cmd:要执行的命令。 mode:打开文件的模式,默认为'r',用法与open()相同。 buffering:(可选参数),0表无缓冲;1表行缓冲;-1表默认缓冲值; os.popen()方法会打开一管道

shell编程(1)

℡╲_俬逩灬. 提交于 2019-12-18 09:54:00
一、shell简介   1.脚本:脚本就是一些命令的堆积。   常见的脚本: JavaScript(J S ,前端) ,VBScript, ASP, JSP,PHP(后端) ,SQL(数据库操作语言),Perl, Shell ,python,Ruby,JavaFX, Lua等。   2.shell的优势:    ①Shell属于内置的脚本   ②程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务(批处理)   ③语法简单,代码写起来比较轻松,简单易学   3.shell简介   Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理, Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。 下面是流程示意图: Shell 既然是工作在 Linux 内核之上,那我们也有必要了解下 Linux 相关知识。 Linux 是一套免费试用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任 务、支持多线程和多 CPU 的操作系统。 1983 年 9 月 27 日,Richard Stallman(理查德-马修-斯托曼)发起 GNU 计划,它的目标是创建一 套完全自由的操作系统。为保证 GNU 软件可以自由的使用、复制、修改和发布,所有的 GNU 软件都

MySQL数据库定时备份Shell脚本

余生颓废 提交于 2019-12-17 22:01:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这是一个简单的MySQL数据库备份 shell 脚本,适用于单台 Linux 服务器或者VPS的mysql数据库备份工作, 工作原理是使用mysql的mysqldump工具来导出数据库为.sql文件,然后将所有导出的文件打包归档。 然后我们在shell脚本中使用 scp命令把备份文件复制到另外一台备份机器,由于scp每次传送文件要密码 因此我们需要使用 expect插件 或者利用密钥。在这里介绍采用生成密钥对的方法。 1,生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa" 生成的过程中提示输入密钥对保存位置及密码,直接回车,接受默认值就行了。 其中公共密钥保存在 ~/.ssh/id_rsa.pub,私有密钥保存在 ~/.ssh/id_rsa 。 2,然后修改 .ssh 目录权限,chmod 755 ~/.ssh 。最后把 公共密钥复制到你要访问 的机器上去,并保存为: ~/.ssh/authorized_keys 。 scp -P 1110 ~/.ssh/id_rsa.pub daniel@*.*.*.*:/home/daniel/.ssh/authorized_keys (注意这里- P 为大写, 表示目标机器daniel 的ssh端口为1110,小写的p为源ssh端口,

Linux常用的系统监控shell脚本

给你一囗甜甜゛ 提交于 2019-12-17 21:50:39
Linux常用的系统监控shell脚本 下面是我常用的几个 Linux 系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助。 1、查看主机网卡流量 #!/bin/bash #network #Mike.Xu while : ; do time=’date +%m”-“%d” “%k”:”%M’ day=’date +%m”-“%d’ rx_before=’ifconfig eth0|sed -n “8”p|awk ‘{print $2}’|cut -c7-‘ tx_before=’ifconfig eth0|sed -n “8”p|awk ‘{print $6}’|cut -c7-‘ sleep 2 rx_after=’ifconfig eth0|sed -n “8”p|awk ‘{print $2}’|cut -c7-‘ tx_after=’ifconfig eth0|sed -n “8”p|awk ‘{print $6}’|cut -c7-‘ rx_result=$[(rx_after-rx_before)/256] tx_result=$[(tx_after-tx_before)/256] echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps” sleep 2

在Bash脚本中管道往返剪贴板

▼魔方 西西 提交于 2019-12-17 20:38:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 是否可以在Bash中管道进出剪贴板? 无论是与设备手柄之间的管道连接还是使用辅助应用程序,我找不到任何东西。 例如,如果 /dev/clip 是链接到剪贴板的设备,我们可以这样做: cat /dev/clip # Dump the contents of the clipboard cat foo > /dev/clip # Dump the contents of "foo" into the clipboard #1楼 复制并粘贴到Windows中的剪贴板(Cygwin): 看到: $ clip.exe - ? CLIP描述:将命令行工具的输出重定向到Windows剪贴板。 然后可以将此文本输出粘贴到其他程序中。 参数列表:/? 显示此帮助消息。 示例:DIR | CLIP将当前目录列表的副本放入Windows剪贴板。 CLIP <README.TXT将readme.txt中的文本副本放在Windows剪贴板上。 还存在getclip(可以代替shift + ins!),putclip(echo oaeuoa | putclip.exe把它放到剪辑中) #2楼 这是一个随时可用的bash脚本,用于读取可在多个平台上运行的剪贴板。 如果您添加功能(例如更多平台),请在此处编辑脚本。 #!/bin/bash #

Deepgreen数据库日志清理脚本

梦想的初衷 提交于 2019-12-17 20:09:45
原文链接 数据库时间久了,难免会产生很多日志,Deepgreen的日志与Greenplum一样,都存在pg_log文件夹下,我们可以使用以下脚本,配合Linux定时任务,保存固定日期的日志即可: #!/bin/bash # filename: gp_clear.sh # start time start_time=$(date) echo "-------- Start time is $start_time --------" start_seconds=$(date +%s) # delete log files #find /data/gpmaster/gpseg-1/pg_log -mtime +15 -name "*.csv" -exec rm -rf {} \; find /seg0/gpseg0/pg_log -mtime +15 -name "*.csv" -exec rm -rf {} \; #find /seg1/gpseg1/pg_log -mtime +90 -name "*.csv" -exec rm -rf {} \; #find /seg2/gpseg2/pg_log -mtime +90 -name "*.csv" -exec rm -rf {} \; #find /seg3/gpseg3/pg_log -mtime +90 -name "*.csv

linux通用自动清理日志脚本

故事扮演 提交于 2019-12-17 16:56:52
1.本文是在做自动部署系统时精简的一个脚本,主要功能是清理所有目录的日志 2.根据给定日志目录,删除时间 结合crontab进行清理日志,清理完成后,后在/var/log/deltelog/ 生成按照月的清理日志 3.扩展,因为脚本采用mtime(最后修改时间)进行删除,所以可以适用于删除过期备份等,不受文件名称的限制 shell小窍门 find –type f –print 时会根据换行或者空格来输出查找的文件,在不同的sh下有不同的反应,如果不做处理结合xargs 进行删除 更改操作,会有影响 所以需要增加 –print0 用 null来 作为边界符号,才敢结婚 xargs –o 来格式化输入 使用find 的时候 遵循最小结果集原则,find解析式从左到右,所有确保你在最左边的过滤符号能够过滤最大数据 你可以根据你的需要增加到crontab中 shell脚本 #!/bin/sh ########################### #delete log # in_day_num: like 1 2 is delete 2day ago logs # in_log_path like tomcat log home ########################### in_log_path=${1} in_day_num=${2} tmp_delete_log=/var