如何寫一個 查看服務(wù)器日志 腳本

作為一個程序員,怎么能不用一些腳本來做一些神奇的事情呢?最近后臺工作很忙,查看日志只能交給我們客戶端,不過感覺都是重復(fù)性操作,就想著寫成一個腳本,遇到了很多問題

一 : 這個腳本的動作是

1 先把本機的用戶改為root用戶 因為服務(wù)器的用戶名是root

sudo -i

需要輸入密碼

2 然后用ssh登陸到服務(wù)器

ssh name@domini

然后輸入密碼

3 然后需要找到對應(yīng)的位置 tail -f 一下out文件 就可以了

二 : 開始寫

1 模擬鍵盤輸入就是輸入密碼的動作

這個問題百度了一下要安裝expect 具體方法就不寫了網(wǎng)上一大堆
裝好了之后

#!/usr/bin/expect
spawn sudo -i
expect "Password:"
send "你的密碼\n"   #此處的\n為模擬鍵盤的enter鍵
spawn ssh  name@domini  "tail -f 日志路徑"
#ssh name@domini "命令" 此方式是登陸并且執(zhí)行服務(wù)器命令
expect "*password:"
send "你的密碼\n"
interact

作為一個程序員應(yīng)該考慮多一點,比如加一個口令啦,加一個提醒了本以為只是加一個sh的if就可以了,可是怎么在shell里調(diào)用expect呢?

2 shell里調(diào)用expect

#!/bin/sh
read -p "is lookLog?yes|no:" result
if [ "$result" == "yes" ] #注意這里的寫法,[]里兩邊一定要留空格,不然sh識別不出來
then
echo 'hha'

/usr/bin/expect<<EOF    #此方式是在sh中執(zhí)行expect命令
    spawn sudo -i
    expect "Password:"
    send "密碼\n"
    spawn ssh username@host"tail -f 日志路徑"
    expect "*password:"
    send "密碼\n"
    set timeout -1 #注意代表一直等待下去,如果不設(shè)置就會用默認(rèn)值10s之后expec就會繼續(xù)執(zhí)行下去就進程完成了
    expect eof  #注意原來的interact(互動)要改為 expecteof
EOF
else
echo 'hehe'
fi

在此說一下timeout,我認(rèn)為是一個全局的變量,代表等待多長時間就繼續(xù)執(zhí)行,因為沒有寫interact ,而日志要一直監(jiān)控,所以timeout設(shè)置為-1就是一直等待下去

后語:這樣你就可以賦執(zhí)行權(quán)限,然后放在桌面,需要的時候只要點擊就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容