0
您好我是shell腳本編程的新手。我的要求是: 有一個服務器3個客戶端。在每個客戶端上生成錯誤日誌文件,這些文件有4種類型。類型1錯誤,類型2錯誤類似於這種類型4錯誤。 我想寫一個腳本,從服務器讀取所有3個客戶端&爲我提供了多少次在每個客戶端上生成4種不同類型的錯誤日誌。 總之它應該使用ssh & grep命令組合。 我已經寫了演示腳本,但它沒有提供給我不同類型的日誌發生在客戶端上的次數。用於統計Unix客戶端上的文件類型的代碼
#error[1]='Exception: An application error occurred during an address lookup request, please contact IT'
#error[2]='SocketTimeoutException: Read timed out'
#error[3]='Exception: The search has produced too many matches to be returned'
#error[4]='Exception: No matching address found'
error_1='exception 1'
error_2='exception 2'
function get_list_of_clients()
{
NUM_OF_CLIENTS=$(wc -l ${CLIENT_IP_LIST} | awk -F " " '{ print $1 }')
echo $NUM_OF_CLIENTS
if [ "${NUM_OF_CLIENTS}" -gt 0 ]
then
for ((row=2; row<=$NUM_OF_CLIENTS; row++))
do
CLIENTS_IP=$(sed -n ${row}p ${CLIENT_IP_LIST}| awk -F " " '{print $3 }')
echo ${CLIENTS_IP}
# get_number_of_errors
# copy_count_errors
echo ${$error_$row}
done
fi
}
function get_number_of_errors()
{
for((row_no=1; row_no<=4; row_no++))
do
{
/usr/bin/expect - <<- EndMark
spawn ssh [email protected]${CLIENTS_IP} "grep $error[$row_no] var/error.log |wc -l" >> /tmp/${CLIENTS_IP}_error${row_no}.txt
match_max 50000
expect {
"*yes/no*" {
send -- "yes\r"
send -- "\r"
exp_continue
}
"*?assword:*" {
send -- "${CLIENT_PASSWORD}\r"
send -- "\r"
}
}
expect eof
EndMark
}
done
}
function copy_count_errors()
{
/usr/bin/expect - <<- EndMark
spawn scp [email protected]${CLIENTS_IP}:/tmp/${CLIENTS_IP}* /tmp/
match_max 50000
expect {
"*yes/no*" {
send -- "yes\r"
send -- "\r"
exp_continue
}
"*?assword:*" {
send -- "${CLIENT_PASSWORD}\r"
send -- "\r"
}
}
expect eof
EndMark
}
get_list_of_clients
=========================================== ===================================== 請幫忙。
感謝海武爲你提供建議。 我還有另一個查詢,我試圖在一個變量中存儲 $(spawn ssh root @ $ {CLIENTS_IP}「grep $ {error [$ row_no]} /var/error.log | wc -l」)的值var var = $(spawn ssh root @ $ {CLIENTS_IP}「grep $ {error [$ row_no]} /var/error.log | wc -l」)&然後嘗試回顯var,但它發生了。 你可以建議任何方式將$(spawn ssh root @ $ {CLIENTS_IP}「grep $ {error [$ row_no]} /var/error.log | wc -l」) 的值存儲在一個變量中。如果發生這種情況,我想我可以通過它。 – user3406322