常用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