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

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

一 : 這個(gè)腳本的動(dòng)作是

1 先把本機(jī)的用戶改為root用戶 因?yàn)榉?wù)器的用戶名是root

sudo -i

需要輸入密碼

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

ssh name@domini

然后輸入密碼

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

二 : 開始寫

1 模擬鍵盤輸入就是輸入密碼的動(dòng)作

這個(gè)問題百度了一下要安裝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

作為一個(gè)程序員應(yīng)該考慮多一點(diǎn),比如加一個(gè)口令啦,加一個(gè)提醒了本以為只是加一個(gè)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í)行下去就進(jìn)程完成了
    expect eof  #注意原來的interact(互動(dòng))要改為 expecteof
EOF
else
echo 'hehe'
fi

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

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

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

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

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