Shell脚本学习2 运算符 Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。 # 命令行直接计算 expr 2 + 2 #4 expr 3 - 2 #1 expr 3 / 2 #1 expr 3 \* 2 #6 # 使用表达式 a=10 b=20 val=`expr /bin/bash str1='i' str2='love' str3='you' echo $str1 $str2 $str3 echo $str1$str2$str3 echo $str1,$str2 echo ${str:2:2} # 从第2个截取2个。 echo ${str:0} # 全部截取。 echo ${str:-3} # 负数无效,视为0。 : echo ${array_name[2]} #读取下标为2的元素 echo ${array_name[*]} #读取所有元素 echo ${array_name[@]} #读取所有元素 echo
1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt 2:/dev/null 代表空设备文件 3:2> 表示stderr标准错误 4:& 表示等同于的意思,2>&1,表示 你可以用 ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中; ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了 用strace可以看到: 1. command > file 2>&1 这个命令中实现重定向的关键系统调用序列是: open(file) == 3 dup2(3,1) dup2(1,2) 2. command 2>&1 >file 这个命令中实现重定向的关键系统调用序列是: dup2(1,2) open(file) == 3 dup2(3,1) 为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到 从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法.
类似前言的PI话 上一篇是基础篇,内容是关于爬虫的时候注意的动态页面和静态页面的区别,其实也没啥实质性的内容,这一篇才是刷课的一个思路 现在论坛或者其他地方肯定都有分享浏览器刷课的脚本,但是这类脚本通常都是需要你开着浏览器 ,然后脚本自动给你调1.5倍速、静音、自动切换下一个视频这样,我个人而言,不是很喜欢这类的脚本,我更偏向于,运行一下,所有的视频就全都看完了,所以实际的思路上,和那类脚本是完全不一样的 我这种脚本的做法 所以最后获取了所有的id后,直接拿这个接口疯狂发送数据,告诉他你看完了就好了,至于时长,自己把握,别刷了上百个小时 PS:昨天发现服务器上的一个服务有点问题,凌晨2点钟了还没睡,所有写这篇的时候,可能稍微逻辑有点不清
背景 要用 wrk 进行压测 看了下其他同事的压测,都用了 Lua 脚本来自定义一些东西 所以这一篇主要讲 Lua 脚本 Lua 介绍 Lua 脚本是一种轻量小巧的脚本语言,用标准 c 语言编写,并以源代码形式开放 wrk 工具嵌入了 Lua 脚本语言 因此,在自定义压测场景时,可在 wrk 目录下使用 Lua 定制压测场景 Lua 脚本的三个阶段 wrk 支持在三个不同的阶段执行 LuaJIT 脚本 setup: 1.1 GET 请求 这里如果想发起 POST 请求的话,Lua 脚本要怎么写 官方脚本 -- POST 请求,演示如何添加 -- HTTP method, body, header wrk.method 创建了 5 个线程, 以及每个线程发起的请求数和得到的响应数都有打印出来 工作上的模板栗子 Lua 脚本 为防止被盗,只放图片 ? ? 官方脚本栗子 https://github.com/wg/wrk/tree/master/scripts
批处理脚本制作案例 案例13:制作带有菜单的脚本 用到知识 冒号: goto if if用法 if 判断语句 命令 # 判断正确成功,则执行命令,否则不执行,结束判断 如:if 1==2 md c:\123 pause >nul 2>nul 案例16:制作简易加密脚本 @echo off title 加密程序v1.0--by dafeige echo ============================ pause 案例17:制作解密脚本 @echo off title 解密程序v1.0--by dafeige echo ========================================= assoc .png=mp3file assoc .zip=mp3file 案例19:恶意脚本--之-修复文件关联性 @echo off assoc .txt=txtfile # 只需要前后一致即可! pause /im 立即立刻 /f 强制 案例23:快速制作大文件脚本 fsutil file createnew d:\system.inf 40000000000 # 单位是字节 attrib
echo $[3<<2] #3*(2^2) =12 echo $[8>>2] #8/(2^2) =2 #位运算(按位或/与/异或 ) echo $((12|7)) #1100 | 0111 = - 0x04 shell编程数组(Array) Shell在编程方面比Windows批处理强大很多,无论是在循环、运算,数组作为一种特殊的数据结构在任何一种编程语言中都有它的一席之地,数组在Shell脚本中也是非常重要的组成部分 six two three (注意感叹号) #示例8.采用unset命令删除数组 unset array_pt[0] #删除数组中第一个元素 unset array_pt #删除整个数组 实战脚本 虽然test与[]也能达到效果,但还是建议采用[[]]来进行变量测试,同test命令为真返回0,否则返回非0 变量测试方式:只对shell有效,在脚本优化时候使用,推测y的值来给x赋值 变量测试说明: num2")) && { echo " $num1 == $num2 " } 注意事项: shell编程中下面的脚本命令后面不用加”;” 在使用[ ]进行变量测试的时候,表达式离两边 [ ] /
批处理脚本制作案例 案例13:制作带有菜单的脚本 用到知识 冒号: goto if if用法 if 判断语句 命令 # 判断正确成功,则执行命令,否则不执行,结束判断 如:if 1==2 md c:\123 pause >nul 2>nul 案例16:制作简易加密脚本 @echo off title 加密程序v1.0--by dafeige echo ============================ pause 案例17:制作解密脚本 @echo off title 解密程序v1.0--by dafeige echo ========================================= assoc .png=mp3file assoc .zip=mp3file 案例19:恶意脚本--之-修复文件关联性 @echo off assoc .txt=txtfile # 只需要前后一致即可! pause /im 立即立刻 /f 强制 案例23:快速制作大文件脚本 fsutil file createnew d:\system.inf 40000000000 # 单位是字节 attrib +s
文章目录 ConfigCommand 1 查询配置 Topic配置查询 其他配置/clients/users/brokers/broker-loggers 的查询 查询kafka版本信息 2 增删改 sh bin/kafka-configs.sh --describe --bootstrap-server xxxx:9092 --version 所有可配置的动态配置 请看最后面的 附件 部分 2 增删改 配置 --alter –alter 删除配置: --delete-config k1=v1,k2=v2 添加/修改配置: --add-config k1,k2 选择类型: --entity-type
录制脚本,只是一个过渡,从0到1的一个过渡,如果让你直接写脚本,你会无从下手,可以将录制的脚本快速转化成httprunner脚本文件。 har2case可以将.har文件转化成yaml格式或者json格式的httprunner的脚本文件,生成.har格式文件可以借助fiddler或Charles抓包工具。 勾选HTTPArchive v1.1类型后,下一步导出为test_login_demo.har文件 har2case转yaml格式脚本 接下来将刚才生成的test_login_demo.har文件,使用 har2case转成yam格式的脚本文件 har2case test_login_demo.har -2y -2y参数是设置转成.yml格式的脚本,如果不加这个参数,默认转成json格式 D:\>har2case har2case默认生成json格式的脚本,因为个人更喜欢yaml格式,所以json格式写在后面了. har2case test_login_demo.har D:\>har2case test_login_demo.har
【JavaScript脚本】——T2事件操作 自定义函数 function 函数名 ( 参数1,参数2){ 执行语句 } function fun(obj){ return document.getElementById("show").innerText = "无此运算"; } } </script> JS计算器demo2、
for循环中的变量名长度小于等于2的过滤掉。 函数名过滤掉(接下来会有专门针对函数的处理方式)。 关键字和保留字过滤掉,长度小于3的名称也过滤掉。 2.函数名混淆 通过obfuscatable_function函数确定要混淆的函数名称,原理上很简单,排除类似_init_的函数,然后前一个token是def,那当前的token就是函数名称。 在Py3中,支持unicode字符作为变量名称,所以基本上是使用unicode字符作为数据源,混淆后会出现各个国家的语言符号,看着着实恶心,而Py2则是使用的ASCII码的大小写作为数据源。 RESERVED_WORDS: # Can't replace reserved words yield perm 总结 pyminifier 算是一个不错的入门项目,帮助大家学习脚本混淆 接下来我会接着讲解脚本混淆的技术手段,不限于python。
需求 因近期有开发人员在跑脚本时占用系统内存太多导致系统其它进程宕掉,所以需要对系统进程进行扫描监控,如果检测到占用系统内存大于5G的进程就直接kill掉,但是担心误杀,所以暂时只做扫描并记录日志,进行观察 ,脚本如下: #! /usr/bin/env python2 # -*- coding:utf-8 -*- # 扫描所有进程内存占用量 import os import sys import psutil import |egrep -iv \"root|USER|CROND|redis|mysql|rabbitmq|celery\" |awk '$6>5242880{print $0}'|awk '{print $2, $6}'" # python之subprocess模块:https://docs.python.org/2/library/subprocess.html # https://www.cnblogs.com
: """ 递归比较2个目录的文件和目录 :param dir1: 源目录 :param dir2: 备份目录 :return: 需要进行同步的文件和目录 """ dircomp = filecmp.dircmp(dir1, dir2) # 源目录仅有的文件和目录 only_in_dir1 = dircomp.left_only for item in = os.path.abspath(sys.argv[2]) #dir1 = os.path.abspath('../0111') #dir2 = os.path.abspath('.. , dir2) for item in source_files: # 将源目录路径替换成备份目录路径 dest_item = re.sub(dir1, dir2, item) # dest_item) # 如果需要同步的是文件,则复制 if os.path.isfile(item): shutil.copyfile(item, dest_item) main() 最后将此脚本放进
编写备份脚本:根据提供的示例脚本进行修改和调整。测试脚本的基本功能,确保它可以正确备份指定目录。自动化备份:配置Cron定时任务来自动运行备份脚本。考虑设置不同的备份周期(如每日、每周)。 维护策略定期审查:定期检查备份脚本的有效性。更新脚本以适应新的需求和技术变化。监控与报警:监控备份过程的状态。当出现异常时及时发出警告。备份策略调整:根据业务需求的变化调整备份策略。 以下是一个简单的 shell 脚本示例:#! 您可以使用 chmod +x backup_script.sh 来赋予脚本执行权限。运行脚本:./backup_script.sh注意事项:如果源目录非常大或者包含大量文件,请考虑使用增量备份策略。 您可能还需要设置脚本的权限以允许其访问源目录和目标目录。如果需要定期自动备份,可以将此脚本添加到 cron 任务中。希望这个脚本对您有所帮助!如果您有任何进一步的需求或者问题,请随时告诉我。
在升级的过程中,可能需要准备一些额外的脚本,比如说做数据迁移的时候为了考虑性能,需要做如下的额外工作: 1.将部分表置为nologging 2.将部分index置为nologging 3.将部分foreign 但是在准备脚本的过程中,总是为这些小脚本而头疼,可能在升级前临时增加了一些表或者取消了部分表。或者有了其他的变更,维护这些脚本就显得有些体力工作了。 最后下决心改变这种状态,直接根据规则生成新的脚本。 在不同的环境中脚本内容可能略有不同,但是功能不打折。 首先需要准备一个文件tablst,里面是文件的列表 比如: table1 table2 table3 ... 然后使用如下的脚本,就能生成完整的脚本,在升级前nologging,disable的工作就生成脚本到pre目录下,logging,enable的工作就生成脚本到post目录下 脚本内容也没有了冗余。 $s/.$//' > tablst.temp table_list=`cat tablst.temp` function pre_act { logging_ind=$1 enable_ind=$2
昨天一个话题说关于AngularJS2以后版本的两个小技巧,不料引出了另外一个话题,话题起始很简单: “很多的前端框架并不复杂,比如JQuery,引入即用,实时看到效果,多好。 到了Angular2一直到现在的版本5,一点改进没有,还要编译,还要部署,原有的JS脚本也不能用了。” 我试着来回答一下: 首先,在AngularJS2框架之中实际使用的是ES6,全称ECMAScript6,是Javascript的下一个版本。 HostListener 是属性装饰器,用来为宿主元素添加事件监听,这个行为表示html端某个元素的事件,产生到达TS脚本的调用动作。 HostBinding 是属性装饰器,用来动态设置宿主元素的属性值,这个跟上面的动作相反,表示首先标记在html某元素的某属性,然后在TS脚本端,对这个属性进行设置、赋值。
只对外部脚本文件有效
asyns属性:与defer属性相似,都可以改变处理脚本行为,但标记asyns的脚步并不能保证它们的先后执行顺序. 目的:不让页面等待两个脚本下载和执行, 会在load事件前执行,但会在DomcontentLoaded事
件触发之前或之后执行, 支持的浏览器(Firefox 属性,相当于告诉浏览器立即下载,但延迟进行,虽然我们把<script>放在
/tcp.sh 使用步骤1,升级内核 2,安装加速软件 3,优化配置 Centos7 若升级内核安装锐速失败,请尝试下列脚本 bash <(wget -qO- https://github.com/Aniverse
配置查询 其他配置/clients/users/brokers/broker-loggers 的查询 broker-loggers 查询指定Broker的Logger相关配置 查询kafka版本信息 2 sh bin/kafka-configs.sh --describe --bootstrap-server xxxx:9092 --version 所有可配置的动态配置 请看最后面的 附件 部分 2 增删改 配置 --alter –alter 删除配置: --delete-config k1=v1,k2=v2 添加/修改配置: --add-config k1,k2 选择类型: --entity-type
安装 系统要求:CentOS 7+/Debian 6+/Ubuntu 14.04+ 推荐Debian 7 x64,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。 执行下面的代码下载并运行脚本: wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi /usr/shell/Aria2/aria2.sh && chmod +x aria2.sh && bash aria2.sh 运行脚本后会出现脚本操作菜单,选择并输入1就会开始安装。 使用 进入下载脚本的目录,运行 ./aria2.sh 然后选择你要执行的选项即可。 一些操作 启动:service aria2 start 停止:service aria2 stop 重启:service aria2 restart 查看状态:service aria2 status