mac使用shell腳本自動登錄服務(wù)器
需要安裝 brew reinstall expect
#!/usr/bin/expect -f
spawn ssh root@ip
expect "*password:"
send "password\r"
expect "*#"
interact
自動切換環(huán)境
#!bin/bsh
# 更改公眾號的環(huán)境腳本
path=/home/www/hermes.webapi.ziroom.com/common/config/feature
cd $path
if [ "$1" == "t" ];then
echo "測試環(huán)境"
sed -i "152s/proprietor.activities.q.ziroom.com/proprietor.activities.t.ziroom.com/" params.php
sed -i "152s/proprietor.activities.d.ziroom.com/proprietor.activities.t.ziroom.com/" params.php
elif [ "$1" == "q" ];then
echo "準(zhǔn)生產(chǎn)環(huán)境"
sed -i "152s/proprietor.activities.t.ziroom.com/proprietor.activities.q.ziroom.com/" params.php
sed -i "152s/proprietor.activities.d.ziroom.com/proprietor.activities.q.ziroom.com/" params.php
elif [ "$1" == "d" ];then
echo "準(zhǔn)生產(chǎn)環(huán)境"
sed -i "152s/proprietor.activities.t.ziroom.com/proprietor.activities.d.ziroom.com/" params.php
sed -i "152s/proprietor.activities.q.ziroom.com/proprietor.activities.d.ziroom.com/" params.php
else
echo "切環(huán)境時只能輸入t或者q或者d"
echo "當(dāng)前環(huán)境請看下邊"
sed -n '152p' params.php
fi
自動更新代碼并部署環(huán)境
#!/bin/bash
path=/home/workspace/zj_worker/zj_flask
echo "查詢進(jìn)程"
ps -ef |grep uwsgi | awk '{print $2}' > tmp
echo "根據(jù)進(jìn)程數(shù)殺死uwsgi進(jìn)程"
for id in $(cat tmp)
do
echo $id
kill -9 $id
done
echo "殺死成功"
source /etc/profile
cd $path
echo "開始更新代碼"
git checkout .
git pull
sleep 2
echo "拉去成功"
sleep 1
uwsgi uwsgi.ini
tailf flask.log
linux安裝python腳本
#!/bin/bash
#先安裝幾個必須的包
yum -y install wget gcc make zlib-devel readline-devel bzip2-devel ncurses-devel sqlite-devel gbdm-devel xz-devel tk-devel openssl-devel
#上python官網(wǎng)下載源包
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
#解包形帮,解壓縮
xz -d Python-3.6.1.tar.xz
tar -xvf Python-3.6.1.tar
#編譯
cd Python-3.6.1
./configure --prefix=/usr/local/python3.6 --enable-optimizations
make
make install
#為了避免美膩輸入一大串路徑玻粪,加個鏈接
ln -s /usr/local/python3.6/bin/python3 /usr/bin/python3
??因為之前flask寫了一些測試工具橄仍,一直部署在本地,后來別的同事也想用我這個工具稚机,就想著把它部署到服務(wù)器上幕帆,曾經(jīng)上網(wǎng)搜過flask+uwsgi+nginx的部署,不過看了幾次不是很明白赖条,最主要的是不怎么敢在測試環(huán)境折騰失乾,就沒搞下去,就僅僅部署好了uwsgi而已纬乍。
??好了言歸正傳啊碱茁,因為是python腳本,每次都需要去輸入命令仿贬,感覺很繁瑣纽竣,并且只要ctrl+c結(jié)束了,再次重啟還需要根據(jù)端口號干掉這個進(jìn)程诅蝶,才可以重啟就想著為啥不用一個shell腳本來搞定呢退个,于是乎,研究了半天終于算是成功了调炬。下面請看代碼:
1 #!/bin/bash
2
3 FLASK_PATH=/home/work/shd/Flask/sxs-flask/sxs_flask
4
5 cd $FLASK_PATH
6 port=6531
7 #根據(jù)端口號查詢對應(yīng)的pid
8 lsof -i :$port | awk '{print $2}'> tmp
9 pid=$(awk 'NR==2{print}' tmp);
10 echo "111111"
11 echo "$pid"
12
13 #殺掉對應(yīng)的進(jìn)程语盈,如果pid不存在,則不執(zhí)行
14 if [ -n "$pid" ]; then
15 kill -9 $pid;
16 fi
17 uwsgi --socket 0.0.0.0:6531 --protocol=http -w manager:app
18
??下面我來仔細(xì)講解一下缰泡,關(guān)鍵點刀荒,主要是用到了查詢端口號的命令和awk命令,awk確實是萬能的棘钞,以后有時間了還是要繼續(xù)研究一下哈缠借。
??再次我們需要獲取pid宜猜,這就用到了awk命令泼返,它可以獲取某一行或某一列的內(nèi)容,貌似應(yīng)該也可以獲取具體到行列的內(nèi)容姨拥,但是我沒找到绅喉,我們從上面的輸出可以看到,pid是在第二列叫乌,因此輸入一下命令:
從圖片中柴罐,我們可以看到已經(jīng)獲取成功了,但是我們只需要pid下面的數(shù)字啊憨奸,因此我想了一個辦法革屠,把它存放到一個臨時文件里,然后在通過awk來獲取第二行的,這樣不就可以了似芝,因此
??接下來就好辦了那婉,每次起服務(wù)時,都先判斷一下国觉,如果存在就干掉吧恃,在重新起來。哈哈哈哈~
完了麻诀!
#!/bin/bash
path=/home/workspace/zj_worker/zj_flask
echo "查詢進(jìn)程"
ps -ef |grep uwsgi | awk '{print $2}' > tmp
echo "根據(jù)進(jìn)程數(shù)殺死uwsgi進(jìn)程"
for id in $(cat tmp)
do
echo $id
kill -9 $id
done
echo "殺死成功"
source /etc/profile
cd $path
echo "開始更新代碼"
git checkout .
git pull
sleep 2
echo "拉去成功"
sleep 1
uwsgi uwsgi.ini
tailf flask.log