常用shell指令碼片段
下面是本人工作中比較常用的shell指令碼片段,記錄下來,方便查詢使用。部分指令碼來源於網路並做了改進。
【判斷變數是否包含某字串】key=$1
gre1="\033[42;30m"
gre2="\033[0m"
red1="\033[45;37m"
red2="\033[0m"
if [[ "$key" =~ "abcd" ]];then
echo -e "${gre1}yes,contain${gre2}"
else
echo -e "${red1}no,not contain${red2}"
fi
【檢測mysql是否存活】【檢測redis是否存活】ping_fail_count=0 for ((i=1;i<=3;i++)); do check_mysql_active=`$mysqladmin -h$ip -P$port -uuser -p'password' ping 2>&1` if [ "$check_mysql_active" = "mysqld is alive" ];then echo "port is active." break else echo "check $i time" let ping_fail_count++ sleep 2 fi done if [ $ping_fail_count -eq 3 ];then echo "port is not active!" fi
【判斷linux下某個命令是否存在】ping_fail_count=0 for ((i=1;i<=3;i++)); do check_redis_active=`redis-cli -h $ip -p $port ping 2>&1` if [ "$check_redis_active" = "PONG" ];then echo "port is active." break else echo "check $i time" let ping_fail_count++ sleep 2 fi done if [ $ping_fail_count -eq 3 ];then echo "port is not active!" fi
cmd=$1
command -v $cmd > /dev/null 2>&1 && ret=1 || ret=0
if [ $ret -eq 0 ];then
echo "command is not found"
else
echo "command is exist"
fi
【小數比較大小】
【去掉數字前面的0,比如去掉000081前面的0000】num1=$1 num2=$2 c=`echo "$num1"|awk 'BEGIN{FS="."} {print length($2)}'` d=`echo "$num2"|awk 'BEGIN{FS="."} {print length($2)}'` if [ $c -ge $d ];then tmp=$c else tmp=$d fi temp=1 for ((i = 0; i < $tmp;i ++)); do temp=${temp}0 done a1=`echo "$num1*$temp" |bc` b1=`echo "$num2*$temp" |bc` c=`echo "$a1"|awk 'BEGIN{FS="."} {print $1}'` d=`echo "$b1"|awk 'BEGIN{FS="."} {print $1}'` if [ $c -gt $d ];then echo "gt" elif [ $c -eq $d ];then echo "equal" else echo "lt" fi
a=$1
b=`expr $a + 0`
echo $b
【判斷遠端主機上檔案是否存在】ssh_host="[email protected]$hostip"
mycnf="/data/data_3306/my.cnf"
if ssh $ssh_host test -e $mycnf;then
echo "exist"
else
echo "not exist"
fi
【linux shell互動yes or no】
while true; do
read -p "請選擇繼續或退出(yes|no): " yn
case $yn in
yes ) break;;
no ) exit;;
* ) echo "Please input yes or no";;
esac
done
【判斷IP地址是否合法】ip=$1
valid_check=$(echo $ip|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
if echo $ip|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then
if [ ${valid_check:-no} == "yes" ]; then
echo "$ip"
else
echo "ip $ip not available!"
fi
else
echo "ip format error!"
fi
【判斷IP是否可以ping通】
ip=$1
ping_fail_count=0
for ((i=1;i<=3;i++));
do
if ping -w 1 -c 1 $ip > /dev/null;then
echo -e "$ip ping is successful."
break
else
echo "ping $i times fail"
let ping_fail_count++
sleep 1
fi
done
if [ $ping_fail_count -eq 3 ];then
echo "$ip ping is failure!"
fi
【獲取本機ip地址】get_server_ip()
{
[ -e /etc/os-release ] && centos_version=`cat /etc/os-release|grep VERSION_ID|awk -F"=" '{print $2}'|sed 's/\"//g'`||centos_version=0
cat /proc/net/dev|tail -n +3|grep -v lo|awk -F: '{print $1}' > /tmp/cardlog
cat /tmp/cardlog | while read card
do
if [ $centos_version -eq 7 ];then
server_ip=`ifconfig $card | grep -w "inet"|awk '{print $2}'`
else
server_ip=`ifconfig $card | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'`
fi
if [ -z "$server_ip" ];then
continue
else
echo $server_ip
break
fi
done
}
server_ip=$(get_server_ip)
echo "$server_ip"
下面是本人工作中比較常用的shell指令碼片段,記錄下來,方便查詢使用。部分指令碼來源於網路並做了改進。
【判斷變數是否包含某字串】key=$1
gre1="\033[42;30m"
gre2="\033[0m"
red1="\033[45;37m"
red2="\033[0m"
if [[ "$key" =~ "abcd" ]];then
echo -e "${gre1}yes,contain${gre2}"
else
echo -e "${red1}no,not contain${red2}"
fi
【檢測mysql是否存活】ping_fail_count=0
for ((i=1;i<=3;i++));
do
check_mysql_active=`$mysqladmin -h$ip -P$port -uuser -p'password' ping 2>&1`
if [ "$check_mysql_active" = "mysqld is alive" ];then
echo "port is active."
break
else
echo "check $i time"
let ping_fail_count++
sleep 2
fi
done
if [ $ping_fail_count -eq 3 ];then
echo "port is not active!"
fi
【檢測redis是否存活】ping_fail_count=0
for ((i=1;i<=3;i++));
do
check_redis_active=`redis-cli -h $ip -p $port ping 2>&1`
if [ "$check_redis_active" = "PONG" ];then
echo "port is active."
break
else
echo "check $i time"
let ping_fail_count++
sleep 2
fi
done
if [ $ping_fail_count -eq 3 ];then
echo "port is not active!"
fi
【判斷linux下某個命令是否存在】cmd=$1
command -v $cmd > /dev/null 2>&1 && ret=1 || ret=0
if [ $ret -eq 0 ];then
echo "command is not found"
else
echo "command is exist"
fi
【小數比較大小】
num1=$1
num2=$2
c=`echo "$num1"|awk 'BEGIN{FS="."} {print length($2)}'`
d=`echo "$num2"|awk 'BEGIN{FS="."} {print length($2)}'`
if [ $c -ge $d ];then
tmp=$c
else
tmp=$d
fi
temp=1
for ((i = 0; i < $tmp;i ++));
do
temp=${temp}0
done
a1=`echo "$num1*$temp" |bc`
b1=`echo "$num2*$temp" |bc`
c=`echo "$a1"|awk 'BEGIN{FS="."} {print $1}'`
d=`echo "$b1"|awk 'BEGIN{FS="."} {print $1}'`
if [ $c -gt $d ];then
echo "gt"
elif [ $c -eq $d ];then
echo "equal"
else
echo "lt"
fi
【去掉數字前面的0,比如去掉000081前面的0000】a=$1
b=`expr $a + 0`
echo $b
【判斷遠端主機上檔案是否存在】ssh_host="[email protected]$hostip"
mycnf="/data/data_3306/my.cnf"
if ssh $ssh_host test -e $mycnf;then
echo "exist"
else
echo "not exist"
fi
【linux shell互動yes or no】
while true; do
read -p "請選擇繼續或退出(yes|no): " yn
case $yn in
yes ) break;;
no ) exit;;
* ) echo "Please input yes or no";;
esac
done
【判斷IP地址是否合法】ip=$1
valid_check=$(echo $ip|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
if echo $ip|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then
if [ ${valid_check:-no} == "yes" ]; then
echo "$ip"
else
echo "ip $ip not available!"
fi
else
echo "ip format error!"
fi
【判斷IP是否可以ping通】
ip=$1
ping_fail_count=0
for ((i=1;i<=3;i++));
do
if ping -w 1 -c 1 $ip > /dev/null;then
echo -e "$ip ping is successful."
break
else
echo "ping $i times fail"
let ping_fail_count++
sleep 1
fi
done
if [ $ping_fail_count -eq 3 ];then
echo "$ip ping is failure!"
fi
【獲取本機ip地址】get_server_ip()
{
[ -e /etc/os-release ] && centos_version=`cat /etc/os-release|grep VERSION_ID|awk -F"=" '{print $2}'|sed 's/\"//g'`||centos_version=0
cat /proc/net/dev|tail -n +3|grep -v lo|awk -F: '{print $1}' > /tmp/cardlog
cat /tmp/cardlog | while read card
do
if [ $centos_version -eq 7 ];then
server_ip=`ifconfig $card | grep -w "inet"|awk '{print $2}'`
else
server_ip=`ifconfig $card | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'`
fi
if [ -z "$server_ip" ];then
continue
else
echo $server_ip
break
fi
done
}
server_ip=$(get_server_ip)
echo "$server_ip"
相關推薦
常用shell指令碼片段
下面是本人工作中比較常用的shell指令碼片段,記錄下來,方便查詢使用。部分指令碼來源於網路並做了改進。 【判斷變數是否包含某字串】 key=$1 gre1="\033[42;30m" gre2
10 個實戰及面試常用 Shell 指令碼編寫
注意事項 1)開頭加直譯器:#!/bin/bash 2)語法縮排,使用四個空格;多加註釋說明。 3)命名建議規則:變數名大寫、區域性變數小寫,函式名小寫,名字體現出實際作用。 4)預設變數是全域性的,在函式中變數local指定為區域性變數,避免汙染其他作用域。 5)有兩個命令能幫助我除錯指令碼:set -e
10 個面試及實戰常用 Shell 指令碼
注意事項 1)開頭加直譯器:#!/bin/bash 2)語法縮排,使用四個空格;多加註釋說明。 3)命名建議規則:變數名大寫、區域性變數小寫,函式名小寫,名字體現出實際作用。 4)預設變數是全域性的,在函式中變數local指定為區域性變數,避免汙染其他作用域。 5)有兩個命令能幫助我除錯指令碼:se
8個實戰及常用Shell指令碼編寫
注意事項: 1).開頭加直譯器:#!/bin/bash 2).語法縮排,使用四個空格,多加註釋說明 3).命名建議規範:變數名大寫,區域性變數小寫,函式名小寫 4).預設變數是全域性的,函式中使用local指定區域性變數 5).除錯指令碼兩個命令:set -e遇
Linux常用Shell指令碼珍藏
我們在運維中,尤其是linux運維,都知道指令碼的重要性,指令碼會讓我們的 運維事半功倍,所以學會寫指令碼是我們每個linux運維必須學會的一門功課,這裡收藏linux運維常用的指令碼。如何學好指令碼,最關鍵的是就是大量的練習 和實踐。根據以下指令碼我們可以拓展,這樣我們提高
Linux運維常用shell指令碼之使用者管理例項
1、用shell指令碼批量建立Linux使用者 實現要求:建立使用者student1到student50,指定組為student組!而且每個使用者需要設定一個不同的密碼! #!/bin/bash for i in `seq 1 50` do useradd -G
運維常用shell指令碼
1、用shell指令碼批量建立Linux使用者實現要求:建立使用者student1到student50,指定組為student組!而且每個使用者需要設定一個不同的密碼!指令碼實現如下:#!/bin/bashfor i in `seq 1 50`do useradd -G
Linux常用shell指令碼
1.批量kill程序號eth='5668 5673 7733 7738 10512 10517 12453 12458 17134 17139 18075 18080 20340 20345 21120' for name in $eth do
shell 指令碼的一些常用命令 set, export, shell陣列,esac, tee,time
1. set Linux set命令用來設定 shell ,設定使用shell的執行方式。 引數說明 -a 標示已修改的變數,以供輸出至環境變數。 -b 使被中止的後臺程式立刻回報執行狀態。 -C 轉向所產生的檔案無法覆蓋已存在的檔案。 -d She
shell指令碼常用處理
1.日期引數轉自定義格式(注意執行命令的符號 ` 和 ‘ 的區別) yes=$1 echo $yes mils=`date -d "$yes -1 day" +%s` #引數日期減一天轉毫秒 echo $mils yesterday=`date -d @$mils +%Y/%m/%d`
linux和shell指令碼常用命令技巧
date :調配時間,可以用date命令完成很多需求,比如日誌資料夾,比如求前幾天等等,其他常用方法百度 date "+%Y%m%d" #輸出年月日 date -d last-day +%Y%m%d #輸出當然日期的前一天 #########################
常用的shell指令碼
"1.sh"的指令碼,接受引數。如下,如果有一個引數則賦值個sourceFile這個變數,否則用預設值。 Shell程式碼 1. 2. #!/bin/bash 3. LANG=en_US.UTF-8 4. #get parameters 5. sourceFile="/
shell指令碼的常用總結
一. shell指令碼呼叫另一個指令碼的三種形式(網上摘錄) fork 形式: ./2.sh(預設) 執行的時候開一個sub-shell執行呼叫的指令碼,sub-shell執行的時候, parent-shell還在。 sub-shell執行完畢後返回
shell指令碼常用命令與方法總結
工作中shell指令碼,經常用的語法,整理了下 1 echo帶色的 列印字串帶色(31紅色,32綠色,33黃色,34藍色) 列印字串背景帶色 (40黑色,41紅色,42綠色,黃色43,藍色44,白色47) echo -e “\
Shell指令碼編寫常用——————持續更新
Linux指令碼 source命令與點命令 單純執行shell指令碼./a.sh, 並不能把指令碼中定義的變數匯入到父shell中, 必須用source的方式執行才可以 $0 $? $#... h
shell指令碼常用命令
1 Shell中的特殊符號 1.1 $ 美元符號。用來表示變數的值。如變數NAME的值為Mike,則使用$NAME就可以得到“Mike”這個值。 1.2 # 井號。除了做為超級使用者的提示符之外,還可以在指
shell指令碼中字串常用操作整理
shell中常用字串操作整理 shell指令碼中常用字串操作如下: 1. 字串的比較 2. 字串的長度 3. 擷取字串 4. 字串的替換 下面分別講解這些操作的用法。 1. 字串的比較 1.1. 等於和不等於 user=zabbix # 這是最常用的 if [
sed && awk工具 及一些常用的shell指令碼
(一)sed sed是一個精簡的、非互動式的流式編輯器,它在命令列中輸入編輯命令和指定檔名,然後在螢幕上檢視輸出。 逐行讀取檔案內容儲存在臨時緩衝區中,稱為“模式空間”(pattern space),
shell 指令碼程式設計常用命令
1、日期常用命令 date '+%Y%m%d%H%M%S' date '+%Y-%m-%d %H:%M:%S' -d '-1 day' 字串轉日期並作時間加減法 date -d "20130701 -i -1 month" +"%Y%m%d" 2、左補位 echo
shell指令碼 linux常用命令
ps -ef | 全格式顯示當前所有程序 grep xxx 濾出''xxx''的程序 grep