shell脚本

彻底关闭tomcat服务

孤街浪徒 提交于 2019-12-19 23:55:53
例87 需求:在生产环境中,经常遇到tomcat无法彻底关闭,也就是说用tomcat自带shutdown.sh脚本无法将java进程完全关掉。所以,需要借助shell脚本,将进程杀死,然后再启动。 写一个shell脚本,实现上述功能。彻底杀死一个进程的命令是 kill -9 pid。 #!/bin/bash #这个脚本用来彻底杀死Tomcat进程 #作者:xzm #日期:2019-12-19 dir = /usr/local/tomcat/bin/ java_pc ( ) { pgrep java | wc -l } cd $dir ./shutdown.sh count = 0 while [ $count -lt 5 ] do n = ` java_pc ` if [ $n -gt 0 ] then killall java count = $ [ $count +1 ] sleep 1 else break fi done n = ` java_pc ` if [ $n -gt 0 ] then killall -9 java fi n = ` java_pc ` if [ $n -gt 0 ] then echo "Tomcat无法强制杀死。" exit fi cd $dir ./startup.sh 来源: CSDN 作者: 11+11 链接: https://blog

shell基础

白昼怎懂夜的黑 提交于 2019-12-19 07:07:18
1、shell介绍   通常说的shell就是shell脚本,他是一门脚本语言,弱类型 2、shell规范   第一行内容为#!/bin/bash   #注释   文件以“.sh”结尾的文件 3、shell语法   变量       1、变量名=变量值(等于号两遍没有空格) a=xiaohuihui       2、变量名规范:不能以数字开头,字母、数字、下划线组成       3、输出变量内容 echo $变量名 echo $a       4、变量的释放 unset 变量名       5、特殊的变量,带有空格的变量定义                 双引号“” :如果变量值中存在$+变量名的话,输出变量名对应的变量值,想要原样输出的话,可以转义符\                 单引号‘’ :如果变量值中存在$+变量名的话,将原样输出                 反单引号`` :存放的是命令   通过键盘输入 read read 变量名       1、变量名可以有一个或者多个,变量名用空格隔开,变量值用空格隔开       2、如果变量值多余变量名,那么将会把多余的变量值给最后一个变量       3、可以添加提示信息:read - p“提示内容” 变量名      参数传递:向.sh文件传递数据        文件中接收参数的方式:$1---->表示第一个参数  

Shell脚本-自动化部署WEB

自古美人都是妖i 提交于 2019-12-18 20:54:42
一、打包项目 1、从git克隆代码到本地 2、项目源码存储在/data/path/project_name目录下,eg:/data/back-end/peach 3、通过maven命令将jar/war安装到本地仓库 4、脚本文件取名为:install.sh #! /bin/bash if [ $# -ne 3 ] then echo "#### 参数有误,\$1:相对路径,\$2:项目名,\$3:分支版本" echo "#### 输入参数格式如:" echo "#### back-end peach master" echo "#### back-end pear v2.0" exit 1 fi echo "#### 输入参数,\$1:$1,\$2:$2,\$3:$3" project_path=/data/$1/$2 echo "#### $2项目源码存储路径:"$project_path rm -rf $project_path echo "#### $2项目源码删除完毕" git_path="git@gitlab.xm6f.com:"$1/$2".git" echo '#### git克隆代码 from '$git_path' to '$project_path git clone $git_path $project_path echo '#### git克隆代码完毕...

shell知识积累

核能气质少年 提交于 2019-12-18 15:22:38
教程: Shell脚本:Linux Shell脚本学习指南(超详细) Ubuntu下常用的快捷键 :https://blog.csdn.net/u010771356/article/details/53543041 变量名和等号之间不能有空格, 变量名 中间不能有空格,可以使用下划线 使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。 `命令` 等同于 $(命令) 原样输出字符串,不进行转义或取变量(用单引号) 例如:echo '$name\"' 输出结果:$name\" 显示命令执行结果 这里使用的是反引号 `, 而不是单引号 '。 例如:echo `date` 结果将显示当前日期 在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开 表达式和运算符之间要有空格 函数返回值在调用该函数后通过 $? 来获得。所有函数在使用前必须定义。 引用 http://www.runoob.com/linux/linux

Ansible的常用模块

断了今生、忘了曾经 提交于 2019-12-18 11:07:41
ansible命令解释 通过ansible命令执⾏的任务称为ad-hoc命令(任务),其实它是相对playbook⽽⾔的。通常,命令⾏⽤来实现ansible的批量管理功能,playbook⽤来实现批量⾃动化功能。 执行:ansible --help 查看具体的使用帮助 帮助参数详细说明: ---------------------------------------------------------------------------------------------------------------- [ 普通选项 ] -a MODULE_ARGS --args = MODULE_ARGS 传递参数给模块 --ask-vault-pass 询问vault的密码 -B SECONDS --background = SECONDS 异步后台⽅式执⾏任务,并在指定的秒数后超时,超时会杀掉任务的进程。默认是同步,即保持长连接,它会等待 所有执⾏完毕(即阻塞模式)。但有时候是没必要这样的,⽐如某些命令的执⾏时间⽐ssh的超时时间还长。如果 不指定超时秒数,将以同步⽅式运⾏任务 -P POLL_INTERVAL --poll = POLL_INTERVAL 异步模式下轮询任务的时间间隔,默认60秒 -C --check 不对远程主机做一些改变,而是预测某些可能发生的改变 ( 检查功能

U-Boot编译过程完全分析

妖精的绣舞 提交于 2019-12-18 10:50:22
本文转载于:http://www.cnblogs.com/heaad/archive/2010/07/17/1779806.html 2.1 U-Boot Makefile分析 2.1.1 U-Boot编译命令 对于mini2440开发板,编译U-Boot需要执行如下的命令: $ make mini2440_config $ make all 使用上面的命令编译U-Boot,编译生成的所有文件都保存在源代码目录中。为了保持源代码目录的干净,可以使用如下命令将编译生成的文件输出到一个外部目录,而不是在源代码目录中,下面的2种方法都将编译生成的文件输出到 /tmp/build目录: $ export BUILD_DIR=/tmp/build $ make mini2440_config $ make all 或 $ make O=/tmp/build mini2440_config (注意是字母O,而不是数字0) $ make all 为了简化分析过程,方便读者理解,这里主要针对第一种编译方式(目标输出到源代码所在目录)进行分析。 2.1.2 U-Boot配置、编译、连接过程 U-Boot开头有一些跟主机软硬件环境相关的代码,在每次执行make命令时这些代码都被执行一次。 1. U-Boot 配置过程 ( 1 )定义主机系统架构 HOSTARCH := $(shell uname -m

Shell—详解$0、$1、$2、$#、$*、$@、$?、$$变量

喜欢而已 提交于 2019-12-18 09:21:56
预定义变量:常用来获取命令行的输入 变量 作用 $0 当前Shell脚本本身的文件名称 $1 脚本接收的第一个参数($1-$9:第1-9个命令行参数名) $2 脚本接收的第二个参数($1-$9:第1-9个命令行参数名) $# 命令行参数个数。脚本接收的所有参数个数 $* 所有命令行参数列表。脚本接收的所有参数 $@ 所有命令行参数列表。脚本接收的所有参数 $$ 脚本运行时的PID $? 显示上一条命令执行的返回值,如果为0则代表执行成功,非0表示失败 https://blog.csdn.net/w2393040183/article/details/98069555 https://blog.csdn.net/xifeijian/category_1471505.html 来源: https://www.cnblogs.com/liuhaidon/p/11974739.html

10. CTF综合靶机渗透(三)

孤街浪徒 提交于 2019-12-18 04:48:36
靶机说明 斗牛犬工业公司最近将其网站污损,并由恶意德国牧羊犬黑客团队拥有。这是否意味着有更多的漏洞可以利用?你为什么不知道?:) 这是标准的Boot-to-Root。你唯一的目标是进入根目录并看到祝贺信息,你怎么做取决于你! 难度:初学者/中级,如果遇到困难,试着找出你可以与系统交互的所有不同方式。这是我唯一的暗示;) 目标 提权到root权限并查看flag 运行环境 这个靶机,作者建议在Virtualbox上运行。但是攻击机kali在vm中。 首先是网络环境,将两台处于不同虚拟机软件中的虚拟机配置到同一网卡下。 Virtualbox设置为桥接模式,桥接到物理的无线网卡 只有一块无线网卡链接到了互联网,所以kali直接桥接,复制物理网络即可。 最后kali执行 dhclient 命令,请求分配ip,bulldog直接开机即可。 信息收集 ip发现 kali安装在vmware,作为攻击机,ip为: bulldog靶机运行在virtualbox虚拟机上,在开机时,已经给出了ip地址: 端口扫描 执行命令 nmap -sS 192.168.0.113 发现 23 , 80 , 8080 端口开放 服务识别 执行命令 nmap -A -p 80,23 192.168.0.113 对23和80进行详细探测 发现ssh服务和web服务,并且web服务为python。 漏洞挖掘 首先查看web

运维自动化-Ansible ( 三 )

偶尔善良 提交于 2019-12-18 04:45:46
ansible-galaxy 连接 https://galaxy.ansible.com 下载相应的roles,此网站是Ansible爱好者将日常使用较好的playbooks打包上传,其他人可以免费下载 到Ansible PlayBooks并立即投入使用。 ansible-galaxy 语法: ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options]  列出已安装的galaxy #ansible-galaxy list geerlingguy.mysql - geerlingguy.mysql, 2.8.1  安装galaxy ansible-galaxy install geerlingguy.redis  删除galaxy ansible-galaxy remove geerlingguy.redis 进入网站后找到这时标记的地方 把名字复制下来 就可以在你的ansible主机上进行安装剧本了。 #ansible-galaxy install geerlingguy.mysql - downloading role 'mysql', owned by geerlingguy - downloading role from https:

shell批量创建用户

空扰寡人 提交于 2019-12-18 03:37:45
#!/bin/bash cat << EOF ************************************************************ 批量添加用户并随机生成8个字符串作为其密码 www.tianfeiyu.com ************************************************************ EOF admin=feiyu #定义所要添加用户的前缀名 [ -f /etc/init.d/functions ] && . /etc/init.d/functions || exit for n in $(seq -w 10) do passwd=`echo $(date +%t%N)$RANDOM|md5sum|cut -c 1-8` #生成随机密码 id ${admin}-$n &> /dev/null #判断用户是否存在 [ $? -ne 0 ] && { useradd ${admin}-$n &> /dev/null && user_status=$? echo "$passwd"|passwd --stdin ${admin}-$n &> /dev/null && passwd_status=$? if [ "$user_status" == 0 -a "$passwd_status" == 0 ]