工作中常用的shell操作總結(jié)2

個人專題目錄

工作中常用的shell操作總結(jié)2

1. url地址監(jiān)控

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# need you set this URL and Listening CONTEXT
URL='www.baidu.com'
CONTEXT='百度一下'
# define url
WEB_URL=('http://'+$URL)

# check network
NET_ALIVE=$(ping -c 5 ${URL} |grep 'received'|awk 'BEGIN {FS=","} {print $2}'|awk '{print $1}')
if [[ ${NET_ALIVE} == 0 ]]; then
    echo "Network is not active,please check your network configuration!"
    exit 0
fi
# check url
for((i=0; i!=${#WEB_URL[@]}; ++i))
{
  ALIVE=$(curl -o /dev/null -s -m 30 -connect-timeout 30 -w %http_code ${WEB_URL[i]} |grep ${CONTEXT})
  echo ${ALIVE}
if [[ ${ALIVE} =~ $CONTEXT ]]; then
     echo "'${WEB_URL[i]}' is OK!"
  else
    echo "failed!"
  fi
}

2. linux系統(tǒng)監(jiān)控相關整理

#!/bin/bash
# func:sys info check

[[ $(id -u) -gt 0 ]] && echo "請用root用戶執(zhí)行此腳本!" && exit 1
sys_version=$(rpm -q centos-release|cut -d- -f3)
line="-------------------------------------------------"

[[ -d logs ]] || mkdir logs

sys_check_file="logs/$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt"

# 獲取系統(tǒng)cpu信息
function get_cpu_info() {
    Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l)
    Virtual_CPUs=$(grep "processor" /proc/cpuinfo | wc -l)
    CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}')
    CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq)
    CPU_Arch=$(uname -m)
cat <<EOF
CPU信息:
物理CPU個數(shù):${Physical_CPUs}
邏輯CPU個數(shù):${Virtual_CPUs}
每CPU核心數(shù):${CPU_Kernels}
CPU型號:${CPU_Type}
CPU架構:${CPU_Arch}
EOF
}

# 獲取系統(tǒng)內(nèi)存信息
function get_mem_info() {
    check_mem=$(free -m)
    MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}')  #KB
    MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}')    #KB
    let MemUsed=MemTotal-MemFree
    MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
    report_MemTotal="$((MemTotal/1024))""MB"        #內(nèi)存總?cè)萘?MB)
    report_MemFree="$((MemFree/1024))""MB"          #內(nèi)存剩余(MB)
    report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%"   #內(nèi)存使用率%

cat <<EOF
內(nèi)存信息:${check_mem}
EOF
}

# 獲取系統(tǒng)網(wǎng)絡信息
function get_net_info() {
    pri_ip_add=$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')
    pub_ip_add=$(curl ifconfig.me -s)
    gateway=$(ip route | grep default | awk '{print $3}')
    mac_info=$(ip link| egrep -v "lo"|grep link|awk '{print $2}')
    dns_config=$(egrep -v "^$|^#" /etc/resolv.conf)
    route_info=$(route -n)
cat <<EOF
IP信息:
系統(tǒng)公網(wǎng)地址:${pub_ip_add}
系統(tǒng)私網(wǎng)地址:${pri_ip_add}
網(wǎng)關地址:${gateway}
MAC地址:${mac_info}
路由信息:${route_info}
DNS 信息:${dns_config}
EOF
}

# 獲取系統(tǒng)磁盤信息
function get_disk_info() {
    disk_info=$(fdisk -l|grep "Disk /dev"|cut -d, -f1)
    disk_use=$(df -hTP|awk '$2!="tmpfs"{print}')
    disk_inode=$(df -hiP|awk '$1!="tmpfs"{print}')

cat <<EOF
磁盤信息:${disk_info}
磁盤使用:${disk_use}
inode信息:${disk_inode}
EOF

}

# 獲取系統(tǒng)信息
function get_sys_status_info() {
    sys_os=$(uname -o)
    sys_release=$(cat /etc/redhat-release)
    sys_kernel=$(uname -r)
    sys_hostname=$(hostname)
    sys_selinux=$(getenforce)
    sys_lang=$(echo $LANG)
    sys_lastreboot=$(who -b | awk '{print $3,$4}')
    sys_runtime=$(uptime |awk '{print  $3,$4}'|cut -d, -f1)
    sys_time=$(date)
    sys_load=$(uptime |cut -d: -f5)

cat <<EOF
系統(tǒng)信息:
系統(tǒng): ${sys_os}
發(fā)行版本:   ${sys_release}
系統(tǒng)內(nèi)核:   ${sys_kernel}
主機名:    ${sys_hostname}
selinux狀態(tài):  ${sys_selinux}
系統(tǒng)語言:   ${sys_lang}
系統(tǒng)當前時間: ${sys_time}
系統(tǒng)最后重啟時間:   ${sys_lastreboot}
系統(tǒng)運行時間: ${sys_runtime}
系統(tǒng)負載:   ${sys_load}
EOF
}

# 獲取服務信息
function get_service_info() {
    port_listen=$(netstat -lntup|grep -v "Active Internet")
    kernel_config=$(sysctl -p 2>/dev/null)
    if [[ ${sys_version} -gt 6 ]];then
        service_config=$(systemctl list-unit-files --type=service --state=enabled|grep "enabled")
        run_service=$(systemctl list-units --type=service --state=running |grep ".service")
    else
        service_config=$(/sbin/chkconfig | grep -E ":on|:啟用" |column -t)
        run_service=$(/sbin/service --status-all|grep -E "running")
    fi
cat <<EOF
服務啟動配置:${service_config}
${line}
運行的服務:${run_service}
${line}
監(jiān)聽端口:${port_listen}
${line}
內(nèi)核參考配置:${kernel_config}
EOF
}

function get_sys_user() {
    login_user=$(awk -F: '{if ($NF=="/bin/bash") print $0}' /etc/passwd)
    ssh_config=$(egrep -v "^#|^$" /etc/ssh/sshd_config)
    sudo_config=$(egrep -v "^#|^$" /etc/sudoers |grep -v "^Defaults")
    host_config=$(egrep -v "^#|^$" /etc/hosts)
    crond_config=$(for cronuser in /var/spool/cron/* ;do ls ${cronuser} 2>/dev/null|cut -d/ -f5;egrep -v "^$|^#" ${cronuser} 2>/dev/null;echo "";done)
cat <<EOF
系統(tǒng)登錄用戶:${login_user}
${line}
ssh 配置信息:${ssh_config}
${line}
sudo 配置用戶:${sudo_config}
${line}
定時任務配置:${crond_config}
${line}
hosts 信息:${host_config}
EOF
}


function process_top_info() {
    top_title=$(top -b n1|head -7|tail -1)
    cpu_top10=$(top b -n1 | head -17 | tail -11)
    mem_top10=$(top -b n1|head -17|tail -10|sort -k10 -r)

cat <<EOF
CPU占用top10:
${top_title}
${cpu_top10}
內(nèi)存占用top10:
${top_title}
${mem_top10}
EOF
}

function capture_stats() {
    DATE=`date +%m/%d/%Y`
    TIME=`date +%l:%M%p`
    # Logged in Users
    users=`who | wc -l`
    # Load Average
    LOAD=`uptime | cut -d: -f5 | cut -d, -f3`
    # Memory Free
    FREE=`free -m | head -n 2 | tail -n 1 | awk {'print $4'}`
    # Swap Free
    SWAP=`free -m | tail -n 1 | awk {'print $3'}`
    # CPU Idle
    CPU=`vmstat 1 2 | sed -n '/[0-9]/p' | sed -n '2p' | gawk '{print $15}'`
    # Disk Space Available
    ROOT=`df -h / | awk '{ a = $4 } END { print a }'`
    VAR=`df -h /var | awk '{ a = $4 } END { print a }'`
    USR=`df -h /usr | awk '{ a = $4 } END { print a }'`

cat <<EOF
${DATE},${TIME},${users},${LOAD},${FREE} MB,${SWAP} MB,${CPU} %,${ROOT},${VAR},${USR}
EOF
}


function sys_check() {
    get_cpu_info
    echo ${line}
    get_mem_info
    echo ${line}
    get_net_info
    echo ${line}
    get_disk_info
    echo ${line}
    get_sys_status_info
    echo ${line}
    get_service_info
    echo ${line}
    get_sys_user
    echo ${line}
    process_top_info
}


sys_check > ${sys_check_file}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饭豹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窿撬,老刑警劉巖秘血,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烤低,居然都是意外死亡兼丰,警方通過查閱死者的電腦和手機玻孟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳍征,“玉大人取募,你說我怎么就攤上這事◇〖迹” “怎么了玩敏?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長质礼。 經(jīng)常有香客問我旺聚,道長,這世上最難降的妖魔是什么眶蕉? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任砰粹,我火速辦了婚禮,結(jié)果婚禮上造挽,老公的妹妹穿的比我還像新娘碱璃。我一直安慰自己,他們只是感情好饭入,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布嵌器。 她就那樣靜靜地躺著,像睡著了一般谐丢。 火紅的嫁衣襯著肌膚如雪爽航。 梳的紋絲不亂的頭發(fā)上蚓让,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音讥珍,去河邊找鬼历极。 笑死,一個胖子當著我的面吹牛衷佃,可吹牛的內(nèi)容都是我干的趟卸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼氏义,長吁一口氣:“原來是場噩夢啊……” “哼锄列!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起觅赊,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琼稻,沒想到半個月后吮螺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡帕翻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年鸠补,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘀掸。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡紫岩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出睬塌,到底是詐尸還是另有隱情泉蝌,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布揩晴,位于F島的核電站勋陪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏硫兰。R本人自食惡果不足惜诅愚,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劫映。 院中可真熱鬧违孝,春花似錦、人聲如沸泳赋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祖今。三九已至筹燕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撒踪。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工过咬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人制妄。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓掸绞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親耕捞。 傳聞我的和親對象是個殘疾皇子衔掸,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容