我正在嘗試編寫一個shell腳本,允許我登錄到遠程計算機以查看哪些用戶正在運行vtwm進程超過14天。這是我迄今寫的。在Shell腳本中的grep
有兩個問題
有可能是這個活動的進程不止一個用戶。我如何將它們全部保存在一個變量中?
如何確定哪一個已登錄超過14天?
下面的代碼是在假設只有一個用戶具有活動vtwm進程的情況下編寫的。但它不起作用,因爲grep命令不能識別變量$ u。 所以我永遠不會得到用戶登錄的日期。我不能讓mth1和day1工作,因爲與grep的問題。
u=$(ssh host "w | grep vtwm | cut -d' ' -f1")
echo "USER:"$u
if [ -n "$u" ] then
mth1=$(who | grep -i $u | cut -d' ' -f10 | cut -d'-' -f2)
mth2=$(date +"%m")
day1=$(who | grep -i $u | cut -d' ' -f10 | cut -d"-" -f2)
day2=$(date +"%d")
if [ $mth1==$mth2 ] then
#do something
elif[ $mth1!=$mth2 ] then
#do something
fi
fi
這是令人困惑的代碼。變量'$ u'由ssh'ing派生到另一臺機器,但是'$ mth1'和'$ day1'是基於對'who'的本地調用? – danfuzz 2013-04-03 23:25:08
用'set -vx'打開shell解析功能。你會更容易看到你的代碼開始失敗的地方和原因。對不起,說,也是太多的代碼,你說的目標是什麼。看看使用'awk'作爲一個過濾器來減少對'who'的調用數量爲1X。祝你好運。 – shellter 2013-04-04 01:26:36