常用Linux脚本集锦
时间:2022-07-26
本文章向大家介绍常用Linux脚本集锦,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
常用linux脚本:
- Linux系统bash脚本获取系统硬件资源
- Aix系统ksh脚本获取系统硬件资源
- 服务器打开session时显示帮助信息
- curl post中带有变量的脚本
- 金三系统基线包安装部署脚本
Linux系统bash脚本获取系统硬件资源
#!/bin/sh
echo "系统资源使用情况:以下各个数字均为百分比%"
echo "CPU平均使用率:"
top -n 3 b|grep 'Cpu(s)'|awk '{print $2}'|cut -d '%' -f 1|awk '{sum+= $1} END {printf "%.2fn",sum/3}'
echo "内存使用率:"
free|grep 'Mem:'|awk '{realused=$3-$6-$7} END {printf "%.2fn",realused*100/$2}'
echo "磁盘使用率:"
df|awk '{if(length($6)==1) print $5}'|cut -d '%' -f 1
echo "Inode使用率:"
df -i|awk '{if(length($6)==1) print $5}'|cut -d '%' -f 1
Aix系统ksh脚本获取系统硬件资源
#!/bin/sh
echo "以下数据均为百分比"
echo "cpu"
vmstat 1 3|sed -n '7,9p'|awk '{free+=$16} END {printf "%.2fn",100-free/3.0}'
echo "memory"
svmon|grep memory|awk '{printf "%.2fn",1.0*$3/$2}'
echo "disk"
df /u01|sed -n 2p|awk '{print $4}'|cut -d '%' -f 1
echo "Inode"
df /u01|sed -n 2p|awk '{print $6}'|cut -d '%' -f 1
服务器打开session时显示帮助信息
将脚本的执行语句写在用户profile中,登录时即可看到帮助信息
脚本名称:help.sh
tput setaf 2
tput blink
echo "====================测试服务器133======================"
tput sgr0
tput setaf 2
echo "
--------------**支持dt,hx,sj,js---------------------
log-gs**.sh 查看日志
re-gs**.sh 重启应用
--------------**支持dt,hx,sj,js---------------------
***** help.sh 呼唤帮助信息 *****"
tput blink
echo "====================测试服务器133======================"
tput sgr0
curl post中带有变量的脚本
#!/bin/bash
username="suncle"
apiKey="xxxxxx"
domain=$1
echo $domain
date=`date -R -u | awk '{print $1" "$2" "$3" "$4" "$5" GMT"}'`
password=`echo -en "$date" | openssl dgst -sha1 -hmac $apiKey -binary | openssl enc -base64`
curl -i --url "https://open.chinanetcenter.com/api/report/flow/stream/detail"
-X "POST"
-u $username:$password
-H "Date: $date"
-H "Accept: application/json"
-d '{
"dateFrom": "2018-03-01T00:00:00+08:00",
"dateTo": "2018-03-02T00:00:00+08:00",
"domainStream": [
{
"domain": "'"$domain"'"
}
],
"dataType": "bandwidth",
"dataInterval": "5m"
}'
参见domain变量的处理:“domain”: “'“$domain”'”
金三系统基线包安装部署脚本
判断weblogic用户和组是否存在,判断/weblogic目录是否存在
脚本名称:install-gs-1-init.sh
#!/bin/sh
USER_NAME="weblogic"
GROUP_NAME="weblogic"
if [ "$(whoami)" != "root" ]; then
echo -e " 33[31m当前登录用户不是root用户,请使用root用户操作。 33[0m";exit 1
fi
echo -e " 33[31m该脚本需在所有应用服务器执行。 33[0m"
testing1=$(egrep "^${USER_NAME}:" /etc/passwd)
if [ "${testing1}" != "" ]; then
GROUP_ID=$(egrep "^${USER_NAME}:" /etc/passwd|cut -d ":" -f 4)
GROUP_NAME=$(egrep ":${GROUP_ID}:" /etc/group|cut -d ":" -f 1)
echo -e " 33[32m用户${USER_NAME}已存在,用户组为${GROUP_NAME}。 33[0m"
else
testing2=$(egrep "^${GROUP_NAME}:" /etc/group)
if [ "$testing2" != "" ]; then
useradd -g ${GROUP_NAME} ${USER_NAME}
echo -e " 33[32m用户组${GROUP_NAME}存在,但用户${USER_NAME}不存在,已创建。 33[0m"
else
groupadd ${GROUP_NAME};useradd -g ${GROUP_NAME} ${USER_NAME}
echo -e " 33[32m用户组${GROUP_NAME}和用户${USER_NAME}都不存在,均已创建。 33[0m"
fi
fi
if test -d /weblogic; then
CURRENT_TIME=$(date +%Y%m%d%H%M%S)
mv /weblogic /weblogic_${CURRENT_TIME}
mkdir -p /weblogic;chown -R ${USER_NAME}:${GROUP_NAME} /weblogic
echo -e " 33[31m目录/weblogic已存在,自动备份为/weblogic_${CURRENT_TIME},并重新创建空目录/weblogic。 33[0m"
else
mkdir -p /weblogic;chown -R ${USER_NAME}:${GROUP_NAME} /weblogic
echo -e " 33[32m目录/weblogic不存在,已创建。 33[0m"
fi
echo -e " 33[31m请确认已设置weblogic用户的密码。 33[0m"
解压安装weblogic中间件和jdk并且设置环境变量
脚本名称:install-gs-2-base.sh
#!/bin/sh
INITIAL_PATH="/tmp/weblogic_initial"
if [ "$(whoami)" != "weblogic" ]; then
echo -e " 33[31m当前登录用户不是weblogic用户,请使用weblogic用户操作。 33[0m";exit 1
fi
echo -e " 33[31m该脚本需在所有应用服务器执行。 33[0m"
if test -d ${INITIAL_PATH}; then
CURRENT_TIME=$(date +%Y%m%d%H%M%S)
mv ${INITIAL_PATH} ${INITIAL_PATH}_${CURRENT_TIME}&&mkdir -p ${INITIAL_PATH}&&echo -e " 33[31m目录${INITIAL_PATH}已存在,自动备份为${INITIAL_PATH}_${CURRENT_TIME},并重新创建空目录${INITIAL_PATH}。 33[0m"
else
mkdir -p ${INITIAL_PATH}&&echo -e " 33[32m目录${INITIAL_PATH}不存在,已创建。 33[0m"
fi
echo -e "请将基础软件包weblogic_base_*.tar.bz2上传到该服务器${INITIAL_PATH}目录下。 33[31m请使用weblogic用户上传。 33[0m"
echo -e " 33[31m上传完毕后, 33[0m请按任意键继续..."
read -n 1 var
num=$(ls ${INITIAL_PATH}/weblogic_base_*.tar.bz2|wc -l)
while true
do
echo -e "检测到【${num}】个基础软件包${INITIAL_PATH}/weblogic_base_*.tar.bz2"
if [ ${num} -eq 0 ]; then
echo -e " 33[31m请确认是否已正确上传。 33[0m"
elif [ ${num} -gt 1 ]; then
echo -e " 33[31m请移除多余的base包。 33[0m"
else
base_package=$(ls ${INITIAL_PATH}/weblogic_base_*.tar.bz2)
echo -e "包名为 33[32m${base_package} 33[0m"
read -p "请确认包名是否正确?正确输入Y,否则输入N。" yn
if [ "$yn" == "Y" -o "$yn" == "y" ]; then
yn=
break
else
echo -e " 33[32m输入不是Y,包名错误,需要重新上传。 33[0m"
yn=
fi
fi
echo -e " 33[31m处理完毕后, 33[0m请按任意键继续..."
read -n 1 var
num=$(ls ${INITIAL_PATH}/weblogic_base_*.tar.bz2|wc -l)
done
echo -e "开始解压安装包..."
tar -xjvf ${base_package} -C /
echo -e " 33[32m解压base包到/weblogic完毕。 33[0m"
mkdir -p /weblogic/user_projects/domains
mkdir -p /weblogic/user_projects/scripts
if [ "~" != "/weblogic" ]; then
cp /weblogic/.bash_profile ~/.bash_profile
echo -e " 33[31m用户环境变量已经更新,请执行命令source ~/.bash_profile使环境变量生效。 33[0m"
fi
根据具体服务器情况抽取相应的应用到各台服务器
脚本名称:install-gs-3-gsap.sh
#!/bin/sh
INITIAL_PATH="/tmp/weblogic_initial"
if [ "$(whoami)" != "weblogic" ]; then
echo -e " 33[31m当前登录用户不是weblogic用户,请使用weblogic用户操作。 33[0m";exit 1
fi
echo -e " 33[31m该脚本需在所有应用服务器执行。 33[0m"
if test -d ${INITIAL_PATH}; then
CURRENT_TIME=$(date +%Y%m%d%H%M%S)
mv ${INITIAL_PATH} ${INITIAL_PATH}_${CURRENT_TIME}&&mkdir -p ${INITIAL_PATH}&&echo -e " 33[31m目录${INITIAL_PATH}已存在,自动备份为${INITIAL_PATH}_${CURRENT_TIME},并重新创建空目录${INITIAL_PATH}。 33[0m"
else
mkdir -p ${INITIAL_PATH}&&echo -e " 33[32m目录${INITIAL_PATH}不存在,已创建。 33[0m"
fi
echo -e "请将基础软件包weblogic_base_*.tar.bz2上传到该服务器${INITIAL_PATH}目录下。 33[31m请使用weblogic用户上传。 33[0m"
echo -e " 33[31m上传完毕后, 33[0m请按任意键继续..."
read -n 1 var
num=$(ls ${INITIAL_PATH}/weblogic_base_*.tar.bz2|wc -l)
while true
do
echo -e "检测到【${num}】个基础软件包${INITIAL_PATH}/weblogic_base_*.tar.bz2"
if [ ${num} -eq 0 ]; then
echo -e " 33[31m请确认是否已正确上传。 33[0m"
elif [ ${num} -gt 1 ]; then
echo -e " 33[31m请移除多余的base包。 33[0m"
else
base_package=$(ls ${INITIAL_PATH}/weblogic_base_*.tar.bz2)
echo -e "包名为 33[32m${base_package} 33[0m"
read -p "请确认包名是否正确?正确输入Y,否则输入N。" yn
if [ "$yn" == "Y" -o "$yn" == "y" ]; then
yn=
break
else
echo -e " 33[32m输入不是Y,包名错误,需要重新上传。 33[0m"
yn=
fi
fi
echo -e " 33[31m处理完毕后, 33[0m请按任意键继续..."
read -n 1 var
num=$(ls ${INITIAL_PATH}/weblogic_base_*.tar.bz2|wc -l)
done
echo -e "开始解压安装包..."
tar -xjvf ${base_package} -C /
echo -e " 33[32m解压base包到/weblogic完毕。 33[0m"
mkdir -p /weblogic/user_projects/domains
mkdir -p /weblogic/user_projects/scripts
if [ "~" != "/weblogic" ]; then
cp /weblogic/.bash_profile ~/.bash_profile
echo -e " 33[31m用户环境变量已经更新,请执行命令source ~/.bash_profile使环境变量生效。 33[0m"
fi
- 排查Java的内存问题
- 使用两种方法让 ASP.NET Core 实现遵循 HATEOAS 结构的 RESTful API
- 设计模式六大原则(5):迪米特法则
- Selenium2+python自动化61-Chrome浏览器(chromedriver)
- 区块链可以减少社会不平等吗?
- 【干货】不止准确率:为分类任务选择正确的机器学习度量指标(附代码实现)
- python爬虫beautifulsoup4系列1
- 区块链入门教程
- python爬虫beautifulsoup4系列2
- python爬虫beautifulsoup4系列3
- 多元回归模型
- C++ STL之min_element()与max_element()(取容器中的最大最小值)
- RESTful API 设计最佳实践
- python爬虫beautifulsoup4系列4-子节点
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ansible Jinja2 模板使用
- 自动化运维工具Ansible之Tests测验详解
- 自动化运维工具Ansible之Roles角色详解
- 全网最酷南极路线图
- 误删cloudera-scm-agent恢复
- 自动化运维工具Ansible之LNMP实践环境部署
- 如何在Windows下使用NCL
- Python基础绘图教程(一)
- 如何通过VMware安装Linux CentOS 7.7系统
- HBase入门
- VMware如何克隆一个虚拟机 主机名修改IP地址修改数据目录创建
- Python基础绘图教程(二)
- Docker简介与安装
- python绘图 | 国家气象局开源预报检验库(多图预警)
- Docker镜像与容器的常用操作