1. 程式人生 > 實用技巧 >實現遠端伺服器操作

實現遠端伺服器操作

當存在多臺例項時,出現問題後,無法確認具體哪個例項讓有異常資訊,因此,才有該查詢日誌指令碼。

使用前,需要在部署指令碼的伺服器上安裝expect。可以通過yum install expect安裝

將兩個指令碼上傳至已安裝了expect的伺服器上,修改logSearch.sh指令碼中各個模組對應的例項資訊

logSearch.sh

#!/usr/bin/expect
if [ $# -ne 2 ];
then
  echo "sh logSearch.sh serviceName "grep --color 'ERROR' service.log""
  exit 1
fi
declare -A serviceMap
#依次新增需要的服務與對應的例項關係
serviceMap[
"serviceName"]="172.16.xx.xx,172.16.xx.xx" serviceName=$1 filter=$2 hostnameStr=${serviceMap[$serviceName]} hostnameArray=(${hostnameStr//,/ }) echo $hostnameStr for hostname in ${hostnameArray[@]} do echo $hostname $serviceName $filter expect login.exp $hostname $serviceName "${filter}" done

login.exp

#!/usr/bin/expect
set hostname [lindex $argv 0]
set serviceName [lindex $argv 1]
set command [lindex $argv 2]
# 非root使用者登入的話,這裡改為其他使用者 spawn
ssh root@$hostname expect { "yes/no" {send "yes\r";} #{send "yes\r"; exp_continue;} "password:" {exp_send "password\r";} #這裡是你要輸入的密碼 } expect
"#" send "cd /home/work/${serviceName}/orp/logs \r" #這裡需要調整為對應的服務路徑 #expect "#" send "${command}\r" #expect "#" send "exit\r" expect eof

CASE1:查詢日誌

sh logSearch.sh serviceName "grep --color 'ERROR' service.log" 

CASE2:刪除日誌

sh logSearch.sh serviceName  "rm service.log"

CASE3:查詢磁碟使用情況

sh logSearch.sh serviceName  "df -h"