Linux shell 經驗手冊 002

2021-08-03 00:15:59 字數 3756 閱讀 2099

1 判斷是否為root使用者

root_uid=0

#$uid為0的時候,使用者才具有root使用者許可權;

e_notroot=67

#非root使用者

if [ "$uid"

-ne"$root_uid" ] #$uid是環境變數

then

echo

"must be root to run this script."

exit

$e_notroot

fi

2 測試是否有命令列引數

if [ -n "$1" ]

then

lines=$1

else

echo

"usage: `basename $0` ***x"

exit

$e_noargs

# 65

if

3 測試指令碼引數數量是否正確

e_wrong_args=65

script_parameters="-a -h -m -z"

# -a = all, -h = help ......

if [ $#

-ne$number_of_expected_args ]

then

echo

"usage: `basename $0` $script_parameters"

# basename 可以提取出檔名,去除目錄項

exit

$e_wrong_args

fi

4 expect 經典示例

#!/usr/bin/expect 

set timeout 30

spawn ssh -l username 192.168.1.1

expect "password:"

send "ispass/r"

interact

5 shell中數值運算示例

declare -i num=$1

declare -i var=0

echo

"arg is $num"

while [ $num

-gt$var ]; do

snmpgetnext -v 2c -c public localhost .1.3.6.1.4.1.193.113.1.7.1.1.2

num=$(($num-1))

echo

"num is $num"

done

示例2

declare -i count1 count2 index

count1=0

count2=0

index=0

echo

"program start ..."

echo

"//"

while

true

do count1=`date +%m`

# echo "---------------$count1, $count2"

if [ "$count1"

-ne"$count2" ];then

index=index+1

count2=count1

echo

"-------------------------------- $index"

fi date | cut -d

" "-f

4 dig @10.170.15.194 host.iptelco.com >/dev/null 2>&1

dig @10.170.15.194 hosat.iptesssslco.com >/dev/null 2>&1

done

exit

0

示例3

i=0

while [ $i

-lt$1 ]

do#kill -11 `pgrep ttselect`

snmpwalk -v2c 10.170.15.146 -t 30 ipworksenummessagecounters &

i=$[$i + 1] # !!!!

done

echo

"done"

6 判斷特定程序是否存在

#!/bin/sh

ps -fe|grep processstring |grep -v grep

if [ $? -ne

0 ] #******

then

echo

"start process....."

else

echo

"runing....."

fi

7 檢視主機網絡卡流量

while : ; do

time='date +%m"-"%d" "%k":"%m'

day='date +%m"-"%d'

rx_before='ifconfig eth0|sed -n "8"p|awk ''|cut -c7-'

tx_before='ifconfig eth0|sed -n "8"p|awk ''|cut -c7-'

sleep

2rx_after='ifconfig eth0|sed -n "8"p|awk ''|cut -c7-'

tx_after='ifconfig eth0|sed -n "8"p|awk ''|cut -c7-'

rx_result=$[(rx_after-rx_before)/256]

tx_result=$[(tx_after-tx_before)/256]

echo "$time now_in_speed: "

$rx_result

"kbps now_out_speed: "

$tx_result

"kbps"

sleep

2done

8 系統狀態監控

ip=192.168.1.227

top -n 2| grep

"cpu" >>./temp/cpu.txt

free -m | grep

"mem" >> ./temp/mem.txt

df -k | grep

"sda1" >> ./temp/drive_sda1.txt

#df -k | grep sda2 >> ./temp/drive_sda2.txt

df -k | grep

"/mnt/storage_0" >> ./temp/mnt_storage_0.txt

df -k | grep

"/mnt/storage_pic" >> ./temp/mnt_storage_pic.txt

time=`date +%m"."%d" "%k":"%m`

connect=`netstat -na | grep "219.238.148.30:80" | wc -l`

echo "$time

$connect" >> ./temp/connect_count.txt

9 eof使用示例

#!/bin/bash

su - test exit;

eof

linux shell使用經驗

今天突然對python心血來潮,網上搜了篇學習筆記在看。ubuntu中練習了一下,無意中注意到乙個關於shell語言的基本通用規則。剛開始學習bash的時候也注意到了,最簡單的bash程式一般也會有三行 bin bash this is a bash test program test.sh ech...

Linux shell互動輸入與迴圈語句 06

read命令同時可以定義多個變數值 而輸入的內容預設以空格為分隔符,將值輸入到對應的變數中 如果預設值輸入過多,最後所有的值都會被賦予給最後乙個變數 如果輸入的值少於變數數,多餘的變數則為空值 p read p 請輸入乙個值 變數名 echo n 請輸入乙個值 read 變數名 t 定義超時時間 r...

GIT常用手冊(個人經驗)

在.git的同級目錄新建.gitignore檔案,並在檔案中寫需要排除的檔案和資料夾 下次提交時將會git將會忽略該檔案 1.在工程目錄下開啟git bush 將platforms資料夾移除版本控制 gitrm r cached platforms 帶 n 是檢視將要執行的操作的輸出,但是命令並未執...