shell指令碼 C組

2021-08-29 03:55:30 字數 4019 閱讀 9548

1,統計當前linux系統中可以登入計算機的賬戶數量

#!/bin/bash

#統計當前linux系統中可以登入計算機的賬戶有多少個

grep "bash$" /etc/passwd |wc -l

2,檢測mysql資料庫連線數量

#!/bin/bash

#檢測mysql資料庫連線數量

#本指令碼每2秒檢測一次mysql併發連線數,可以將本指令碼設定為開機啟動指令碼,或在特定時間段執行,以滿足對mysql資料庫的監控需求,檢視mysql連線是否正常

#本案例中的使用者名稱和密碼需要根據實際情況修改後方可使用

log_file=/val/log/mysql_count.log

user=root

passwd=123456

while :

do sleep 2

count=`mysqladmin -u "$user" -p "$passwd" status |awk ''`

echo "`date +%y-%m-%d` 併發連線數為:$count" >>$log_file

done

3,ps3和select用法

#!/bin/bash

ps3="select your will exec menu:"

select i in "apache安裝" "mysql安裝" "php安裝"

docase $i in

apache安裝)

;; mysql安裝)

echo -e "\033[32mwait install mysql...\033[0m"

;;php安裝)

echo -e "\033[32mwait install php...\033[0m"

;;*) echo -e "\033[32musage: \033[0m"

;;esac

done

4,輸入的賬戶名稱寫入到陣列儲存

#!/bin/bash

#讀取使用者輸入的賬戶名稱,將賬戶名寫入到陣列儲存

#定義陣列名稱為name,陣列的下表為i,小標從0開始,每輸入乙個賬戶名,下標加1,繼續存下乙個賬戶

#最後,輸入over,指令碼輸入總結性資訊後指令碼退出

i=0while :

do read -p "請輸入賬戶名,輸入over結束:" key

if [ $key == "over" ];then

break

else

name[$i]=$key

let i++

fidone

echo "總賬戶名數量:$"

echo "$"

5,檢視所有遠端連線本機的ip

#!/bin/bash

#檢視有多少遠端的ip連線本機(不管是通過ssh還是web還是ftp都統計)

#使用netstat -atn可以檢視本機的所有連線狀態,-a檢視所有,-t僅顯示tcp連線的資訊,-n數字格式顯示

#local address(第四列是本機的ip和埠資訊)

#foreign address(第五列是遠端主機的ip和埠資訊)

#使用awk命令僅顯示第五列資料,再顯示第1列ip位址的資訊

#sort可以按大小排序,最後使用uniq將多餘重複的刪除,並統計重複的次數

netstat -atn |awk '' |awk '' |sort -nr |uniq -c

6,切割nginx日誌檔案

#!/bin/bash

#切割nginx日誌檔案(防止單個檔案過大,後期處理很困難)

#mkdir /data/scripts

#vim /data/scripts/nginx_log.sh

logs_path="/usr/local/nginx/logs/"

mv $access.log $accese_$(date -d "yesterday" +"%y%m%d").log

kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`

#chmod +x /data/scripts/nginx_log.sh

#crontab -e 指令碼寫完後,將指令碼放入計畫任務每天執行一次指令碼

#0 1 * * * /data/scripts/nginx_log.sh

7,生成自簽名私鑰和證書

#!/bin/bash

#生成自簽名私鑰和證書

read -p "請輸入存放證書的目錄:" dir

if [ ! -d $dir ];then

echo "該目錄不存在"

exit

firead -p "請輸入私鑰名稱" name

#使用openssl生成私鑰

openssl genrsa -out $/$.key

#使用openssl生成證書

#subj選項可以在生成證書時,非互動自動填寫common name資訊

openssl req -new -x509 -key $/$.key -subj "/cn=common" -out $/$.crt

8,編寫批量修改副檔名指令碼,如批量將txt檔案修改為doc檔案

#!/bin/bash

#執行指令碼時,需要給指令碼新增位置引數

#指令碼名txt doc(可以將txt的副檔名修改為doc)

#指令碼名doc jpg(可以將doc的副檔名修改為jpg)

for i in "ls *.$1"

domv $i $.$2

done

9,迴圈關閉區域網中所有主機

#!/bin/bash

#迴圈關閉區域網中所有主機

#假設本機ip為192.168.4.100,編寫指令碼關閉除自己外的其他所有主機

#指令碼執行,需要提前給所有其他主機傳遞ssh金鑰,滿足無密碼連線

for i in

do [ $i -eq 100 ] && continue

echo "正在關閉192.168.4.$i..."

ssh 192.168.4.$i poweroff

done

10,統計linux程序相關數量資訊

#!/bin/bash

#統計linux程序相關數量資訊

running=0

sleeping=0

stoped=0

zombie=0

#在proc目錄下所有以數字開始的都是當前計算機正在執行的程序的程序pid

#每個pid編號的目錄下記錄有該程序相關的資訊

for pid in /proc/[1-9]*

do procs=$[procs+1]

stat=$(awk '' $pid/stat)

#每個pid目錄下都有乙個stat檔案,該檔案的第3列是該程序的狀態資訊

case $stat in

r) running=$[running+1];;

t) stoped=$[stoped+1];;

s) sleeping=$[sleeping+1];;

z) zombie=$[zombie+1];;

esac

done

echo "程序統計資訊如下"

echo "總程序數為:$procs"

echo "runing程序數為:$running"

echo "stoped程序數為:$stoped"

echo "sleeping程序數為:$sleeping"

echo "zombie程序數為:$zombie"

C語言呼叫SHELL指令碼

在linux 環境下shell指令碼具有非常強大的功能!使用shell可以很方便的使用和管理linux系統,最近學習了一點shell知識,所以一直在 想要是可以在c c 中呼叫shell指令碼那該有多好啊!因為使用c c 要幾百行 才能搞定的!使用shell只要短短十幾行就可以輕鬆搞定!includ...

Shell指令碼(三) Shell指令碼入門

1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...

Shell指令碼和shell

1.shell script,shell指令碼與windows dos下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比windows下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,畢竟它使用了linux un...